【深度学习量化交易18】盘前盘后回调机制设计与实现——基于miniQMT的量化交易回测系统开发实记

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

盘前时间是交易者准备当日交易计划、分析隔夜数据和市场情绪的黄金时段,而盘后则适合总结当日表现、调整策略参数并为次日交易做准备。本文将详细介绍盘前盘后回调机制的设计与实现过程,探讨如何在量化交易框架中优雅地集成这一功能,使策略开发者能够充分利用非交易时段进行策略优化和执行。

一、系统架构设计

前文讲到过,策略文件是由初始化配置和主要交易逻辑两个核心部分组成,今天则是要在这两个组成部分之外,额外增加两个回调函数,分别处理盘前和盘后操作。当然这个设置是可选项,不做盘前盘后处理也是没问题的。

盘前盘后回调机制的系统架构基于事件驱动模型实现。配置数据从GUI层传递至框架层,包含回调开关和时间设置。框架使用反射机制检测策略是否实现了盘前盘后回调接口,并维护状态变量避免重复触发。

触发时,系统构造仅含时间信息的数据结构传递给回调函数,返回的交易信号由交易管理器统一处理。

整个设计保持了接口一致性和模块间低耦合,使策略开发者能专注于业务逻辑而非底层实现。

二、策略接口设计

为支持盘前盘后回调,我们在策略模块中定义了两个标准函数接口:

python 复制代码
def khPreMarket(data: Dict) -> List[Dict]:
 """盘前回调函数,在每个交易日开盘前执行"""
 # 策略逻辑
 return signals

def khPostMarket(data: Dict) -> List[Dict]:
 """盘后回调函数,在每个交易日收盘后执行"""
 # 策略逻辑
 return signals

这两个函数接口与主策略函数(khHandlebar)采用相同的数据格式和返回值结构,确保了接口一致性,降低了用户的学习成本。回调函数接收包含时间信息的市场数据,并返回交易信号列表,系统会自动处理这些信号。

顺便说一句,策略模块中其他两个接口是:

策略主逻辑khHandlebar:

python 复制代码
def khHandlebar(data: Dict) -> List[Dict]:
    """策略主逻辑
    
    Args:
        data: 行情数据,格式为 {股票代码: {字段名: 字段值}, "__current_time__": {...}}
              其中包含特殊键"__current_time__",其值为一个字典,包含以下字段:
              - timestamp: 时间戳(整数,秒级)
              - datetime: 格式化的日期时间字符串,格式为"%Y-%m-%d %H:%M:%S"
              - date: 格式化的日期字符串,格式为"%Y-%m-%d"
              - time: 格式化的时间字符串,格式为"%H:%M:%S"
              - raw_time: 原始时间戳(保持原格式)
        
    Returns:
        List[Dict]: 交易信号列表,每个信号字典包含以下字段:
        {
            "code": str,       # 股票代码
            "action": str,     # 交易动作,可选值:"buy"(买入) | "sell"(卖出)
            "price": float,    # 委托价格
            "volume": int,     # 委托数量,单位:股
            "reason": str,     # 交易原因说明
            "order_type": str, # 可选,委托类型,默认为"limit":
                              # "limit"(限价) | "market"(市价) | "best"(最优价)
            "position_type": str,  # 可选,持仓方向,默认为"long":
                                  # "long"(多头) | "short"(空头)
            "order_time": str, # 可选,委托时间,格式"HH:MM:SS"
            "remark": str      # 可选,备注信息
        }
    """

以及策略初始化init:

python 复制代码
def init():
    """策略初始化"""

这里就先不展开说了,回头专门会写文章介绍策略编写框架。

三、用户界面实现

为了让用户可以灵活配置盘前盘后回调,我在GUI界面中设计了专门的设置区域:

  • 复选框控制是否启用盘前盘后回调
  • 时间选择器设定具体的触发时间

这个界面是很简单的:

这些设置被保存在配置文件中,系统在启动时会加载这些设置,确保每次运行时都应用用户的偏好。界面设计遵循了直观、简洁的原则,使用户能够轻松理解和操作。

四、回测模式实现

回测模式下,盘前盘后回调的实现需要解决以下关键问题:

  1. 时间点识别:系统需要识别新的交易日开始和结束
  2. 数据处理:即使某些时间点缺乏市场数据,也能正确执行回调
  3. 信号处理:回调函数生成的交易信号需要被正确处理

具体实现中,系统会根据历史数据生成一系列时间点,按时间顺序模拟市场运行。当检测到新的交易日开始时,先执行盘前回调;当交易日结束时,则执行盘后回调。为确保在没有市场数据时也能执行回调,我们实现了一种机制,创建只包含时间信息的数据结构。

五、工具函数支持

为支持盘前盘后回调机制,我们在工具类中增加了一些辅助函数,如is_trade_day方法用于判断某个日期是否为交易日:

python 复制代码
def is_trade_day(self, date_str: str = None) -> bool:
 """判断是否为交易日"""
 if date_str is None:
        date_str = datetime.datetime.now().strftime("%Y-%m-%d")
 
 # 解析日期
    date = datetime.datetime.strptime(date_str, "%Y-%m-%d")
 
 # 排除周六和周日
 if date.weekday() >= 5:
 return False
 
 # 这里可以添加节假日的判断逻辑
 return True

这些工具函数极大地简化了主要逻辑的复杂度,提高了代码的可读性和可维护性。

六、下一步考虑

后边还有几件事要做,做完后回测系统就可以跟大家见面了:

  • 完善不同数据订阅模式与框架的兼容
  • 策略的项目化管理设置
  • 回测结果可视化与评估参数优化
  • 与成熟的回测软件(比如QMT)进行相同策略的对比,以验证软件的有效性

因此,目前的回测系统还不满足放出来给大家使用的状态,待测试稳定后,快捷的安装包版本以及全部开源代码都会放出来给读者朋友们使用。

近期我尽量加快软件和文章更新的频率,尽早让朋友们使用上这个软件。

回测系统一览

end、开通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获取板块及成分股数据篇

【深度学习量化交易11】miniQMT快速上手教程------使用XtQuant进行实盘交易篇(一万七千字超...

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

【深度学习量化交易13】继续优化改造基于miniQMT的量化交易软件,增加补充数据功能,优化免费下载...

【深度学习量化交易14】正式开源!看海量化交易系统------基于miniQMT的量化交易软件

【深度学习量化交易15】基于miniQMT的量化交易回测系统已基本构建完成!AI炒股的框架初步实现

【深度学习量化交易16】韭菜进阶指南:A股交易成本全解析

【深度学习量化交易17】触发机制设置------基于miniQMT的量化交易回测系统开发实记

相关推荐
朱剑君11 分钟前
机器学习概要
人工智能·机器学习
千亿的星空1 小时前
部队仓储信息化手段建设:基于RFID、IWMS、RCS三大技术的仓储物流全链路效能优化方案
大数据·人工智能·信息可视化·信息与通信·数据库开发·可信计算技术
猫先生Mr.Mao1 小时前
2025年2月AGI技术月评|重构创作边界:从视频生成革命到多模态生态的全面爆发
人工智能·大模型·aigc·agi·多模态·行业洞察
卧式纯绿1 小时前
目标检测20年(一)
人工智能·yolo·目标检测·机器学习·计算机视觉·目标跟踪
车载诊断技术1 小时前
电子电气架构 --- 汽车面对软件怎么“破局“?
数据库·人工智能·架构·汽车·电子电器框架·汽车面对软件怎么破局·智能电动汽车概述
上理考研周导师2 小时前
【误差理论与可靠性工程】知识点汇总,可靠性的定义,系统的分类,可靠性预计,可靠性分配
人工智能·分类·数据挖掘
fmc1211042 小时前
【数据分析】数据筛选(布尔索引:多个判断条件)
人工智能·python·数据挖掘·数据分析·pandas
三翼鸟数字化技术团队2 小时前
QWen 和 DeepSeek 入门指南
人工智能·deepseek·ai 编程
SecPulse2 小时前
xss注入实验(xss-lab)
服务器·前端·人工智能·网络安全·智能路由器·github·xss
jndingxin2 小时前
OpenCV图像拼接(1)概述
人工智能·opencv·计算机视觉