
我是一个玩了两年的个人量化玩家,主战场是加密货币的现货网格,本金很小,目标很朴素:震荡行情里赚点波动差价,顺便练技术。
这篇教程帮你解决的问题:怎么用 Python + CCXT 写一个网格交易机器人,并部署到云服务器上 7×24 小时自动运行。 跟着做完,你会得到一个跑在云上的网格机器人:自动低买高卖、崩溃自动重启、每笔成交微信推送。全程大概一个晚上,代码一百多行。
先泼一盆冷水:网格策略只在震荡行情有效,单边行情会亏,机器人不是印钞机。 这篇是技术教程,不是投资建议,仓位自己控制好。
去年我的网格机器人跑在家里一台吃灰的 N100 小主机上,配置不差,跑个 Python 绰绰有余。但问题出在一个我控制不了的地方:网络。
玩加密货币的都知道,交易所的服务器都在海外。我家宽带直连交易所 API,延迟常年 200ms 起步,还经常丢包。网格策略最怕的就是行情推送断了——价格穿越了网格线,我的机器人却在"装睡"。
去年 9 月有一次,行情一波插针又拉回,群里用云服务器的朋友的机器人吃到了 6 格网格利润,我的机器人因为 websocket 断连,一格没吃到,还错过了一次补仓。我复盘的时候盯着那根长长的下影线,心里拔凉。那天晚上我算了一笔账:半年里因为断连、丢包、家里停电错过的网格利润,粗估超过了 800 块——够我租好几年入门云服务器了。小主机性能再好,网络不行,等于把机器人关在了信号屏蔽房里。
另外还有个隐蔽问题:小主机连着家里的电和网络,路由器一抽风、电闸一跳,机器人就离线,而我可能在公司开会,啥都不知道。
今年 2 月,我把机器人搬到了腾讯云轻量应用服务器。这里有一个加密货币场景特有的关键决策:节点地域。
交易所服务器在海外,所以云服务器也要选就近的境外节点(比如新加坡、东京这类),实测 API 延迟从家里的 200ms+ 降到了 30ms 以内,行情推送稳得像本地网络。
配置我选的 2 核 2G Ubuntu 实例,网格机器人轻量得很,实测内存占用不到 300MB,一天不到一块钱的成本。先声明:用境外节点跑量化访问交易所接口,合规层面请自行确认你所在地区的相关法规,我只分享自己的技术经验。
旧体验对比:家里小主机,延迟 200ms+,每天 websocket 断连 3-5 次,半年物理断电 2 次。云服务器两个月:延迟 30ms 以内,断连 0 次,断电这个词从字典里消失了。同样一段网格代码,搬家之后月均成交格数提升了差不多 40%——不是策略变聪明了,是机器人终于"住"到了交易所隔壁。
技术栈:Python + CCXT。CCXT 是一个统一了上百家交易所 API 的开源库,写一套代码,换交易所只需要改个名字。
装库:
pip install ccxt我的网格机器人核心逻辑(简化版)长这样,一百多行:
import ccxt
exchange = ccxt.binance({
'apiKey': '你的API Key',
'secret': '你的Secret',
'enableRateLimit': True, # 关键:自动遵守交易所限频
})
# 网格逻辑:在 60000-70000 之间布 20 格
# 价格跌破某格线 → 买入一格;涨破 → 卖出一格
def check_grid(current_price):
for level in grid_levels:
if crossed_down(current_price, level) and not level.filled:
exchange.create_limit_buy_order(symbol, amount, level.price)
level.filled = True
elif crossed_up(current_price, level) and level.filled:
exchange.create_limit_sell_order(symbol, amount, level.price)
level.filled = False如您需求,可以到腾讯官网购买体验:
腾讯云国内官网云服务器大促活动:https://cloud.tencent.com/act/pro/featured-202607?fromSource=gwzcw.17760458.17760458.17760458
腾讯云国际站云服务器促销活动:https://www.tencentcloud.com/act/pro/promo?fromSource=intl.17760459.17760459.17760459
几个我验证过的要点:
enableRateLimit: True 一定要开,CCXT 会自动控制请求频率,避免被交易所封 IP机器人本地跑通后,我第一次看到终端里打印出"格线 62500 买入成交"的时候,那感觉比赚钱本身还爽——我写的东西在真实市场里干活了。
代码 scp 上服务器,然后做三件事,一件都不能少:
第一件:API 权限最小化。 在交易所后台创建 API Key 时,只勾"现货交易"权限,提币权限坚决不开,并且绑定 IP 白名单,只放行我云服务器的 IP。这样即使 Key 泄露,别人也拿不走币。这一步是底线,没有商量余地。
第二件:进程守护。 用的 Supervisor,配置和我所有量化程序一个套路:崩溃自动拉起、日志按 50MB 切分、开机自启。机器人这种东西,挂一小时就可能错过一波震荡。
第三件:成交推送。 每笔网格成交,Server 酱推一条微信:"买入 0.0003 BTC @ 62500"。我现在对手机震动的期待值拉满了,一震动就知道机器人又赚了一格差价。
上线第一天下午,我踩了一个加密货币量化的经典坑,现在讲出来帮大家省时间。
机器人跑起来后,行情读取一切正常,但所有下单请求全部报错:-1021 Timestamp for this request is outside of the recvWindow。翻译过来:请求时间戳超出了交易所允许的窗口。
我当时一头雾水,代码本地跑好好的,上云就不行?查了半小时,根源是:云服务器的系统时间不准,和交易所服务器时间差了几秒,而交易所对签名请求的时间戳容忍度只有几秒(默认 recvWindow 5000ms)。
解决一行命令,强制 NTP 时间同步:
sudo timedatectl set-ntp true
# 验证
timedatectl status # 看 System clock synchronized: yes时间同步之后,下单全部恢复正常。后来我查了资料,交易所对时间戳极其敏感,这是所有 API 交易者的必修课。
所以给大家的建议:加密货币机器人上云后第一件事不是跑代码,是确认系统时间已同步。一个时间差能让你怀疑人生一下午。另外顺手把时区也改了(sudo timedatectl set-timezone Asia/Shanghai),不然你看日志的时间全是错位的。
从 4 月底到现在,机器人跑了三个多月,说几个真实数字:
再强调一遍:单边下跌行情网格会套牢补仓,我的应对是设了区间止损线,跌破整个网格下沿就全部清仓停机等信号。机器人负责执行,策略纪律还是得人来定。
但对一个一百多行的个人机器人来说,这些都是"想折腾再折腾"的事。
维度 | 旧方式(家里 N100 小主机) | 新方式(境外云服务器节点) |
|---|---|---|
API 延迟 | 200ms+,常丢包 | 30ms 以内 |
行情断连 | 每天 3-5 次 | 两个月 0 次 |
断电断网 | 半年 2 次物理断电 | 不存在 |
月均成交格数 | 基准值 | 提升约 40% |
维护成本 | 提心吊胆 | 手机收推送就行 |
费用 | 电费+精神内耗 | 一天不到一块钱 |
一句话总结:网格机器人 90 行代码,真正值钱的不是代码,是那个 7×24 小时不睡觉、不断网的家。
如果你也在写自己的交易机器人,还在家里小主机上硬扛,我的建议:放心冲! 选对境外节点,配好 IP 白名单,一个晚上就能搬完家。
enableRateLimit 必开、NTP 同步必查、recvWindow 报错记住是时间问题。多交易对建议做成多进程各自守护,别塞一个脚本里,挂一个全挂。如您需求,可以到腾讯官网购买体验:
腾讯云国内官网云服务器大促活动:https://cloud.tencent.com/act/pro/featured-202607?fromSource=gwzcw.17760458.17760458.17760458
腾讯云国际站云服务器促销活动:https://www.tencentcloud.com/act/pro/promo?fromSource=intl.17760459.17760459.17760459
Q:CCXT 支持哪些交易所?免费吗?
CCXT 是开源免费库,统一封装了包括币安、OKX 在内的上百家交易所 API,写一套代码可切换多个交易所。REST API 免费,websocket 实时推送功能(ccxt.pro)需要付费订阅。
Q:跑加密货币网格机器人,云服务器选哪个地域好?
选离你目标交易所服务器近的境外节点,比如新加坡、东京,实测 API 延迟能从家里的 200ms+ 降到 30ms 以内,行情推送稳定性天差地别。2 核 2G 配置足够跑网格机器人。
Q:交易所 API Key 怎么设置才安全?
三条铁律:只开现货交易权限、提币权限永远不开、绑定 IP 白名单只放行你的服务器 IP。这样即使 Key 泄露,攻击者也无法转走你的资产。
Q:网格交易机器人能稳赚吗?
不能。网格策略只在区间震荡行情有效,靠波动赚差价;单边上涨会过早卖飞,单边下跌会一路补仓套牢。务必设置网格区间外的止损纪律,仓位控制在亏得起的范围。
Q:报错 -1021 timestamp outside recvWindow 怎么解决?
这是云服务器系统时间和交易所服务器不同步导致的。执行 sudo timedatectl set-ntp true 开启 NTP 自动同步,确认 timedatectl status 显示已同步即可。这是加密货币 API 交易的经典坑。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。