A股个人量化实盘方案

2023年 10月 16日 52.9k 0

我为什么要做量化

1. 寻找新的挑战

作为一名互联网一线大厂程序员,随着工作越来越熟悉,工作中挑战也越来越少。如何找到新的挑战来实现自我价值,从而获得新的成就感是我当时面临的问题。2020年一次偶然的机会接触到了量化这个东西,将计算机技术和投资相结合,瞬间意识到这是一个值得投入的事情,既有挑战,又能通过技术去解决一些实际的问题从而获得成就感。

2. 量化不是青春饭

随着年龄的增长,互联网行业一直被看做青春饭,到了35岁就面临随时被辞退的危险。而量化投资经验是可以积累的,经验越多获得成功概率就越大,只要能活在这个市场上,量化投资可以当做一辈子的事业来做。IT行业很难做一辈子,而量化投资可以,如果盈利稳定,可以"以交易为生",做自由职业

3. 需要管理自己的财富

经过几年的经济积累,已在新一线城市定居,房贷所剩无几,而公司即将上市,到时候会有一部分期权可变现,这一部分资金需要管理,因此需要提前3~5年提前规划,当这部分资金要变现的时候,自己有能力管理这部分资金。

经过3年多(自2020年7月以来)的持续投入和研究,中间死了至少10个策略,直到今年才挖掘到一个相对满意的策略,近半年一直在模拟盘跑这个策略,通过观察模拟盘的表现,基本符合预期,终于可以进入到实盘了,目前2周时间依然保持着正收益,有些交易日也亏损,但亏的少,正收益居多。目前还在小资金实盘调优阶段,依然需要观察策略是否稳定,因为过去半年,大盘其实是趋势向下的

我的实盘方案

image.png

  • 由于我需要监听全市场2600+支股票数据,为了避免处理延迟,因此Backtrader策略程序采用多进程,每个进程只处理100只股票。
  • 为什么需要一个Http网关呢?因为证券公司的QMT交易客户端没有Linux版,只有Windows版本,因此我只能安装在虚拟机的Windows7里面,此时策略程序无法和QMT交易客户端通讯,于是中间必须要通过一个网关做"行情数据"以及"交易指令"的转发,于是我写了一个Http的交易网关,用于转发QMT交易客户端的行情数据以及传输Backtrader策略程序发来的"交易指令"。
  • Http 网关收到QMT交易客户端的行情数据后,为什么要写Redis呢?主要是为了实现N个Backtrader策略进程订阅行情数据,这个是典型的发布订阅模式,为了低延迟考虑,写内存速度快,因此选了Redis。如果你的策略只需要分钟级或者日线数据,不需要走Redis转发,甚至不需要走发布订阅模式,直接在Backtrader策略程序里面主动获取行情数据即可,因为此时不需要考虑延迟。而我做的是Tick行情的策略,3s一次行情数据推送,对延迟比较敏感,因此做了一个基于Redis的内存MQ方案。
  • 为什么要做3s一次的Tick行情策略呢?因为好的股票一般都需抢筹码,如果做1分钟级的策略,可能价格已经上涨太多,导致盈亏比较低,止损位较大,需要冒很大的风险去博取小收益,因此行情级别越小,价格越占优势。
  • Backtrader收到行情数据后,根据行情数据来判断是否有交易信号,如果有交易信号,则发出买入/卖出请求,经过Http网关转发后,最后QMT交易客户端处理买入/卖出操作,实现整个交易自动化的过程。
  • Backtrader官方实盘能力并没有和A股股票打通,我扩展backtrader的qmtbroker、qmtstore、qmtdata,实现了Backtrader+MiniQmt的A股实盘交易能力。
  • 硬件

    硬件用的是一台二手Dell的服务器,20核40线程,237G内存(24根内存槽全插满了,16G/8G/4G内存混合,升级了2次内存),2T磁盘做的Raid5,防止数据丢失;操作系统安装的Centos7,在Centos7上安装了windows7的虚拟机,然后在Windows7上面安装了国金证券的交易客户端,采用MiniQmt模式运行

    image.png

    image.png

    image.png

    回测/模拟盘/实盘框架

    Backtrader + MiniQMT

    关键中间件依赖

    Redis:在交易时间内,用于中转3s Tick行情数据

    TDengine: 时序数据库,用于存储日线/分钟级/3s Tick行情数据,用于回测和实盘交易时读取T-N日的数据依赖

    实盘交易程序

    国金证券的QMT,采用MiniQMT模式

    总结

    我的量化实盘关键点:

  • Backtrader和MiniQMT打通了A股实盘,在业界我没找到相应的开源解决方案,于是只能自己基于Backtrader扩展了一套方案,可以做到回测无需改任何策略代码,直接进入模拟盘,模拟盘确认没问题后,只需要修改交易账号就可以直接实盘,一整套流程可以做到无缝衔接
  • MiniQMT通过Http网关支持多操作系统,既能在Mac系统上做策略开发,又能在交易时间内在生产环境Centos系统做交易,不仅限于Windows环境。Backtrader策略程序无需在虚拟机里面执行,可以直接在Centos物理机上执行,利用多核优势,执行效率更高
  • Backtrader策略程序多进程,低延迟且具备处理全市场股票的能力
  • Redis转发Tick行情数据,基于内存的MQ方案,支持多进程订阅,尽可能的降低行情数据延迟
  • image.png
    后续我会分享更多量化投资干货,下篇预告:如何通过挖掘行情数据中的规律(概率)来发现有效的投资机会

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论