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

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

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

4. AI 参与开发
于是在这些想法的指引下,开始 push Codex 和灵码从 0 来搭建这个自动交易系统。
要我自己来写这些代码,我都不知道要写到什么时候。但 AI 很快就写好了。
虽然 AI 写的代码也存在一些 bug,但在 AI 写好的代码基础上慢慢 debug,比自己从 0 写代码再慢慢 debug,还是快太多。
目前,整个系统已经 debug 和用测试账号测试完毕,最近开始用 miniQMT 来进行实盘交易了,在实际交易中慢慢完善和改进这个框架。
后续的工作也有很多,但从 0 到 1 的过程是最艰难的。现在 1 终于有了,后面再慢慢迭代就相对容易多了。
敬请期待。
评论与交流
当前主要通过知识星球和社交媒体交流文章相关问题。
交流入口
如果你想讨论文章里的代码、数据接口或本地运行问题,可以通过知识星球或页脚社交媒体联系我。