SuperAPI AI 工具集

qmt-strategy

编程与开发

查看项目

更新于 10-16 07:30

技能介绍

用途

本技能为 QMT(迅投极速策略交易系统)客户端内置 Python 策略引擎提供完整的开发参考,帮助用户在 QMT 客户端内编写、回测和运行交易策略。

与 miniqmt 的区别

本技能面向 QMT 客户端内置策略引擎——策略在 QMT 客户端内运行,使用内置 API(ContextInfo/C、passorder、get_market_data_ex、get_trade_detail_data 等),文件首行需 #coding:gbk。若需在外部 Python 程序中通过 xtquant 库(xtdata/xttrader)连接 QMT/MiniQMT 客户端获取行情或下单,应使用 miniqmt 技能。

文档结构

教程/指南(实践导向):

  • overview.md:系统概述、模式选择、入门路径
  • execution-mechanisms.md:三种运行机制详解(含流程图和代码模板)
  • backtesting-guide.md:回测完整流程(数据准备→参数设置→运行→分析)
  • live-trading-guide.md:实盘交易指南(账号配置→委托管理→风险控制)
  • quick-reference.md:常用 API 速查卡片
  • best-practices.md:编码规范、性能优化、风险管理、调试技巧
  • joinquant-migration.md:聚宽策略迁移至 QMT 指南
  • examples/:代码示例(backtest / live-trading / subscribe / run-time)

API 参考(官方完整文档):

  • python-innerApi/start_now.md:快速开始(回测/实盘概览 + 三种机制示例)
  • python-innerApi/data_function.md:行情与数据函数(get_market_data_ex 等完整参数)
  • python-innerApi/trading_function.md:交易函数(passorder、get_trade_detail_data 等)
  • python-innerApi/system_function.md:系统函数(ContextInfo 方法、定时器等)
  • python-innerApi/callback_function.md:回调函数(account/order/deal/position 主推)
  • python-innerApi/quote_function.md:引用函数(扩展数据、因子、VBA调用)
  • python-innerApi/drawing_function.md:绘图函数
  • python-innerApi/interface_operation.md:界面操作说明
  • python-innerApi/data_structure.md:数据结构定义(Bar/Tick/Order/Position 等对象字段)
  • python-innerApi/enum_constants.md:枚举常量(opType、orderType、委托状态等)
  • python-innerApi/variable_convention.md:变量约定
  • python-innerApi/code_examples.md:完整代码示例合集
  • python-innerApi/user_attention.md:用户注意事项
  • python-innerApi/question_answer.md:常见问题

数据字典:

  • dict/:各品种数据字段(stock / indexes / future / option 等)

使用引导

按场景选择入口:

  • 新手入门:先读 overview.md → execution-mechanisms.md,再查 quick-reference.md
  • 编写回测策略:先读 backtesting-guide.md,再查 examples/backtest.md
  • 编写实盘策略:先读 live-trading-guide.md,再查 examples/live-trading.md
  • 查询 API 用法:先查 quick-reference.md(速查),再查 python-innerApi/data_function.md 等(完整参数)
  • 从聚宽迁移:先读 joinquant-migration.md,再读 overview.md
  • 代码质量优化:先读 best-practices.md,再查 examples/
  • 数据结构查询:先查 python-innerApi/data_structure.md,再查 python-innerApi/enum_constants.md

快速查找路径:

  • 需要看函数怎么用:quick-reference.md(常用函数精简版)→ python-innerApi/data_function.md(数据获取类完整文档)→ python-innerApi/trading_function.md(交易类完整文档)→ python-innerApi/system_function.md(系统/ContextInfo 方法)
  • 需要看完整代码:python-innerApi/code_examples.md(官方示例合集)→ examples/(精选示例)
  • 需要查字段含义:python-innerApi/data_structure.md(数据结构定义)→ dict/(各品种数据字典)
  • 遇到报错/问题:python-innerApi/question_answer.md(官方FAQ)→ python-innerApi/user_attention.md(注意事项)

关键速查

编码规范:

#coding:gbk  # 必须在文件第一行

核心概念:

  • handlebar:K线驱动(回测推荐)
  • subscribe:事件驱动(仅实盘,高频)
  • run_time:定时触发(监控场景)
  • quicktrade=0:等待K线完成再下单(逐K线模式)
  • quicktrade=2:立即下单(不需要等待)
  • 最小单位:100 股

最常用代码:

# 获取历史行情数据(回测用 subscribe=False,实盘用 subscribe=True)
data = C.get_market_data_ex(['close'], [stock], end_time=bar_date,
                              period='1d', count=100, subscribe=False)
close_list = list(data[stock].iloc[:, 0])

# 获取全推实时行情
tick = C.get_full_tick(['600000.SH'])
price = tick['600000.SH']['lastPrice']

# 下单买入(23=买入, 1101=按股数, quicktrade=0 逐K线模式)
passorder(23, 1101, account, stock, 5, -1, 100, C)

# 下单买入(quicktrade=2 立即下单模式)
passorder(23, 1101, account, stock, 5, -1, 100, '策略名', 2, '备注', C)

# 查询持仓
holds = get_trade_detail_data(account, 'stock', 'position')
holds_dict = {f'{p.m_strInstrumentID}.{p.m_strExchangeID}': p.m_nVolume for p in holds}

# 查询账户可用资金(单位:分)
cash = get_trade_detail_data(account, 'stock', 'account')[0].m_dAvailable

使用注意事项

  • 编码声明:文件首行必须是 #coding:gbk,不可省略
  • 位置参数:get_market_data_ex 的前两个参数 fields 和 stocks 必须用位置参数,不能用 fields= 或 stocks=
  • subscribe 参数:回测必须 False,实盘使用 True
  • 账号类型:get_trade_detail_data 的第二个参数:股票用 'stock',两融用 'credit'
  • 金额单位:m_dAvailable 等金额字段单位是分,需 /100 转换为元
  • 数量单位:股票交易必须是 100 的整数倍
  • 实盘限制:subscribe 和 run_time 仅支持实盘,不支持回测

适用场景

适用于需要在 QMT 客户端中编写、回测或运行策略,查询内置 API 用法,从聚宽迁移策略,优化代码质量,查询数据结构与字段含义,以及排查报错和问题的场景。

限制

本技能面向 QMT 客户端内置策略引擎,不适用于通过 xtquant 库在外部 Python 程序中连接 QMT/MiniQMT 客户端的场景(应使用 miniqmt 技能)。subscribe 和 run_time 仅支持实盘,不支持回测。