当前位置: 首页 > article >正文

【深度学习量化交易12】基于miniQMT的量化交易框架总体构建思路——回测、模拟、实盘通吃的系统架构

我是Mr.看海,我在尝试用信号处理的知识积累和思考方式做量化交易,应用深度学习和AI实现 股票自动交易,目的是实现财务自由~
目前我正在开发基于miniQMT的量化交易系统——看海量化交易系统。

MiniQMT是一种轻量级的量化交易解决方案,使用MiniQMT可实现对交易过程的完全控制,借此优势实现最灵活的系统构建和最前沿的算法应用。然而,MiniQMT也有其挑战,它要求用户具有较强的编程能力,因为很多功能需要自己开发。

在之前的工作中,我介绍了“看海量化交易系统”的开发进展,即目前已经开发完成数据下载、数据清洗和可视化的工作。(如下图演示)

我开发的此系统免费向大家开放使用,获取方式在文末

此外我还用五篇文章的内容详细介绍了一下miniQMT的行情接口和交易接口,因为这是后续系统开发的基础(文章链接附在文末)。

今天开始,将要进入系统开发的核心部分——也就是回测、模拟盘和实盘的系统框架构建,我将该框架命名为khQuant。

零、我为什么要自己搭建一套量化交易框架?

这一节是本文写完之后加的,目的是想要再详细讲讲,在诸多现有量化交易系统可用的当下,我为什么要花这么大的力气再自己做一遍这件事。

1.想要足够开放灵活地实现量化交易。现有的量化交易系统往往对策略开发的方式有较多限制,比如对支持的python第三方包不开放,就限制了最先进的AI算法在量化交易中的应用,这对于我未来想在量化交易领域开展的探索是致命性的约束。基于miniQMT的系统开发几乎将所有自由度都交给了开发者,这是极具诱惑力的。

2.想要策略安全地本地运行。此外基于miniQMT的系统,所有的策略都在本地运行,我们只是调用了行情和交易接口,对于量化交易来说,策略就是一切,本地运行无疑是最安全的。其次是在需要进行大规模数据处理或复杂模型训练时,本地化部署能够提供更好的性能和更低的成本。

3.想要打造一个趁手的“兵器”。关注我的老粉丝可能知道,我以前主要是做信号处理和机器学习算法研究的,在前几年的开发中就有着将工具高效化的开发习惯,在保证专业性的同时实现高度的易用性,软件毕竟只是工具,未来大部分经历是要放在策略研究上的,所以我对这个自己要用的工具的要求就是要足够好用。

最重要的,目前还没有基于miniQMT回测和模拟平台,我开发khQuant框架来吃这个螃蟹,也是给自己和读者朋友们提供更多的可选择空间。

一、khQuant框架总体思路

为了给策略开发提供充分的便利,框架层面的设计我考虑要兼顾以下几点特性:

  1. 同一个策略文件能够适用于回测、模拟盘和实盘三种场景,不需要为不同的运行模式再对策略文件进行额外修改。
  2. 充分考虑了图形化界面的后续开发需求。通过实现标准化的数据接口和状态管理机制,框架为UI层的开发预留了完整的系统接口。
  3. 框架采用模块化设计,将量化交易中的数据获取、策略执行、交易管理、风险控制等核心环节进行解耦,实现了高内聚低耦合的系统架构。

上述特性就决定着,在框架构建的时候要兼顾回测、模拟盘和实盘的需求特点。他们的实现难度是:回测>模拟盘>实盘。

在策略明确的情况下,实盘要做的的基本就是触发策略与执行交易;模拟盘要在交易执行环节采用模拟成交机制。这种模式下,框架需要会维护一个独立的模拟账户系统,记录所有的交易操作和持仓状态;回测模式要在模拟盘虚拟交易机制的基础上,还要模拟出实盘/模拟盘的触发机制,此外回测数据的获取方式和实盘/模拟盘的历史数据读取也有所不同。

三种模式的大体流程如下:

二、运行逻辑

khQuant框架的运行逻辑设计需充分考虑量化交易的实际需求,针对不同的运行模式实现差异化的处理流程。在框架启动时,首先通过配置文件加载系统参数,初始化各个功能模块,建立必要的数据结构和通信机制。随后,框架会根据运行模式的不同,进入相应的运行环境。框架整体运行逻辑如下:

(1)实盘模式下,框架采用了更为严格的运行机制。系统会首先验证交易账户的连接状态和权限,确保交易通道的畅通。随后启动行情订阅,实时接收市场数据。框架通过心跳机制持续监控系统连接状态,在发生异常时能够及时进行重连。在交易时段,系统会根据配置的时间周期触发策略计算,同时实时监控委托状态和持仓情况,确保交易指令的准确执行。

(2)模拟交易模式使用实时行情数据进行策略计算,但在交易执行环节采用模拟成交机制。这种模式下,框架会维护一个独立的模拟账户系统,记录所有的交易操作和持仓状态。系统会对接实时行情数据源,确保策略在真实的市场环境下运行,同时通过虚拟交易系统处理所有交易请求。当策略产生交易信号时,系统会模拟整个交易流程,包括委托、撮合、成交等环节,并实时更新虚拟账户的资产、持仓等状态。这种设计不仅实现了零风险测试,还通过标准化的接口设计,确保了策略未来转入实盘时的平滑过渡。此外,模拟盘模式还需实现与实盘模式相同的风控机制和绩效分析功能,为策略的实盘运行提供了可靠的参考依据。

(3)回测模式下,首先需要进行历史数据校验,确认本地数据完整性、策略所需数据的匹配性。数据准备完成后,框架会按照时间顺序推进,将历史数据按照配置的时间周期(如分钟、日线等)推送给策略模块。在这个过程中,系统会严格按照历史时间序列进行推进,模拟真实的市场环境,包括行情数据、交易时间、以及各种市场状态。策略产生的交易信号会即时被处理,通过模拟成交系统进行撮合。所有的交易操作都会被记录在虚拟账户系统中,包括资金变动、持仓变化、交易成本等,系统还会对每个交易日的账户状态进行完整的记录,为后续的策略分析提供详实的数据支持。

(4)在所有运行模式下,风控模块都会实时监控交易状态,执行风险控制策略。系统会对每个交易信号进行多重检验,包括资金使用率、持仓集中度、委托价格偏离度等多个维度,只有通过全部风控检查的交易指令才会被执行。同时,框架还要实现完整的异常处理机制,能够优雅地处理运行过程中可能出现的各类异常情况。

(5)数据流的处理是框架运行逻辑中的重要环节。在实盘和模拟模式下,框架采用异步处理机制,确保行情数据的实时性。同时,通过数据缓存和预处理机制,减少策略计算时的数据查询压力。对于关键的交易数据,系统会进行持久化存储,便于后续的分析和审计。

(6)整个运行过程中,框架会维护详细的日志记录,包括系统状态、交易信号、委托执行等各个环节的关键信息。这些日志不仅用于系统监控和问题诊断,也为策略优化提供了重要的数据支持。通过分析这些运行数据,策略开发者可以深入了解策略的执行效果,发现潜在的问题和优化空间。

三、系统搭建

好在现在程序编写不是仅仅新建了文件夹,还新建了六个文件哈哈。他们分别是:

  1. 主交易框架(khFrame.py)。作为整个系统的核心,负责协调各个模块的工作,处理不同运行模式下的逻辑差异。在系统启动时完成必要的初始化工作,包括运行模式设定、数据订阅、账户连接等。根据不同的运行模式(回测、模拟、实盘),框架会采用相应的数据处理和策略触发机制。
  2. 策略模块(自定义命名)。为用户提供标准化的策略开发接口。通过初始化配置和主要交易逻辑两个核心部分,使策略开发者能够专注于交易逻辑的实现,而无需过多关注底层细节。
  3. 交易模块(khTrade.py)。负责处理所有交易相关的操作,针对不同的运行模式实现相应的交易逻辑。在实盘模式下执行实际交易,在回测和模拟模式下通过虚拟交易系统模拟整个交易流程。
  4. 算法库(khQuTools.py)。提供策略开发所需的各类工具函数,包括数据处理、技术分析、策略分析等功能。该模块设计为可扩展的形式,能够根据实际需求不断丰富功能。
  5. 风控模块(khRisk.py)。实现完整的风险控制体系,包括资金风控、持仓风控、交易风控等多个维度。通过实时监控和预警机制,确保交易在可控的风险范围内进行。
  6. 配置管理(khConfig.py)。集中管理系统的所有配置信息,包括环境配置、策略参数、风控参数等。通过统一的配置管理机制,提高系统的可维护性和灵活性。

这种模块化的设计使得系统具有良好的扩展性和维护性,同时通过标准化的接口设计,确保了不同模块之间的有效协作。

组成核心框架的6个文件(已经不是空文件了~~)

四、当前进展与下一步工作

我要开发的完整的量化交易系统我将其命名为了“看海量化交易系统”,khQuant是系统中的回测、模拟和实盘框架。“看海量化交易系统”我已经完成了历史数据下载、数据可视化、数据清洗等实用功能模块。

目前已开发完成的部分我已经免费开放下载了,大家可以关注“看海的城堡”,在公众号中获取。

本文通过满满的干货讲述了后续开发思路,后边我将尽快提高迭代更新频率,争取系统能早日提供给大家使用。不过系统的可靠性、稳定性测试是需要花比较漫长的时间的,我大概会按照逐模块开发和测试的思路,逐步发布功能模块。欢迎大家多多提意见建议,感谢持续关注!

五、开通miniQMT

上述讲到的系统是基于miniQMT,很多券商都可以开通miniQMT,不过门槛各有不同,很多朋友找不到合适的券商和开通渠道。这里我可以联系券商渠道帮忙开通,股票交易费率是万1,开通成功的朋友都可以免费使用上边开发的“看海量化交易系统”。这个系统还在持续开发的过程中,使用这套软件的朋友们也欢迎大家多提提意见,我也会及时响应,完善功能。

对于想要开通miniQMT、使用上边开发的“看海量化交易系统”的朋友们,请大家关注一下我的公众号“看海的城堡”,在公众号页面下方点击相应标签即可获取。也可以直接点击这里:如何轻松开通miniQMT,开启量化交易大门

相关文章

【深度学习量化交易1】一个金融小白尝试量化交易的设想、畅享和遐想

【深度学习量化交易2】财务自由第一步,三个多月的尝试,找到了最合适我的量化交易路径

【深度学习量化交易3】为了轻松免费地下载股票历史数据,我开发完成了可视化的数据下载模块

【深度学习量化交易4】 量化交易历史数据清洗——为后续分析扫清障碍

【深度学习量化交易5】 量化交易历史数据可视化模块

【深度学习量化交易6】优化改造基于miniQMT的量化交易软件,已开放下载~(已完成数据下载、数据清洗、可视化模块)

【深度学习量化交易7】miniQMT快速上手教程案例集——使用xtQuant进行历史数据下载篇

【深度学习量化交易8】miniQMT快速上手教程案例集——使用xtQuant进行获取实时行情数据篇

【深度学习量化交易9】miniQMT快速上手教程案例集——使用xtQuant获取基本面数据篇

【深度学习量化交易10】miniQMT快速上手教程案例集——使用xtQuant获取板块及成分股数据篇


http://www.kler.cn/a/472697.html

相关文章:

  • (概率论)无偏估计
  • Windows11环境下设置MySQL8字符集utf8mb4_unicode_ci
  • OpenAI CEO 奥特曼发长文《反思》
  • 小程序组件 —— 30 组件 - 背景图片的使用
  • 课题推荐——基于GPS的无人机自主着陆系统设计
  • MCU 和 PSK
  • 显示器太薄怎么用屏幕挂灯?2025最新屏幕挂灯什么牌子好
  • 如何在 LobeChat 中使用 Ollama
  • 《网络安全里的Linux基础:构建安全网络的关键基石》
  • Python爬虫基础——数据清洗
  • python虚拟环境的使用
  • 【2024华为OD-E卷-200分-会议接待】(题目+思路+JavaC++Python解析)
  • Pytorch学习12_最大池化的使用
  • Elastic-Job相关
  • 案例解读 | 香港某多元化综合金融企业基础监控+网管平台建设实践
  • 微信小程序动态更改富文本的css样式
  • Jenkins-持续集成、交付、构建、部署、测试
  • 腾讯云AI代码助手编程挑战赛——贪吃蛇小游戏
  • QT学习二十一天 Quick 应用程序主窗口
  • 了解SQL
  • MongoDB的部署和操作
  • 微服务面试相关
  • Qt之Cannot create children for a parent that is in a different thread问题分析
  • uniapp的两种弹窗方式
  • ffmpeg aac s16 encode_audio.c
  • idea 编辑竖列:alt +shift+insert