QMT Python API

行情函数

数据下载

下载合约历史行情数据 - download_history_data

原型

qmt://docs/python
Python
1download_history_data(stock_code, period, start_time, end_time)

释义

下载合约历史行情数据

参数

字段名数据类型解释
stock_codestring合约代码,格式为 'stkcode.market',如 '600000.SH'
periodstringK线周期类型,如 'tick'、'1d'、'1m'、'5m' 等
start_timestring起始时间,格式为 "20200101" 或 "20200101093000",可以为空
end_timestring结束时间,格式为 "20200101" 或 "20200101093000",可以为空

返回值

获取行情数据

获取行情数据 - get_market_data_ex

提示

  1. 此接口获取历史 K 线数据(日/分钟/Tick),返回 DataFrame。与 get_full_tick(当日实时)互补,是回测和技术指标计算的核心接口。
  2. 在 init 中设置 C.cache_enabled = True 可启用内存缓存,大幅加速回测。

原型

qmt://docs/python
Python
1C.get_market_data_ex(
2 fields=[], # 字段列表: ['open','high','low','close','volume','amount'] 等
3 stock_code=[], # 合约代码列表,如 ['600000.SH'],空则取主品种
4 period='follow', # 周期,'follow' 表示跟随主图
5 start_time='', # 开始时间 '20201231''20201231093000'
6 end_time='', # 结束时间
7 count=-1, # 最大条数,-1 为不限
8 dividend_type='follow', # 复权: none/front/back/front_ratio/back_ratio
9 fill_data=True, # 停牌是否填充
10 subscribe=True # 是否订阅
11)

释义

获取实时行情与历史行情数据

参数

字段名数据类型解释
fieldslist数据字段,详情见下方 field 字段表
stock_codelist合约代码列表,如 ['600000.SH']
periodstr数据周期,可选字段见下方 period 可选值表
start_timestr起始时间,格式为 %Y%m%d 或 %Y%m%d%H%M%S,填 "" 为获取历史最早一天
end_timestr结束时间,格式为 %Y%m%d 或 %Y%m%d%H%M%S,填 "" 为截止到最新一天
countint数据条数,-1 不限
dividend_typestr复权方式,可选值见下方 dividend_type 表
fill_databool停牌是否用最后一条数据填充
subscribebool订阅数据开关,默认为 True,设置为 False 时不做数据订阅,只读取本地已有数据

period 可选值

说明
'tick'逐笔
'1m'1分钟,可为 '3m'/'5m' 等整数倍
'5m'5分钟
'1d'日线,可为 '1w'/'1mon' 等整数倍
'60m'小时线
'2h'2小时
'follow'跟随主图

dividend_type 复权方式

说明
'none'不复权
'front'前复权
'back'后复权
'front_ratio'等比前复权
'back_ratio'等比后复权
'follow'跟随主图

fill_data

是否填充数据。
如果是 True 的话,会用本地的最后一条数据填写,即使今天没有行情,今天的日期会沿用最后一条的收盘价。

subscribe

订阅数据开关,默认为 True:

- `False`:不做数据订阅,只读取本地已有数据
- `True`:会实时获取当日的最新行情

field 字段表

period = 1m / 5m / 1d / 1w / 1mon / 2h / 1h(K线)

字段数据类型解释
timeint时间
openfloat开盘价
highfloat最高价
lowfloat最低价
closefloat收盘价
volumefloat成交量(单位:手)
amountfloat成交额
settelementPricefloat今结算价
openInterestfloat持仓量
preClosefloat前收盘价
suspendFlagint停牌标记(1=停牌,0=正常)

period = tick(逐笔)

字段数据类型解释
timeint时间戳
stimestring时间戳字符串形式
lastPricefloat最新价
openfloat开盘价
highfloat最高价
lowfloat最低价
lastClosefloat前收盘价
amountfloat成交总额
volumeint成交总量(单位:手)
pvolumeint原始成交总量(未经过股手转换的成交总量)【不推荐使用】
stockStatusint证券状态
openInterestint若是股票,则 openInt 含义为股票状态,非股票则是持仓量
transactionNumfloat成交笔数(期货没有,单独计算)
lastSettlementPricefloat前结算(股票为0)
settlementPricefloat今结算(股票为0)
askPricelist[float]多档委卖价
askVollist[int]多档委卖量
bidPricelist[float]多档委买价
bidVollist[int]多档委买量

返回值

返回 dict,结构为 {stock_code1: value1, stock_code2: value2, ...}
其中 value 为 pd.DataFrame 数据集,index 为时间,columns 为字段。
各标的对应的 DataFrame 维度相同、索引相同。

示例

qmt://docs/python
Python
1# coding:gbk
2import time
3 
4def init(C):
5 data = C.get_market_data_ex(
6 fields=['high', 'open', 'low', 'close', 'volume'],
7 stock_code=['600000.SH'],
8 period='1d',
9 start_time='',
10 end_time=time.strftime('%Y%m%d'),
11 count=-1,
12 dividend_type='front',
13 fill_data=False,
14 subscribe=True
15 )
16 df = data['600000.SH']
17 print(df.to_string())

获取历史行情数据(兼容旧接口) - get_market_data

原型

qmt://docs/python
Python
1C.get_market_data(
2 fields, # 字段: 'open','high','low','close','volume','amount','quoter'(必填)
3 stock_code=[],
4 start_time='',
5 end_time='',
6 skip_paused=True, # 停牌是否延续前值
7 period='follow', # 默认跟随主图
8 dividend_type='follow', # 默认跟随主图
9 count=-1
10)

释义

获取历史行情数据(兼容旧接口)

参数

字段名数据类型解释
fieldsstr / list数据字段,如 'open'、'high'、'low'、'close'、'volume'、'amount'、'quoter'(必填)
stock_codelist合约代码列表
start_timestr起始时间,格式为 %Y%m%d 或 %Y%m%d%H%M%S
end_timestr结束时间,格式为 %Y%m%d 或 %Y%m%d%H%M%S
skip_pausedbool停牌是否延续前值
periodstr数据周期,默认 'follow' 跟随主图
dividend_typestr复权方式,默认 'follow' 跟随主图
countint数据个数,-1 不限

返回值

返回类型随参数变化:

场景返回类型
单代码、单时间、单字段number
单代码、单时间、多字段pandas.Series
单代码、多时间pandas.DataFrame
多代码、单时间pandas.DataFrame
多代码、多时间dict

获取最新分笔快照 - get_full_tick

提示

此接口返回当日最新的实时盘口数据,非历史数据。如需历史 K 线请使用 get_market_data_ex

原型

qmt://docs/python
Python
1C.get_full_tick(stock_code=[])

释义

获取最新分笔数据

参数

字段名数据类型解释
stock_codelist[str]股票代码列表,如 ['600000.SH', '000001.SZ'],不指定时为当前主图合约

返回值

根据 stock_code 返回一个 dict,该字典的 key 值是股票代码,其值仍然是一个 dict,在该 dict 中存放股票代码对应的最新的数据。返回字段参考 Tick 对象

示例

qmt://docs/python
Python
1# coding:gbk
2 
3def init(C):
4 all_stocks = C.get_stock_list_in_sector('中证500')
5 tick_data = C.get_full_tick(all_stocks)
6 lastPrice = tick_data['600000.SH']['lastPrice']
7 print(f'600000.SH 最新价: {lastPrice}')

获取板块成分股 - get_stock_list_in_sector

原型

qmt://docs/python
Python
1C.get_stock_list_in_sector(sectorname, real_timetag=None)

释义

获取板块成分股列表

参数

字段名数据类型解释
sectornamestr板块名称,如 '沪深300'、'中证500'、'沪深A股'
real_timetagstr / int历史成分时间戳,如 1512748800000'20171209';缺省取最新成分

返回值

list[str] — 成分股代码列表,格式为 stockcode.market,如 ['000001.SZ', '000002.SZ', '600000.SH', ...]

示例

qmt://docs/python
Python
1def init(C):
2 all_stocks = C.get_stock_list_in_sector('中证500')
3 print(f'中证500成分股数量: {len(all_stocks)}')

获取合约详细信息 - get_instrument_detail

原型

qmt://docs/python
Python
1C.get_instrument_detail(marketCode, iscomplete=False)

释义

获取合约详细信息

参数

字段名数据类型解释
marketCodestr合约代码,如 '600000.SH',空字符串则取主品种
iscompletebool是否获取完整信息

返回值

返回 dict,包含 ExchangeID、InstrumentName、OpenDate、PreClose、UpStopPrice、DownStopPrice、FloatVolume、TotalVolume、VolumeMultiple 等字段。股票与期货返回字段不同,详细字段说明参考 数据结构

提示

股票与期货返回字段不同。主要字段包括:

  • 行情价格类:PreClose(前收盘价)、SettlementPrice(前结算价)、UpStopPrice(当日涨停价)、DownStopPrice(当日跌停价)、PriceTick(最小价格变动单位)
  • 合约标识类:ExchangeID(合约市场代码)、InstrumentID(合约代码)、InstrumentName(合约名称)、ProductID(品种ID,期货)、ProductName(品种名称,期货)
  • 日期类:CreateDate(上市日期,期货)、OpenDate(IPO日期,股票)、ExpireDate(退市日/到期日)
  • 股本类:FloatVolume(流通股本,股票)、TotalVolume(总股本,股票)、LastVolume(昨日持仓量,期货)
  • 交易规则类:LongMarginRatio(多头保证金率,期货)、ShortMarginRatio(空头保证金率,期货)、VolumeMultiple(合约乘数)、MainContract(主力合约标记,期货)、InstrumentStatus(停牌天数,股票)、IsTrading(合约是否可交易)、IsRecent(是否近月合约,期货)

订阅行情

订阅行情数据 - subscribe_quote

原型

qmt://docs/python
Python
1C.subscribe_quote(
2 stock_code, # 合约代码(必填),空字符串则取主品种
3 period='follow', # 周期: tick/1m/5m/15m/30m/1h/1d 等
4 dividend_type='follow',
5 result_type='',
6 callback=None # 回调函数 def callback(data): ...
7)

释义

订阅行情数据

参数

字段名数据类型解释
stock_codestr合约代码,如 '600000.SH',空字符串则取主品种
periodstrK线周期类型,如 'tick'、'1m'、'5m'、'15m'、'30m'、'1h'、'1d' 等
dividend_typestr除权方式,可选值为 'none'(不复权)、'front'(前复权)、'back'(后复权)、'front_ratio'(等比前复权)、'back_ratio'(等比后复权)。注意:分笔周期返回数据均为不复权
result_typestr返回数据格式,可选范围:'DataFrame' 或 ''(默认)返回 {code: data},data 为 pd.DataFrame;'dict' 返回 {code: {k: v}};'list' 返回 {code: {k: [v]}}
callbackfunction指定推送行情的回调函数

返回值

int:订阅号,用于反订阅

示例

qmt://docs/python
Python
1# coding:gbk
2def call_back(data):
3 print(data)
4 
5def init(C):
6 C.subID = C.subscribe_quote("000001.SZ", "1d", callback=call_back)
7 
8def handlebar(C):
9 print("============================")
10 print("C.subID: ", C.subID)

订阅全推数据 - subscribe_whole_quote

原型

qmt://docs/python
Python
1C.subscribe_whole_quote(code_list, callback=None)

释义

订阅全推数据,全推数据只有分笔周期,每次增量推送数据有变化的品种

参数

字段名数据类型解释
code_listlist[str]市场代码列表或品种代码列表,如 ['SH', 'SZ'] 或 ['600000.SH', '000001.SZ']
callbackfunction数据推送回调

返回值

int,订阅号,可用 unsubscribe_quote 做反订阅

示例

qmt://docs/python
Python
1# coding:gbk
2def call_back(data):
3 print(data)
4 
5def init(C):
6 C.stock_list = ["000001.SZ", "600519.SH", "510050.SH"]
7 C.subID = C.subscribe_whole_quote(C.stock_list, callback=call_back)
8 
9def handlebar(C):
10 print("============================")
11 print("C.subID: ", C.subID)

反订阅行情数据 - unsubscribe_quote

原型

qmt://docs/python
Python
1C.unsubscribe_quote(subscribe_id)

释义

反订阅行情数据,配合 subscribe_quotesubscribe_whole_quote 使用

参数

字段名数据类型解释
subscribe_idint行情订阅返回的订阅号

示例

qmt://docs/python
Python
1# coding:gbk
2def call_back(data):
3 print(data)
4 
5def init(C):
6 C.stock_list = ["000001.SZ", "600519.SH", "510050.SH"]
7 C.subID = C.subscribe_whole_quote(C.stock_list, callback=call_back)
8 
9def handlebar(C):
10 print("============================")
11 print("C.subID: ", C.subID)
12 if C.subID > 0:
13 C.unsubscribe_quote(C.subID) # 取消行情订阅

除权除息

获取除权除息信息 - get_divid_factors

原型

qmt://docs/python
Python
1C.get_divid_factors(marketAndStock, date='')

释义

获取除权除息信息

参数

字段名数据类型解释
marketAndStockstr合约代码,如 '600000.SH',空字符串则取主品种
datestr日期,默认为空

返回值

dict,结构为 {timestamp: [每股红利, 每股送转, 每股转赠, 配股, 配股价, 是否股改, 复权系数]}

智能助手

咨询式 AI · 带入当前文档

智能助手加载中...