本文整理了 QMT 量化交易中最核心的 4 个 API 接口,覆盖数据下载、行情读取、财务获取、交易执行全流程,新手吃透即可快速上手基础策略开发。
目录
- 前言
- 行情下载接口:download_history_data
- 行情读取接口:get_market_data_ex
- 财务数据接口:get_financial_data
- 下单执行接口:passorder
- 总结
一、前言
很多刚接触 QMT 量化交易软件的开发者,常会被繁多的接口劝退。实际上,入门量化策略编写并不需要掌握全部 API—— 只要吃透4 个核心接口,就能打通「数据获取→指标计算→信号生成→交易执行」的完整闭环。
本文就带大家逐一拆解这 4 个关键 API,附可直接运行的示例代码,帮大家快速跨过 QMT 的入门门槛。
二、行情下载接口:download_history_data
量化策略的基础是行情数据,download_history_data负责将指定标的的历史行情下载到本地缓存,是回测和策略运行的前提。
接口能力
- 支持多周期数据:Tick 级、分钟线、日线等全周期行情
- 下载的数据会缓存到本地,后续读取无需重复下载
- 支持单标的、多标的批量下载
⚠️ 注意:Tick 和 1 分钟级数据体量较大,长期下载请预留足够的硬盘空间。
示例代码
#encoding:gbk def init(C): # 下载平安银行 2023-01-01 至 2025-04-08 的日线数据 download_history_data("000001.SZ", "1d", "20230101", "20250408") print('历史行情下载完成') def handlebar(C): pass核心参数
表格
| 参数位置 | 参数说明 | 示例值 |
|---|---|---|
| 第 1 位 | 标的代码(代码 + 交易所后缀) | 000001.SZ(深市)、600000.SH(沪市) |
| 第 2 位 | 数据周期 | tick/1m/1d |
| 第 3 位 | 开始日期(YYYYMMDD 格式) | 20230101 |
| 第 4 位 | 结束日期(YYYYMMDD 格式) | 20250408 |
三、行情读取接口:get_market_data_ex
数据下载到本地后,通过get_market_data_ex接口读取结构化的行情数据,是策略计算的核心数据来源。
接口能力
- 基础行情:开盘价、收盘价、最高价、最低价、成交量、成交额等
- 扩展行情:大单金额、涨跌停价、北向资金、净买入净卖出等特色指标
- 支持单标的、股票池批量获取,支持历史与实时行情
示例代码
获取平安银行日线收盘价的完整示例:
#encoding:gbk def init(C): # 1. 先下载历史行情数据 download_history_data("000001.SZ", "1d", "20230101", "20250408") print('历史行情下载完成') # 2. 读取收盘价数据 datas = C.get_market_data_ex( ['close'], # 待获取的行情字段 ['000001.SZ'], # 标的代码列表 period='1d', # 数据周期 start_time='20230101', end_time='20250408', count=-1 # 取全部数据,填数字则取最近N根 ) print('获取行情数据结果:') print(datas) def handlebar(C): pass返回结果示例
接口返回字典格式,键为标的代码,值为时间索引的行情数据:
{ '000001.SZ': close stime 20230103 12.277728 20230104 12.768124 20230105 12.910785 20230106 13.035613 20230109 13.196106 ... }四、财务数据接口:get_financial_data
基本面量化策略依赖上市公司财务数据,get_financial_data用于获取全维度的财务指标,支撑基本面因子计算。
接口能力
- 覆盖股本、利润、现金流、资产负债表等全部财报科目
- 可计算 PE、PB、ROE、EPS 等常用基本面指标
- 支持按报告期、披露时间两种对齐方式
示例代码
获取平安银行总股本数据的示例:
#encoding:gbk def init(C): # 下载基础行情数据 download_history_data("000001.SZ", "1d", "20230101", "20250408") # 获取财务数据:总股本 df = C.get_financial_data( ['CAPITASTRUCTUR.total_capital'], # 财务字段名 ["000001.SZ"], # 标的列表 startDate='20230101', endDate='20250408', report_type='report_time' # 按报告披露时间对齐 ) print('获取总股本数据:') print(df) def handlebar(C): pass返回结果示例
total_capital 20230103 1.940592e+10 20230104 1.940592e+10 20230105 1.940592e+10 ...五、下单执行接口:passorder
策略计算出交易信号后,通过passorder接口完成交易委托,是量化交易的执行入口。
接口能力
- 支持多种交易方向:买入、卖出、融资买入、融券卖出等
- 支持多种委托方式:限价、最新价、市价、涨跌停价等
- 适配股票、两融、期货、期权等全品种交易
示例代码
以「最新价买入 100 股平安银行」为例:
#encoding:gbk def handlebar(C): # 仅在当日最后一根K线触发下单,避免重复委托 if not C.is_last_bar(): return # 此处替换为你的策略交易条件 if True: passorder( 23, # 交易方向:23=买入 1101, # 交易方式:1101=单股单账号按股数下单 '39134967', # 你的证券账号 '000001.SZ', # 标的代码 5, # 价格类型:5=最新价 0, # 价格参数,最新价委托填0 100, # 委托数量(单位:股) 1, # 策略标识,可自定义 1, # 快速下单标记 "", # 委托备注,可留空 C ) print("买入委托已提交")关键参数说明
- 交易方向:23 代表买入,24 代表卖出
- 价格类型:5 为最新价,高频策略可选用市价委托提升成交率
- 交易方式:1101 为普通股票按股数委托,两融、期货等品种需对应调整编码
六、总结
从手工交易转向量化交易,本质是熟悉工具的接口逻辑与运行规则。本文介绍的 4 个 API 覆盖了量化策略的全生命周期:
download_history_data解决「数据从哪来」get_market_data_ex解决「行情怎么读」get_financial_data解决「基本面怎么算」passorder解决「交易怎么执行」
吃透这 4 个核心接口,你就具备了编写基础量化策略的能力。后续可以在此基础上扩展指标计算、仓位管理、风控模块,逐步搭建成熟的量化交易体系。
风险提示:本文仅为技术接口科普,不构成任何投资建议。量化交易存在风险,入市需谨慎。