2025年11月28日星期五

写了几年都写不完的自动交易系统,被 AI 一天搞定了

 

最近在 Codex 和灵码的帮助下,终于把自动交易的系统写好了,补上了从策略到自动交易的“最后一公里”。 至此,在本地进行策略研究、回测和自动交易的整个链条算是彻底打通。

这整个过程的构建有点漫长,断断续续算是搞了好几年了。虽然实际花的时间没那么多,但中途遇到困难时不想解决,就一直拖着,断断续续。

1. 缘起

自动交易最早是在 2023 年开始尝试,那时候用 miniQMT 搞过一版,但能力有限,只写了一个非常初级的 demo。实际自动交易要处理的细节实在太多太多,太耗费精力和时间,就懒癌爆发一直不想继续往下写。

这几年AI大模型迅猛发展,写代码的方式也完全变了。以前很多事情要自己琢磨、自己敲代码。现在好了, 只需要把详细的需求喂给AI,AI就能快速生成整个系统的代码 ...而且写出来的代码风格之统一、结构之优雅,让人佩服得五体投地!要我自己写,我一辈子也写不出如此漂亮的代码...

2. 订单处理

之前在本地搞了一些策略,一直没有对接 miniQMT 自动交易。主要原因是我想写一个真正的不需要自己管的自动交易框架,类似于聚宽的模拟跑。策略丢进去就能自己跑,而不需要太多人工参与。

但一个真正意义上的自动交易框架,需要考虑的细节太多。比如最基础的下单逻辑:

  • • 下了单,如果部分成交怎么办?
  • • 完全没成交又怎么办?

这些问题倒还算好处理。可行的解决办法有:

下单 → 检查成交 → 未完全成交则撤单 → 按最新价格重新提交。

虽然不能保证百分百成交,但成功率已经很高了。

另一种更激进的办法是:
买单主动加一跳、卖单主动减一跳。

提高成交概率,但交易成本会略微增加。

3. 多策略并行

其实最麻烦的问题是: 一个账户对接多个策略时,如何隔离各策略的现金与持仓?

如果自动交易中途暂停了,那重启时这些隔离的信息又如何恢复?

如果只是简单地跑一个策略,那就没啥意思了。

如果将多个策略杂糅成一个策略然后丢进一个账户,那组合策略的代码就非常混乱,后续也不好维护。

在AI的帮忙下,最终确定了如下解决方案:

  1. 1. 为每个策略单独运行一个自动交易脚本(因此需要自动交易脚本比较通用,方便接入不同的策略);
  2. 2. 每个脚本内部维护自己的“策略现金”和“策略持仓”(用全局变量);
  3. 3. 这些数据根据成功成交的订单来进行更新,而不是用交易账户的变化来进行更新;
  4. 4. 所有数据实时写入本地文件。

这样做的好处有:
1. 自动化暂停后重启时,只需读取本地文件即可恢复之前的信息状态;
2. 每个策略拥有完全独立的现金、持仓、市值信息。
3. 历史数据存入了本地,便于后续进行分析;
4. 多策略互不干扰,实盘框架也更加干净。

4. 从 0 到 1

于是在这些想法的指引下,开始push Codex和灵码从0来搭建这个自动交易系统。

要我自己来写这些代码,我都不知道要写到猴年马月……但AI很快就写好了。虽然写的代码存在一些bug,自己在AI写的代码的基础上再慢慢debug,比自己从0写代码再慢慢debug还是快太多太多...

5. 实盘验证

目前,整个系统已经debug和用测试账号测试完毕,最近开始用miniQMT来进行实盘交易了,在实际交易中慢慢完善和改进这个框架。

后续的工作也有很多,但从0到1的过程是最艰难的。现在1终于有了,后面再慢慢迭代就相对容易多了。敬请期待!

 

没有评论:

发表评论

博客目录

    🔧 本地量化项目入口

    📦 本地量化接口库
    前往仓库 →
    💹 实盘交易系统(Live Trading System)
    前往仓库 →
    📊 策略模拟实盘(Strategy Live Trading)
    前往仓库 →