QMT Python API
行情函数
数据下载
下载合约历史行情数据 - download_history_data
原型
download_history_data(stock_code, period, start_time, end_time)释义
下载合约历史行情数据
参数
| 字段名 | 数据类型 | 解释 |
|---|---|---|
stock_code | string | 合约代码,格式为 'stkcode.market',如 '600000.SH' |
period | string | K线周期类型,如 'tick'、'1d'、'1m'、'5m' 等 |
start_time | string | 起始时间,格式为 "20200101" 或 "20200101093000",可以为空 |
end_time | string | 结束时间,格式为 "20200101" 或 "20200101093000",可以为空 |
返回值
无
获取行情数据
获取行情数据 - get_market_data_ex
提示
- 此接口获取历史 K 线数据(日/分钟/Tick),返回 DataFrame。与 get_full_tick(当日实时)互补,是回测和技术指标计算的核心接口。
- 在 init 中设置 C.cache_enabled = True 可启用内存缓存,大幅加速回测。
原型
C.get_market_data_ex( fields=[], # 字段列表: ['open','high','low','close','volume','amount'] 等 stock_code=[], # 合约代码列表,如 ['600000.SH'],空则取主品种 period='follow', # 周期,'follow' 表示跟随主图 start_time='', # 开始时间 '20201231' 或 '20201231093000' end_time='', # 结束时间 count=-1, # 最大条数,-1 为不限 dividend_type='follow', # 复权: none/front/back/front_ratio/back_ratio fill_data=True, # 停牌是否填充 subscribe=True # 是否订阅)释义
获取实时行情与历史行情数据
参数
| 字段名 | 数据类型 | 解释 |
|---|---|---|
fields | list | 数据字段,详情见下方 field 字段表 |
stock_code | list | 合约代码列表,如 ['600000.SH'] |
period | str | 数据周期,可选字段见下方 period 可选值表 |
start_time | str | 起始时间,格式为 %Y%m%d 或 %Y%m%d%H%M%S,填 "" 为获取历史最早一天 |
end_time | str | 结束时间,格式为 %Y%m%d 或 %Y%m%d%H%M%S,填 "" 为截止到最新一天 |
count | int | 数据条数,-1 不限 |
dividend_type | str | 复权方式,可选值见下方 dividend_type 表 |
fill_data | bool | 停牌是否用最后一条数据填充 |
subscribe | bool | 订阅数据开关,默认为 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线)
| 字段 | 数据类型 | 解释 |
|---|---|---|
time | int | 时间 |
open | float | 开盘价 |
high | float | 最高价 |
low | float | 最低价 |
close | float | 收盘价 |
volume | float | 成交量(单位:手) |
amount | float | 成交额 |
settelementPrice | float | 今结算价 |
openInterest | float | 持仓量 |
preClose | float | 前收盘价 |
suspendFlag | int | 停牌标记(1=停牌,0=正常) |
period = tick(逐笔)
| 字段 | 数据类型 | 解释 |
|---|---|---|
time | int | 时间戳 |
stime | string | 时间戳字符串形式 |
lastPrice | float | 最新价 |
open | float | 开盘价 |
high | float | 最高价 |
low | float | 最低价 |
lastClose | float | 前收盘价 |
amount | float | 成交总额 |
volume | int | 成交总量(单位:手) |
pvolume | int | 原始成交总量(未经过股手转换的成交总量)【不推荐使用】 |
stockStatus | int | 证券状态 |
openInterest | int | 若是股票,则 openInt 含义为股票状态,非股票则是持仓量 |
transactionNum | float | 成交笔数(期货没有,单独计算) |
lastSettlementPrice | float | 前结算(股票为0) |
settlementPrice | float | 今结算(股票为0) |
askPrice | list[float] | 多档委卖价 |
askVol | list[int] | 多档委卖量 |
bidPrice | list[float] | 多档委买价 |
bidVol | list[int] | 多档委买量 |
返回值
返回 dict,结构为 {stock_code1: value1, stock_code2: value2, ...}
其中 value 为 pd.DataFrame 数据集,index 为时间,columns 为字段。
各标的对应的 DataFrame 维度相同、索引相同。
示例
# coding:gbkimport time def init(C): data = C.get_market_data_ex( fields=['high', 'open', 'low', 'close', 'volume'], stock_code=['600000.SH'], period='1d', start_time='', end_time=time.strftime('%Y%m%d'), count=-1, dividend_type='front', fill_data=False, subscribe=True ) df = data['600000.SH'] print(df.to_string())获取历史行情数据(兼容旧接口) - get_market_data
原型
C.get_market_data( fields, # 字段: 'open','high','low','close','volume','amount','quoter'(必填) stock_code=[], start_time='', end_time='', skip_paused=True, # 停牌是否延续前值 period='follow', # 默认跟随主图 dividend_type='follow', # 默认跟随主图 count=-1)释义
获取历史行情数据(兼容旧接口)
参数
| 字段名 | 数据类型 | 解释 |
|---|---|---|
fields | str / list | 数据字段,如 'open'、'high'、'low'、'close'、'volume'、'amount'、'quoter'(必填) |
stock_code | list | 合约代码列表 |
start_time | str | 起始时间,格式为 %Y%m%d 或 %Y%m%d%H%M%S |
end_time | str | 结束时间,格式为 %Y%m%d 或 %Y%m%d%H%M%S |
skip_paused | bool | 停牌是否延续前值 |
period | str | 数据周期,默认 'follow' 跟随主图 |
dividend_type | str | 复权方式,默认 'follow' 跟随主图 |
count | int | 数据个数,-1 不限 |
返回值
返回类型随参数变化:
| 场景 | 返回类型 |
|---|---|
| 单代码、单时间、单字段 | number |
| 单代码、单时间、多字段 | pandas.Series |
| 单代码、多时间 | pandas.DataFrame |
| 多代码、单时间 | pandas.DataFrame |
| 多代码、多时间 | dict |
获取最新分笔快照 - get_full_tick
提示
此接口返回当日最新的实时盘口数据,非历史数据。如需历史 K 线请使用 get_market_data_ex。
原型
C.get_full_tick(stock_code=[])释义
获取最新分笔数据
参数
| 字段名 | 数据类型 | 解释 |
|---|---|---|
stock_code | list[str] | 股票代码列表,如 ['600000.SH', '000001.SZ'],不指定时为当前主图合约 |
返回值
根据 stock_code 返回一个 dict,该字典的 key 值是股票代码,其值仍然是一个 dict,在该 dict 中存放股票代码对应的最新的数据。返回字段参考 Tick 对象。
示例
# coding:gbk def init(C): all_stocks = C.get_stock_list_in_sector('中证500') tick_data = C.get_full_tick(all_stocks) lastPrice = tick_data['600000.SH']['lastPrice'] print(f'600000.SH 最新价: {lastPrice}')获取板块成分股 - get_stock_list_in_sector
原型
C.get_stock_list_in_sector(sectorname, real_timetag=None)释义
获取板块成分股列表
参数
| 字段名 | 数据类型 | 解释 |
|---|---|---|
sectorname | str | 板块名称,如 '沪深300'、'中证500'、'沪深A股' |
real_timetag | str / int | 历史成分时间戳,如 1512748800000 或 '20171209';缺省取最新成分 |
返回值
list[str] — 成分股代码列表,格式为 stockcode.market,如 ['000001.SZ', '000002.SZ', '600000.SH', ...]
示例
def init(C): all_stocks = C.get_stock_list_in_sector('中证500') print(f'中证500成分股数量: {len(all_stocks)}')获取合约详细信息 - get_instrument_detail
原型
C.get_instrument_detail(marketCode, iscomplete=False)释义
获取合约详细信息
参数
| 字段名 | 数据类型 | 解释 |
|---|---|---|
marketCode | str | 合约代码,如 '600000.SH',空字符串则取主品种 |
iscomplete | bool | 是否获取完整信息 |
返回值
返回 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
原型
C.subscribe_quote( stock_code, # 合约代码(必填),空字符串则取主品种 period='follow', # 周期: tick/1m/5m/15m/30m/1h/1d 等 dividend_type='follow', result_type='', callback=None # 回调函数 def callback(data): ...)释义
订阅行情数据
参数
| 字段名 | 数据类型 | 解释 |
|---|---|---|
stock_code | str | 合约代码,如 '600000.SH',空字符串则取主品种 |
period | str | K线周期类型,如 'tick'、'1m'、'5m'、'15m'、'30m'、'1h'、'1d' 等 |
dividend_type | str | 除权方式,可选值为 'none'(不复权)、'front'(前复权)、'back'(后复权)、'front_ratio'(等比前复权)、'back_ratio'(等比后复权)。注意:分笔周期返回数据均为不复权 |
result_type | str | 返回数据格式,可选范围:'DataFrame' 或 ''(默认)返回 {code: data},data 为 pd.DataFrame;'dict' 返回 {code: {k: v}};'list' 返回 {code: {k: [v]}} |
callback | function | 指定推送行情的回调函数 |
返回值
int:订阅号,用于反订阅
示例
# coding:gbkdef call_back(data): print(data) def init(C): C.subID = C.subscribe_quote("000001.SZ", "1d", callback=call_back) def handlebar(C): print("============================") print("C.subID: ", C.subID)订阅全推数据 - subscribe_whole_quote
原型
C.subscribe_whole_quote(code_list, callback=None)释义
订阅全推数据,全推数据只有分笔周期,每次增量推送数据有变化的品种
参数
| 字段名 | 数据类型 | 解释 |
|---|---|---|
code_list | list[str] | 市场代码列表或品种代码列表,如 ['SH', 'SZ'] 或 ['600000.SH', '000001.SZ'] |
callback | function | 数据推送回调 |
返回值
int,订阅号,可用 unsubscribe_quote 做反订阅
示例
# coding:gbkdef call_back(data): print(data) def init(C): C.stock_list = ["000001.SZ", "600519.SH", "510050.SH"] C.subID = C.subscribe_whole_quote(C.stock_list, callback=call_back) def handlebar(C): print("============================") print("C.subID: ", C.subID)反订阅行情数据 - unsubscribe_quote
原型
C.unsubscribe_quote(subscribe_id)释义
反订阅行情数据,配合 subscribe_quote 或 subscribe_whole_quote 使用
参数
| 字段名 | 数据类型 | 解释 |
|---|---|---|
subscribe_id | int | 行情订阅返回的订阅号 |
示例
# coding:gbkdef call_back(data): print(data) def init(C): C.stock_list = ["000001.SZ", "600519.SH", "510050.SH"] C.subID = C.subscribe_whole_quote(C.stock_list, callback=call_back) def handlebar(C): print("============================") print("C.subID: ", C.subID) if C.subID > 0: C.unsubscribe_quote(C.subID) # 取消行情订阅除权除息
获取除权除息信息 - get_divid_factors
原型
C.get_divid_factors(marketAndStock, date='')释义
获取除权除息信息
参数
| 字段名 | 数据类型 | 解释 |
|---|---|---|
marketAndStock | str | 合约代码,如 '600000.SH',空字符串则取主品种 |
date | str | 日期,默认为空 |
返回值
dict,结构为 {timestamp: [每股红利, 每股送转, 每股转赠, 配股, 配股价, 是否股改, 复权系数]}