Lazy loaded image
QMT与同花顺结合:动态板块监控交易,自然语言问询自动化交易
00 分钟
2025-3-20
2025-3-25
type
status
date
slug
summary
tags
category
icon
password
注 1:程序代码初次推出,可能是存在 BUG 的,因为有些情况这边无法测试出来的。所以,在使用之前,请先使用模拟号进行充分测试,以免造成资金损失。
注 2:如果是使用 VBS 打开程序的话,首先要确保安装了apscheduler 和xtquant 两个库。如果是小白的话,还是建议使用这边一个程序控制小白Python工具:三人聚智-余汉波程序控制工具使用说明 | 余汉波 文档,xtquant量化库已经安装,其他库会自动安装。

一、系统概述

本文将深入解析一个基于 Python 开发的同花顺板块自动化交易系统。该系统演示利用同花顺的板块文件和国金 QMT 交易接口,实现了自动化监控板块变化、买入板块内股票、卖出非板块股票的功能。
系统设计面向具有一定交易经验的投资者,通过图形化界面使操作更加便捷。

二、技术栈概述

该系统主要使用以下技术和库:
  1. Python: 核心编程语言
  1. Tkinter: 用于构建图形用户界面
  1. XtQuant API: QMT量化交易接口,用于执行实际交易操作
  1. APScheduler: 高级 Python 调度器,用于定时任务管理
  1. 线程处理: 使用 Python 的 threading 模块实现多线程操作
  1. JSON: 用于配置文件的保存和读取
notion image

三、系统核心功能

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()

这是系统的核心方法,负责监控板块变化并执行交易决策:
  1. 读取同花顺板块股票
  1. 检测板块变化并记录
  1. 获取当前持仓和未成交委托
  1. 计算需要买入和卖出的股票
  1. 执行卖出和买入操作
关键交易逻辑如下:

2.3 place_buy_order()place_sell_order()

这两个方法负责具体的买入和卖出操作执行:
  • 买入逻辑
      1. 计算可买入数量(考虑持仓市值与目标金额差额)
      1. 限制单次买入金额
      1. 确保不超过可用资金
      1. 根据证券类型调整委托数量(股票按 100 股,可转债按 10 张)
      1. 提交买入委托
  • 卖出逻辑
      1. 确认股票不在当前板块中
      1. 检查 T+1 交易限制
      1. 计算可卖出数量
      1. 限制单次卖出金额
      1. 提交卖出委托

3. 撤单机制

cancel_pending_orders() 方法负责检查并撤销长时间未成交的订单:

六、安全机制设计

系统实现了多种安全机制保障稳定运行:

1. 并发控制机制

使用 monitor_lock 防止任务并发执行,确保同一时间只有一个监控任务在运行:

2. 异常处理

系统对每个关键操作都添加了异常捕获和处理,避免单点故障导致整个系统崩溃:

3. 交易保护

系统实现了多项交易保护措施:
  • 保留资金设置:确保账户始终保留一定资金
  • 交易时间限制:只在设定的交易时间内执行交易
  • 交易间隔控制:防止频繁交易导致的冲击成本
  • 撤单机制:自动撤销长时间未成交的订单

七、潜在限制与改进建议

潜在限制

  1. 事件驱动效率:当前使用基于时间的轮询机制,每 2 秒检查一次,可能不够实时
  1. 资源消耗:频繁的 API 调用可能导致系统资源消耗较大
  1. 订单控制:缺乏更精细的订单价格控制策略
  1. 错误恢复:在某些极端情况下,可能需要更强大的错误恢复机制

改进建议

  1. 优化事件机制:考虑使用回调或事件驱动模式替代轮询
  1. 增强算法策略:增加更智能的下单策略,如 TWAP/VWAP 等
  1. 添加风险控制:增加更多风险参数设置,如单日最大交易额度限制
  1. 优化界面设计:添加实时持仓监控和可视化图表
  1. 数据持久化:增加交易记录的数据库存储和分析功能

八、总结

该同花顺板块自动化交易系统通过结合同花顺板块数据和 QMT 交易接口,实现了一个自动化、规则化的交易系统。系统具有完整的界面设计、健壮的异常处理机制、合理的交易控制逻辑,能够有效地执行基于板块变化的交易策略。
虽然存在一些潜在的限制,但通过建议的改进方向,系统可以进一步优化,为投资者提供更加高效、智能的交易工具。系统的核心理念是"先卖后买",保证资金合理利用,并且遵循"板块内股票不卖出"的原则,有效地维持对目标板块的持续跟踪投资。
上一篇
指数评估:A股震荡分化,价值洼地浮现,科技成长承压
下一篇
指数评估:蓝筹避险受青睐,科技成长遇挑战

评论
Loading...