QMT 量化入门:掌握这 4 个核心 API,即可开启策略编写

QMT 量化入门:掌握这 4 个核心 API,即可开启策略编写

本文整理了 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 覆盖了量化策略的全生命周期:

  1. download_history_data解决「数据从哪来」
  2. get_market_data_ex解决「行情怎么读」
  3. get_financial_data解决「基本面怎么算」
  4. passorder解决「交易怎么执行」

吃透这 4 个核心接口,你就具备了编写基础量化策略的能力。后续可以在此基础上扩展指标计算、仓位管理、风控模块,逐步搭建成熟的量化交易体系。

风险提示:本文仅为技术接口科普,不构成任何投资建议。量化交易存在风险,入市需谨慎。