最近在 Codex 和灵码的帮助下,终于把自动交易的系统写好了,补上了从策略到自动交易的“最后一公里”。 至此,在本地进行策略研究、回测和自动交易的整个链条算是彻底打通。
这整个过程的构建有点漫长,断断续续算是搞了好几年了。虽然实际花的时间没那么多,但中途遇到困难时不想解决,就一直拖着,断断续续。

1. 缘起
自动交易最早是在 2023 年开始尝试,那时候用 miniQMT 搞过一版,但能力有限,只写了一个非常初级的 demo。实际自动交易要处理的细节实在太多太多,太耗费精力和时间,就懒癌爆发一直不想继续往下写。
这几年AI大模型迅猛发展,写代码的方式也完全变了。以前很多事情要自己琢磨、自己敲代码。现在好了, 只需要把详细的需求喂给AI,AI就能快速生成整个系统的代码 ...而且写出来的代码风格之统一、结构之优雅,让人佩服得五体投地!要我自己写,我一辈子也写不出如此漂亮的代码...
2. 订单处理
之前在本地搞了一些策略,一直没有对接 miniQMT 自动交易。主要原因是我想写一个真正的不需要自己管的自动交易框架,类似于聚宽的模拟跑。策略丢进去就能自己跑,而不需要太多人工参与。
但一个真正意义上的自动交易框架,需要考虑的细节太多。比如最基础的下单逻辑:
- • 下了单,如果部分成交怎么办?
- • 完全没成交又怎么办?
这些问题倒还算好处理。可行的解决办法有:
下单 → 检查成交 → 未完全成交则撤单 → 按最新价格重新提交。
虽然不能保证百分百成交,但成功率已经很高了。
另一种更激进的办法是:
买单主动加一跳、卖单主动减一跳。
提高成交概率,但交易成本会略微增加。

3. 多策略并行
其实最麻烦的问题是: 一个账户对接多个策略时,如何隔离各策略的现金与持仓?
如果自动交易中途暂停了,那重启时这些隔离的信息又如何恢复?
如果只是简单地跑一个策略,那就没啥意思了。
如果将多个策略杂糅成一个策略然后丢进一个账户,那组合策略的代码就非常混乱,后续也不好维护。
在AI的帮忙下,最终确定了如下解决方案:
- 1. 为每个策略单独运行一个自动交易脚本(因此需要自动交易脚本比较通用,方便接入不同的策略);
- 2. 每个脚本内部维护自己的“策略现金”和“策略持仓”(用全局变量);
- 3. 这些数据根据成功成交的订单来进行更新,而不是用交易账户的变化来进行更新;
- 4. 所有数据实时写入本地文件。
这样做的好处有:
1. 自动化暂停后重启时,只需读取本地文件即可恢复之前的信息状态;
2. 每个策略拥有完全独立的现金、持仓、市值信息。
3. 历史数据存入了本地,便于后续进行分析;
4. 多策略互不干扰,实盘框架也更加干净。

4. 从 0 到 1
于是在这些想法的指引下,开始push Codex和灵码从0来搭建这个自动交易系统。
要我自己来写这些代码,我都不知道要写到猴年马月……但AI很快就写好了。虽然写的代码存在一些bug,自己在AI写的代码的基础上再慢慢debug,比自己从0写代码再慢慢debug还是快太多太多...
5. 实盘验证
目前,整个系统已经debug和用测试账号测试完毕,最近开始用miniQMT来进行实盘交易了,在实际交易中慢慢完善和改进这个框架。
后续的工作也有很多,但从0到1的过程是最艰难的。现在1终于有了,后面再慢慢迭代就相对容易多了。敬请期待!
没有评论:
发表评论