type
status
date
slug
summary
tags
category
icon
password
注 1:程序代码初次推出,可能是存在 BUG 的,因为有些情况这边无法测试出来的。所以,在使用之前,请先使用模拟号进行充分测试,以免造成资金损失。
注 2:如果是使用 VBS 打开程序的话,首先要确保安装了apscheduler 和xtquant 两个库。如果是小白的话,还是建议使用这边一个程序控制小白Python工具:三人聚智-余汉波程序控制工具使用说明 | 余汉波 文档,xtquant量化库已经安装,其他库会自动安装。
一、系统概述
本文将深入解析一个基于 Python 开发的同花顺板块自动化交易系统。该系统演示利用同花顺的板块文件和国金 QMT 交易接口,实现了自动化监控板块变化、买入板块内股票、卖出非板块股票的功能。
系统设计面向具有一定交易经验的投资者,通过图形化界面使操作更加便捷。
二、技术栈概述
该系统主要使用以下技术和库:
- Python: 核心编程语言
- Tkinter: 用于构建图形用户界面
- XtQuant API: QMT量化交易接口,用于执行实际交易操作
- APScheduler: 高级 Python 调度器,用于定时任务管理
- 线程处理: 使用 Python 的 threading 模块实现多线程操作
- JSON: 用于配置文件的保存和读取

三、系统核心功能
1. 同花顺板块监控
系统会定期(每 2 秒)读取同花顺板块文件,检测板块内股票变化。当板块发生变动时(新增或移除股票),系统会记录并及时调整交易策略。
2. 自动化交易逻辑
系统采用"先卖后买"的策略,具体交易逻辑如下:
- 买入条件:股票在指定板块内,且当前持仓市值小于设定的目标金额
- 卖出条件:股票不在指定板块内,且符合 T+1 交易规则(有可用余额)
- 特殊规则:板块内股票即使超过目标市值也不会卖出,保证板块内股票的完整持有
3. 定时撤单机制
系统会每 10 秒检查一次未成交订单,对超过 10 秒未成交的订单自动撤销,避免滞留订单影响交易。
4. 交易间隔控制
为避免频繁交易,系统对每只股票的交易频率进行控制,只有当距离上次交易的时间超过设定的交易间隔(默认 30 秒)才会进行下一次交易。
四、系统架构设计
五、核心类与方法详解
1. TongHuaShunTrader
类
这是系统的主类,负责整个交易系统的初始化和管理。关键属性包括:
root
: Tkinter 根窗口
xt_trader
: XtQuant 交易对象
scheduler
: 调度器对象
last_block_stocks
: 上次查询的板块股票集合
last_trade_time
: 记录每只股票的上次交易时间
monitor_lock
: 用于防止并发执行的锁机制
2. 监控与交易核心方法
2.1 init_scheduler()
初始化调度系统,配置并启动两个定时任务:
该方法使用 APScheduler 库创建两个关键任务:
- 板块监控任务:每 2 秒运行一次,检查板块变化并执行交易
- 撤单任务:每 10 秒运行一次,检查并撤销长时间未成交的订单
2.2 monitor_file()
这是系统的核心方法,负责监控板块变化并执行交易决策:
- 读取同花顺板块股票
- 检测板块变化并记录
- 获取当前持仓和未成交委托
- 计算需要买入和卖出的股票
- 执行卖出和买入操作
关键交易逻辑如下:
2.3 place_buy_order()
和 place_sell_order()
这两个方法负责具体的买入和卖出操作执行:
- 买入逻辑:
- 计算可买入数量(考虑持仓市值与目标金额差额)
- 限制单次买入金额
- 确保不超过可用资金
- 根据证券类型调整委托数量(股票按 100 股,可转债按 10 张)
- 提交买入委托
- 卖出逻辑:
- 确认股票不在当前板块中
- 检查 T+1 交易限制
- 计算可卖出数量
- 限制单次卖出金额
- 提交卖出委托
3. 撤单机制
cancel_pending_orders()
方法负责检查并撤销长时间未成交的订单:六、安全机制设计
系统实现了多种安全机制保障稳定运行:
1. 并发控制机制
使用
monitor_lock
防止任务并发执行,确保同一时间只有一个监控任务在运行:2. 异常处理
系统对每个关键操作都添加了异常捕获和处理,避免单点故障导致整个系统崩溃:
3. 交易保护
系统实现了多项交易保护措施:
- 保留资金设置:确保账户始终保留一定资金
- 交易时间限制:只在设定的交易时间内执行交易
- 交易间隔控制:防止频繁交易导致的冲击成本
- 撤单机制:自动撤销长时间未成交的订单
七、潜在限制与改进建议
潜在限制
- 事件驱动效率:当前使用基于时间的轮询机制,每 2 秒检查一次,可能不够实时
- 资源消耗:频繁的 API 调用可能导致系统资源消耗较大
- 订单控制:缺乏更精细的订单价格控制策略
- 错误恢复:在某些极端情况下,可能需要更强大的错误恢复机制
改进建议
- 优化事件机制:考虑使用回调或事件驱动模式替代轮询
- 增强算法策略:增加更智能的下单策略,如 TWAP/VWAP 等
- 添加风险控制:增加更多风险参数设置,如单日最大交易额度限制
- 优化界面设计:添加实时持仓监控和可视化图表
- 数据持久化:增加交易记录的数据库存储和分析功能
八、总结
该同花顺板块自动化交易系统通过结合同花顺板块数据和 QMT 交易接口,实现了一个自动化、规则化的交易系统。系统具有完整的界面设计、健壮的异常处理机制、合理的交易控制逻辑,能够有效地执行基于板块变化的交易策略。
虽然存在一些潜在的限制,但通过建议的改进方向,系统可以进一步优化,为投资者提供更加高效、智能的交易工具。系统的核心理念是"先卖后买",保证资金合理利用,并且遵循"板块内股票不卖出"的原则,有效地维持对目标板块的持续跟踪投资。
- 作者:余汉波
- 链接:https://wd.sanrenjz.com/%E4%BB%A3%E7%A0%81%E4%B8%8E%E6%95%88%E7%8E%87/QMT%E4%B8%8E%E5%90%8C%E8%8A%B1%E9%A1%BA%E7%BB%93%E5%90%88%EF%BC%9A%E5%8A%A8%E6%80%81%E6%9D%BF%E5%9D%97%E7%9B%91%E6%8E%A7%E4%BA%A4%E6%98%93%EF%BC%8C%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E9%97%AE%E8%AF%A2%E8%87%AA%E5%8A%A8%E5%8C%96%E4%BA%A4%E6%98%93
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。