问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于miniQMT的量化交易框架khQuant总体构建思路

创作时间:
作者:
@小白创作中心

基于miniQMT的量化交易框架khQuant总体构建思路

引用
CSDN
1.
https://blog.csdn.net/fengzhuqiaoqiu/article/details/144952989

本文详细介绍了基于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):集中管理系统的所有配置信息,包括环境配置、策略参数、风控参数等。通过统一的配置管理机制,提高系统的可维护性和灵活性。

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

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号