目录

从零搭建一个能实盘跑的加密货币量化交易系统

手动盯盘太累,尤其是夜里波动大,白天又要上班。折腾了一套能自动跑起来的系统,现在基本稳定跑几个月了,来整理一下全过程。


手动交易最大的问题是受情绪影响大,经常一冲动就追涨杀跌。我想要的系统目标只有三个:

  1. 能自动拉行情;
  2. 能自动判断买卖信号;
  3. 满足条件就自动下单。

其他都可以慢慢补。


我选的是 币安(Binance) 做交易平台,因为接口文档清晰,手续费低。

语言我用的是 Python,理由也很简单:

  • 熟悉;
  • 第三方库多,像 ccxt 就能搞定大部分交易所 API;
  • 部署也方便。

环境是阿里云的轻量应用服务器,配置 2C2G,够用了。


整个系统拆分成几个模块:

这里用 ccxt 封装了一层,支持币安现货和合约:

import ccxt

exchange = ccxt.binance({
    'apiKey': '你的APIKey',
    'secret': '你的Secret',
})

def get_price(symbol='BTC/USDT'):
    ticker = exchange.fetch_ticker(symbol)
    return ticker['last']

我设置的是每 10 秒更新一次价格,写了个 loop + sleep。

我先试了最经典的双均线交叉(短期均线上穿长期均线买入,反之卖出),后面又加了 RSI 滤波。

指标计算用的是 ta-lib,但有点难装,我就手撸了:

def moving_average(data, window):
    return sum(data[-window:]) / window

建议你先别搞太复杂,简单逻辑才能先跑起来。 后面很多数据处理 很多指标,效率有点跟不上。要更快 ,用了 ta-lib。

下单用的也是 ccxt

exchange.create_market_buy_order('BTC/USDT', 0.001)

这里必须做下单前的余额检查,不然容易报错:

balance = exchange.fetch_free_balance()
if balance['USDT'] > 20:
    # 才去挂单

我设置了几个安全开关:

  • 单日最大交易次数;
  • 单笔最大金额;
  • 异常断线自动暂停。

系统运行时自动写日志和 Telegram 报警。


  • 创建 Python 虚拟环境;
  • 安装依赖;
  • screenpm2 守护脚本;
  • 用 crontab 做每日自动重启。
screen -S bot
python3 main.py

或者你也可以用 supervisor 来做守护,方便监控和重启。


跑了大概三个月,开始用了 500 USDT 做实盘测试。

  • 第一个月小亏:调参中,滑点太大。
  • 第二个月稍微盈利:加入 RSI 过滤,胜率上升。
  • 第三个月稳定盈利中:风控+策略改进,避免频繁交易。

收益不高,但系统跑得稳,不用天天看盘。


问题解决方法
API 请求频繁被限制time.sleep + 设置节流
下单失败未处理加 retry + failover 机制
Python 脚本偶尔死掉supervisor 保活
网络异常数据不准加时间同步(ntp)脚本
  • 别一开始就追求复杂策略,先让它跑起来;
  • 系统稳定优先,逻辑可以慢慢优化;
  • 实盘和回测差异大,要做好心理准备;
  • 加密交易风险高,控制仓位最重要。

相关内容