$npx -y skills add lzwme/finance-quant-skills --skill qmt-docs--- name: "qmt-docs" type: skill description: "QMT(迅投极速策略交易系统)Python 策略开发完整指南。涵盖策略编写、回测、实盘交易、API参考和代码示例。当用户需要开发 QMT 量化策略、查询 QMT API、从聚宽迁移至 QMT、编写实盘交易程序,或提及 QMT、迅投策略、QMT 回测时使用。" tags: ["QMT", "迅投", "策略开发", "Python", "回测", "实盘交易", "量化交易"] metadata: {"openclaw":{"emoji":"📚","r
| 1 | # QMT Python 策略开发知识库 |
| 2 | |
| 3 | 为 QMT(迅投极速策略交易系统)提供完整的 Python 开发参考,分为**教程指南**和 **API 参考**两层。 |
| 4 | |
| 5 | ## 📖 文档结构 |
| 6 | |
| 7 | ``` |
| 8 | 教程/指南(实践导向) |
| 9 | ├── overview.md 系统概述、模式选择、入门路径 |
| 10 | ├── execution-mechanisms.md 三种运行机制详解(含流程图和代码模板) |
| 11 | ├── backtesting-guide.md 回测完整流程(数据准备→参数设置→运行→分析) |
| 12 | ├── live-trading-guide.md 实盘交易指南(账号配置→委托管理→风险控制) |
| 13 | ├── quick-reference.md ★ 常用 API 速查卡片 |
| 14 | ├── best-practices.md 编码规范、性能优化、风险管理、调试技巧 |
| 15 | ├── joinquant-migration.md 聚宽策略迁移至 QMT 指南 |
| 16 | └── examples/ 代码示例(backtest / live-trading / subscribe / run-time) |
| 17 | |
| 18 | API 参考(官方完整文档) |
| 19 | └── python-innerApi/ |
| 20 | ├── start_now.md 快速开始(回测/实盘概览 + 三种机制示例) |
| 21 | ├── data_function.md 行情与数据函数(get_market_data_ex 等完整参数) |
| 22 | ├── trading_function.md 交易函数(passorder、get_trade_detail_data 等) |
| 23 | ├── system_function.md 系统函数(ContextInfo 方法、定时器等) |
| 24 | ├── callback_function.md 回调函数(account/order/deal/position 主推) |
| 25 | ├── quote_function.md 引用函数(扩展数据、因子、VBA调用) |
| 26 | ├── drawing_function.md 绘图函数 |
| 27 | ├── interface_operation.md 界面操作说明 |
| 28 | ├── data_structure.md 数据结构定义(Bar/Tick/Order/Position 等对象字段) |
| 29 | ├── enum_constants.md 枚举常量(opType、orderType、委托状态等) |
| 30 | ├── variable_convention.md 变量约定 |
| 31 | ├── code_examples.md 完整代码示例合集 |
| 32 | ├── user_attention.md 用户注意事项 |
| 33 | └── question_answer.md 常见问题 |
| 34 | |
| 35 | 数据字典 |
| 36 | └── dict/ 各品种数据字段(stock / indexes / future / option 等) |
| 37 | ``` |
| 38 | |
| 39 | ## 🚀 使用引导 |
| 40 | |
| 41 | ### 按场景选择入口 |
| 42 | |
| 43 | | 场景 | 首先阅读 | 然后查阅 | |
| 44 | |------|---------|---------| |
| 45 | | **新手入门** | `overview.md` → `execution-mechanisms.md` | `quick-reference.md` | |
| 46 | | **编写回测策略** | `backtesting-guide.md` | `examples/backtest.md` | |
| 47 | | **编写实盘策略** | `live-trading-guide.md` | `examples/live-trading.md` | |
| 48 | | **查询 API 用法** | `quick-reference.md`(速查) | `python-innerApi/data_function.md` 等(完整参数) | |
| 49 | | **从聚宽迁移** | `joinquant-migration.md` | `overview.md` | |
| 50 | | **代码质量优化** | `best-practices.md` | `examples/` | |
| 51 | | **数据结构查询** | `python-innerApi/data_structure.md` | `python-innerApi/enum_constants.md` | |
| 52 | |
| 53 | ### 快速查找路径 |
| 54 | |
| 55 | ``` |
| 56 | 需要看函数怎么用? |
| 57 | → quick-reference.md(常用函数精简版) |
| 58 | → python-innerApi/data_function.md(数据获取类完整文档) |
| 59 | → python-innerApi/trading_function.md(交易类完整文档) |
| 60 | → python-innerApi/system_function.md(系统/ContextInfo 方法) |
| 61 | |
| 62 | 需要看完整代码? |
| 63 | → python-innerApi/code_examples.md(官方示例合集) |
| 64 | → examples/(精选示例) |
| 65 | |
| 66 | 需要查字段含义? |
| 67 | → python-innerApi/data_structure.md(数据结构定义) |
| 68 | → dict/(各品种数据字典) |
| 69 | |
| 70 | 遇到报错/问题? |
| 71 | → python-innerApi/question_answer.md(官方FAQ) |
| 72 | → python-innerApi/user_attention.md(注意事项) |
| 73 | ``` |
| 74 | |
| 75 | ## 🔧 关键速查 |
| 76 | |
| 77 | ### 编码规范 |
| 78 | ```python |
| 79 | #coding:gbk # 必须在文件第一行 |
| 80 | ``` |
| 81 | |
| 82 | ### 核心概念 |
| 83 | | 概念 | 说明 | |
| 84 | |------|------| |
| 85 | | handlebar | K线驱动(回测推荐) | |
| 86 | | subscribe | 事件驱动(仅实盘,高频) | |
| 87 | | run_time | 定时触发(监控场景) | |
| 88 | | quicktrade=0 | 等待K线完成再下单(逐K线模式) | |
| 89 | | quicktrade=2 | 立即下单(不需要等待) | |
| 90 | | 最小单位 | 100 股 | |
| 91 | |
| 92 | ### 最常用代码 |
| 93 | ```python |
| 94 | # 获取历史行情数据(回测用 subscribe=False,实盘用 subscribe=True) |
| 95 | data = C.get_market_data_ex(['close'], [stock], end_time=bar_date, |
| 96 | period='1d', count=100, subscribe=False) |
| 97 | close_list = list(data[stock].iloc[:, 0]) |
| 98 | |
| 99 | # 获取全推实时行情 |
| 100 | tick = C.get_full_tick(['600000.SH']) |
| 101 | price = tick['600000.SH']['lastPrice'] |
| 102 | |
| 103 | # 下单买入(23=买入, 1101=按股数, quicktrade=0 逐K线模式) |
| 104 | passorder(23, 1101, account, stock, 5, -1, 100, C) |
| 105 | |
| 106 | # 下单买入(quicktrade=2 立即下单模式) |
| 107 | passorder(23, 1101, account, stock, 5, -1, 100, '策略名', 2, '备注', C) |
| 108 | |
| 109 | # 查询持仓 |
| 110 | holds = get_trade_detail_data(account, 'stock', 'position') |
| 111 | holds_dict = {f'{p.m_strInstrumentID}.{p.m_strExchangeID}': p.m_nVolume for p in holds} |
| 112 | |
| 113 | # 查询账户可用资金(单位:分) |
| 114 | cash = get_trade_detail_data(account, 'stock', 'account')[0].m_dAvailable |
| 115 | ``` |
| 116 | |
| 117 | ## ⚠️ 使用注意事项 |
| 118 | |
| 119 | 1. **编码声明**:文件首行必须是 `#coding:gbk`,不可省略 |
| 120 | 2. **位置参数**:`get_market_data_ex` 的前两个参数 `fields` 和 `stocks` 必须用位置参数,不能用 `fields=` 或 `stocks=` |
| 121 | 3. **subscribe 参数**:回测必须 `False`,实盘使用 `True` |
| 122 | 4. **账号类型**:`get_trade_detail_data` 的第二个参数:股票用 `'stock'`,两融用 `'credit'` |
| 123 | 5. **金额单位**:`m_dAvailable` 等金额字段单位是**分**,需 `/100` 转换为元 |
| 124 | 6. **数量单位**:股票交易必须是 100 的整数倍 |
| 125 | 7. **实盘限制**:`subscribe` 和 `run_time` 仅支持实盘,不支持回测 |