数据下载

download_history_data - 下载指定合约代码指定周期对应时间范围的行情数据

提示

QMT提供的行情数据中,基础周期包含 tick 1m 5m 1d,这些是实际用于存储的周期 其他周期为合成周期,以基础周期合成得到

合成周期

  • 15m, 30m, 60m 由5分钟线合成
  • 1w(周线), 1mon(月线), 1y(年线) 由日线数据合成

获取合成周期时

  • 如果取历史,需要下载历史的基础周期(如取15m需要下载5m)
  • 如果取实时,可以直接订阅原始周期(如直接订阅15m)

如果同时用到基础周期和合成周期,只需要下载基础周期,例如同时使用5m和15m,因为15m也是由5m合成,所以只需要下载一次5m的数据即可

原型

download_history_data(stockcode,period,startTime,endTime)

释义

下载指定合约代码指定周期对应时间范围的行情数据

参数

字段名数据类型解释
stockcodestring股票代码,格式为'stkcode.market',例如 '600000.SH'
periodstringK线周期类型,包括:
'tick':分笔线
'1d':日线
'1m':分钟线
'5m':5分钟线
startTimestring起始时间,格式为 "20200101" 或 "20200101093000",可以为空
endTimestring结束时间,格式为 "20200101" 或 "20200101093000",可以为空

返回值

none

示例

# coding:gbk
def init(C):
	download_history_data("000001.SZ","1d","20230101","") # 下载000001.SZ,从20230101至今的日线数据
def handlebar(C):
    return

获取行情数据

该目录下的函数用于获取实时行情,历史行情

ContextInfo.get_market_data_ex - 获取行情数据

注意

  1. 该函数不建议在init中运行,在init中运行时仅能取到本地数据
  2. 关于获取行情函数之间的区别与注意事项可在 - 常见问题-行情相关在新窗口打开 查看
  3. 除实时行情外,该函数还可用于获取特色数据,如资金流向数据,订单流数据等,获取方式见数据字典在新窗口打开

原型

ContextInfo.get_market_data_ex(
    fields=[], 
    stock_code=[], 
    period='follow', 
    start_time='', 
    end_time='', 
    count=-1, 
    dividend_type='follow', 
    fill_data=True, 
    subscribe=True)

释义

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

参数

名称类型描述
fieldlist数据字段,详情见下方field字段表
stock_listlist合约代码列表
periodstr数据周期,可选字段为:
"tick"
"1m":1分钟线
"5m":5分钟线;"15m":15分钟线;"30m":30分钟线
"1h"小时线
"1d":日线
"1w":周线
"1mon":月线
"1q":季线
"1hy":半年线
"1y":年线
'l2quote':Level2行情快照
'l2quoteaux':Level2行情快照补充
'l2order':Level2逐笔委托
'l2transaction':Level2逐笔成交
'l2transactioncount':Level2大单统计
'l2orderqueue':Level2委买委卖队列
start_timestr数据起始时间,格式为 %Y%m%d 或 %Y%m%d%H%M%S,填""为获取历史最早一天
end_timestr数据结束时间,格式为 %Y%m%d 或 %Y%m%d%H%M%S ,填""为截止到最新一天
countint数据个数
dividend_typestr除权方式,可选值为
'none':不复权
'front':前复权
'back':后复权
'front_ratio': 等比前复权
'back_ratio': 等比后复权
fill_databool是否填充数据
subscribebool订阅数据开关,默认为True,设置为False时不做数据订阅,只读取本地已有数据。
  • field字段可选:
field数据类型含义
timeint时间
openfloat开盘价
highfloat最高价
lowfloat最低价
closefloat收盘价
volumefloat成交量
amountfloat成交额
settlefloat今结算
openInterestfloat持仓量
preClosefloat前收盘价
suspendFlagint停牌 1停牌,0 不停牌
  • period周期为tick时,field字段可选:
field数据类型含义
timeint时间
lastPricefloat最新价
lastClosefloat前收盘价
openfloat开盘价
highfloat最高价
lowfloat最低价
closefloat收盘价
volumefloat成交量
amountfloat成交额
settlefloat今结算
openInterestfloat持仓量
stockStatusint停牌 1停牌,0 不停牌

返回值

  • 返回dict { stock_code1 : value1, stock_code2 : value2, ... }
  • value1, value2, ... :pd.DataFrame 数据集,index为time_list,columns为fields,可参考Bar字段在新窗口打开
  • 各标的对应的DataFrame维度相同、索引相同

示例

# coding:gbk
import pandas as pd
import numpy as np

def init(C):	
	C.stock_list = ["000001.SZ","600519.SH", "510050.SH"]# 指定获取的标的
	C.start_time = "20230901"# 指定获取数据的开始时间
	C.end_time = "20231101"# 指定获取数据的结束时间
	
def handlebar(C):
	# 获取多只股票,多个字段,一条数据
	data1 = C.get_market_data_ex([],C.stock_list, period = "1d",count = 1)
	# 获取多只股票,多个字段,指定时间数据
	data2 = C.get_market_data_ex([],C.stock_list, period = "1d", start_time = C.start_time, end_time = C.end_time)
	# 获取多只股票,多个字段,指定时间15m数据
	data3 = C.get_market_data_ex([],C.stock_list, period = "15m", start_time = C.start_time, end_time = C.end_time)
	# 获取多只股票,指定字段,指定时间15m数据
	data4 = C.get_market_data_ex(["close","open"],C.stock_list, period = "15m", start_time = C.start_time, end_time = C.end_time)
	# 获取多只股票,历史tick
	tick = C.get_market_data_ex([],C.stock_list, period = "tick", start_time = C.start_time, end_time = C.end_time)
	# 获取期货5档盘口tick
	future_lv2_quote = C.get_market_data_ex([],["rb2405.SF","ec2404.INE"], period = "l2quote", count = 1)
	print(data1)
	print(data2["000001.SZ"].tail())
	print(data3)
	print(data4["000001.SZ"])
	print(data4["000001.SZ"].to_csv("your_path")) # 导出文件为csv格式,路径填本机路径
	print(tick["000001.SZ"])
	print(future_lv2_quote)

ContextInfo.get_full_tick - 获取全推数据

提示

不能用于回测 只能取最新的分笔,不能取历史分笔

原型

ContextInfo.get_full_tick(stock_code=[])

释义

获取最新分笔数据

参数

名称类型描述
stock_codelist[str]合约代码列表,如['600000.SH','600036.SH'],不指定时为当前主图合约。

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

示例

# coding:gbk
import pandas as pd
import numpy as np

def init(C):
	C.stock_list = ["000001.SZ","600519.SH", "510050.SH"]
	
def handlebar(C):
	tick = C.get_full_tick(C.stock_list)
	print(tick["510050.SH"])

ContextInfo.subscribe_quote - 订阅行情数据

提示

  1. 该函数属于订阅函数,非VIP用户限制订阅数量

  2. VIP用户支持全推市场指定周期K线

  3. VIP用户权限请参考vip-行情用户优势对比

原型

ContextInfo.subscribe_quote(
    stock_code,
    period='follow',
    dividend_type='follow',
    result_type='',
    callback=None)

释义

订阅行情数据,关于订阅机制请参考运行机制对比在新窗口打开

参数

字段名数据类型解释
stockcodestring股票代码,'stkcode.market',如'600000.SH'
periodstringK线周期类型
dividend_typestring除权方式,可选值为
'none':不复权
'front':前复权
'back':后复权
'front_ratio': 等比前复权
'back_ratio': 等比后复权
注意:分笔周期返回数据均为不复权
result_typestring返回数据格式,可选范围:<br>'DataFrame'或''(默认):返回{code:data},data为pd.DataFrame数据集,index为字符串格式的时间序列,columns为数据字段<br>'dict':返回{code:{k1:v1,k2:v2,...}},k为数据字段名,v为字段值<br>'list':返回{code:{k1:[v1],k2:[v2],...}},k为数据字段名,v为字段值
callbackfunction指定推送行情的回调函数

返回值

int:订阅号,用于反订阅

示例

# conding = gbk
def 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)
	

ContextInfo.subscribe_whole_quote - 订阅全推数据

提示

ContextInfo.subscribe_whole_quote(code_list,callback=None)

释义

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

参数

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

返回值int,订阅号,可用ContextInfo.unsubscribe_quote做反订阅

# conding = gbk
def 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)

ContextInfo.unsubscribe_quote - 反订阅行情数据

原型

ContextInfo.unsubscribe_quote(subId)

释义

反订阅行情数据,配合ContextInfo.subscribe_quote()ContextInfo.subscribe_whole_quote()使用

参数

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

示例

# conding = gbk
def 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) # 取消行情订阅

subscribe_formula - 订阅模型

原型

subscribe_formula(
   formula_name,stock_code,period
   ,start_time="",end_time="",count=-1
   ,dividend_type="none"
   ,extend_param={}
   ,callback=None)

释义 订阅vba模型运行结果,使用前要注意补充本地K线数据或分笔数据

参数

字段名类型描述
formula_namestr模型名称名
stock_codestr模型主图代码形式如'stkcode.market',如'000300.SH'
periodstrK线周期类型,可选范围:'tick':分笔线,'1d':日线,'1m':分钟线,'3m':三分钟线,'5m':5分钟线,'15m':15分钟线,'30m':30分钟线,'1h':小时线,'1w':周线,'1mon':月线,'1q':季线,'1hy':半年线,'1y':年线
start_timestr模型运行起始时间,形如:'20200101',默认为空视为最早
end_timestr模型运行截止时间,形如:'20200101',默认为空视为最新
countint模型运行范围为向前 count 根 bar,默认为 -1 运行所有 bar
dividend_typestr复权方式,默认为主图除权方式,可选范围:'none':不复权,'front':向前复权,'back':向后复权,'front_ratio':等比向前复权,'back_ratio':等比向后复权
extend_paramdict模型的入参,形如 {'a': 1, '__basket': {}}
__basketdict可选参数,组合模型的股票池权重,形如 {'600000.SH': 0.06, '000001.SZ': 0.01}

返回值 分两块,

  • subscribe_formula返回模型的订阅号,可用于后续反订阅,失败返回 -1

  • callback:

    • timelist: 数据时间戳
    • outputs:模型的输出值,结构为{变量名:值}

示例

#encoding=gbk
def callback(data):
    print(data)

def init(ContextInfo):
    basket={
       '600000.SH':0.06,
       '000001.SZ':0.01
      }
    argsDict={'a':100,'__basket':basket}
    subID=subscribe_formula(
      '单股模型示范','000300.SH','1d',
      '20240101','20240201',-1,
      "none",
      argsDict,
      callback
   )

unsubscribe_formula - 反订阅模型

原型

unsubscribe_formula(subID)

释义 反订阅模型

参数

字段名类型描述
subIDint模型订阅号

返回值

  • bool:反订阅成功为True,失败为False

示例

#encoding=gbk
def callback(data):
    print(data)

def init(ContextInfo):
    basket={
       '600000.SH':0.06,
       '000001.SZ':0.01
      }
    argsDict={'a':100,'__basket':basket}
    subID=subscribe_formula(
      '单股模型示范','000300.SH','1d',
      '20240101','20240201',-1,
      "none",
      argsDict,
      callback
   )

	unsubscribe_formula(subID)

call_formula - 调用模型

原型

call_formula(formula_name,stock_code,period,start_time="",end_time="",count=-1,dividend_type="none",extend_param={})

释义 获取vba模型运行结果,使用前要注意补充本地K线数据或分笔数据

参数

字段名类型描述
formula_namestr模型名称名
stock_codestr模型主图代码形式如'stkcode.market',如'000300.SH'
periodstrK线周期类型,可选范围:'tick':分笔线,'1d':日线,'1m':分钟线,'3m':三分钟线,'5m':5分钟线,'15m':15分钟线,'30m':30分钟线,'1h':小时线,'1w':周线,'1mon':月线,'1q':季线,'1hy':半年线,'1y':年线
start_timestr模型运行起始时间,形如:'20200101',默认为空视为最早
end_timestr模型运行截止时间,形如:'20200101',默认为空视为最新
countint模型运行范围为向前 count 根 bar,默认为 -1 运行所有 bar
dividend_typestr复权方式,默认为主图除权方式,可选范围:'none':不复权,'front':向前复权,'back':向后复权,'front_ratio':等比向前复权,'back_ratio':等比向后复权
extend_paramdict模型的入参,{"模型名:参数名":参数值},例如在跑模型MA时,{'MA:n1':1};入参可以添加__basket:dict,组合模型的股票池权重,形如{'__basket':{'600000.SH':0.06,'000001.SZ':0.01}},如果在跑一个模型1的时候,模型1调用了模型2,如果只想修改模型2的参数可以传{'模型2:参数':参数值}

返回值 返回:dict{ 'dbt':0,#返回数据类型,0:全部历史数据 'timelist':[...],#返回数据时间范围list, 'outputs':{'var1':[...],'var2':[...]}#输出变量名:变量值list }

示例

def handlebar(ContextInfo):
    basket={'600000.SH':0.06,'000001.SZ':0.01}
    argsDict={'a':100,'__basket':basket}
    modelRet=call_formula('单股模型示范','000300.SH','1d','20240101','20240201',-1,"none",argsDict)
    print(modelRet)

call_formula_batch - 批量调用模型

原型

call_formula_batch(formula_names,stock_codes,period,start_time="",end_time="",count=-1,dividend_type="none",extend_params=[])

释义 批量获取vba模型运行结果,使用前要注意补充本地K线数据或分笔数据

参数

字段名类型描述
formula_nameslist包含要批量运行的模型名
stock_codeslist包含要批量运行的模型主图代码形式'stkcode.market',如'000300.SH'
periodstrK线周期类型,可选范围:'tick':分笔线,'1d':日线,'1m':分钟线,'3m':三分钟线,'5m':5分钟线,'15m':15分钟线,'30m':30分钟线,'1h':小时线,'1w':周线,'1mon':月线,'1q':季线,'1hy':半年线,'1y':年线
start_timestr模型运行起始时间,形如:'20200101',默认为空视为最早
end_timestr模型运行截止时间,形如:'20200101',默认为空视为最新
countint模型运行范围为向前 count 根 bar,默认为 -1 运行所有 bar
dividend_typestr复权方式,默认为主图除权方式,可选范围:'none':不复权,'front':向前复权,'back':向后复权,'front_ratio':等比向前复权,'back_ratio':等比向后复权
extend_paramslist包含每个模型的入参,[{"模型名:参数名":参数值}],例如在跑模型MA时,{'MA:n1':1};入参可以添加__basket:dict,组合模型的股票池权重,形如{'__basket':{'600000.SH':0.06,'000001.SZ':0.01}},如果在跑一个模型1的时候,模型1调用了模型2,如果只想修改模型2的参数可以传{'模型2:参数':参数值}

返回值

  • list[dict]
    • dict说明:
      • formula:模型名
      • stock:品种代码
      • argument:参数
      • result:dict参考call_formula返回结果

示例


def handlebar(ContextInfo):
    formulas=['testModel1','testModel2']
    codes=['600000.SH','000001.SZ']
    basket={'600000.SH':0.06,'000001.SZ':0.01}
    args=[{'a':100,'__basket':basket},{'a':200,'__basket':basket}]
    modelRet=call_formula_batch(formulas,codes,'1d',extend_params=args);
    print(modelRet)

ContextInfo.get_svol - 根据代码获取对应股票的内盘成交量

原型

ContextInfo.get_svol(stockcode)

释义

根据代码获取对应股票的内盘成交量

参数

字段名数据类型解释
stockcodestring股票代码,如 '000001.SZ',缺省值'',默认为当前图代码

返回值int:内盘成交量

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	data = C.get_svol('000001.SZ')
	print(data)

ContextInfo.get_bvol - 根据代码获取对应股票的外盘成交量

原型

ContextInfo.get_bvol(stockcode)

释义

根据代码获取对应股票的外盘成交量

参数

字段名数据类型解释
stockcodestring股票代码,如 '000001.SZ',缺省值'',默认为当前图代码

返回值

int:外盘成交量

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	data = C.get_bvol('000001.SZ')
	print(data)

ContextInfo.get_turnover_rate - 获取换手率

提示

使用之前需要下载财务数据(在财务数据下载中)以及日线数据

如果不补充股本数据,将使用最新流通股本计算历史换手率,可能会造成历史换手率不正确

原型

ContextInfo.get_turnover_rate(stock_list,startTime,endTime)

释义

获取换手率

参数

字段名数据类型解释
stock_listlist股票列表,如['600000.SH','000001.SZ']
startTimestring起始时间,如'20170101'
endTimestring结束时间,如'20180101'

返回值

pandas.Dataframe

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	data = C.get_turnover_rate(['000002.SZ'],'20170101','20170301')
	print(data)

ContextInfo.get_longhubang - 获取龙虎榜数据

原型

ContextInfo.get_longhubang(stock_list, startTime, endTime)

释义

获取龙虎榜数据

参数

参数名称类型描述
stock_listlist股票列表,如 ['600000.SH', '600036.SH']
startTimestr起始时间,如 '20170101'
endTimestr结束时间,如 '20180101'

返回值

  • 格式为pandas.DataFrame:
参数名称数据类型描述
reasonstr上榜原因
closefloat收盘价
spreadRatefloat涨跌幅
TurnoverVolunefloat成交量
Turnover_Amountfloat成交金额
buyTraderBoothpandas.DataFrame买方席位
sellTraderBoothpandas.DataFrame卖方席位
  • buyTraderBoothsellTraderBooth 包含字段:
参数名称数据类型描述
traderNamestr交易营业部名称
buyAmountfloat买入金额
buyPercentfloat买入金额占总成交占比
sellAmountfloat卖出金额
sellPercentfloat卖出金额占总成交占比
totalAmountfloat该席位总成交金额
rankint席位排行
directionint买卖方向

示例

# coding:gbk

def init(C):
    return

def handlebar(C):
    print(C.get_longhubang(['000002.SZ'],'20100101','20180101'))

ContextInfo.get_north_finance_change - 获取对应周期的北向数据

原型

ContextInfo.get_north_finance_change(period)

释义

获取对应周期的北向数据

参数

字段名数据类型描述
periodstr数据周期

返回值

  • 根据period返回一个dict,该字典的key值是北向数据的时间戳,其值仍然是一个dict,其值的key值是北向数据的字段类型,其值是对应字段的值。该字典数据key值有:
字段名数据类型描述
hgtNorthBuyMoneyintHGT北向买入资金
hgtNorthSellMoneyintHGT北向卖出资金
hgtSouthBuyMoneyintHGT南向买入资金
hgtSouthSellMoneyintHGT南向卖出资金
sgtNorthBuyMoneyintSGT北向买入资金
sgtNorthSellMoneyintSGT北向卖出资金
sgtSouthBuyMoneyintSGT南向买入资金
sgtSouthSellMoneyintSGT南向卖出资金
hgtNorthNetInFlowintHGT北向资金净流入
hgtNorthBalanceByDayintHGT北向当日资金余额
hgtSouthNetInFlowintHGT南向资金净流入
hgtSouthBalanceByDayintHGT南向当日资金余额
sgtNorthNetInFlowintSGT北向资金净流入
sgtNorthBalanceByDayintSGT北向当日资金余额
sgtSouthNetInFlowintSGT南向资金净流入
sgtSouthBalanceByDayintSGT南向当日资金余额

示例:

# coding = gbk
def init(C):
    return
# 获取市场北向数据
def handlebar(C):
    print(C.get_north_finance_change('1d'))

ContextInfo.get_hkt_details - 获取指定品种的持股明细

原型

ContextInfo.get_hkt_details(stockcode)

释义

获取指定品种的持股明细

参数

参数名称数据类型描述
stockcodestring必须是'stock.market'形式

返回值

  • 根据stockcode返回一个dict,该字典的key值是北向持股明细数据的时间戳,其值仍然是一个dict,其值的key值是北向持股明细数据的字段类型,其值是对应字段的值,该字典数据key值有:
参数名称数据类型/单位描述
stockCodestr股票代码
ownSharesCompanystr机构名称
ownSharesAmountint持股数量
ownSharesMarketValuefloat持股市值
ownSharesRatiofloat持股数量占比
ownSharesNetBuyfloat净买入金额(当日持股-前一日持股)

示例:

# coding = gbk
def init(C):
    return
def handlebar(C):
    data = C.get_hkt_details('600000.SH')
    print(data)

ContextInfo.get_hkt_statistics - 获取指定品种的持股统计

原型

ContextInfo.get_hkt_statistics(stockcode)

释义

获取指定品种的持股统计

参数

字段名数据类型解释
stockcodestring必须是'stock.market'形式

返回值

根据stockcode返回一个dict,该字典的key值是北向持股统计数据的时间戳,其值仍然是一个dict,其值的key值是北向持股统计数据的字段类型,其值是对应字段的值,该字典数据key值有:

字段名数据类型解释
stockCodestring股票代码
ownSharesAmountfloat持股数量,单位:股
ownSharesMarketValuefloat持股市值,单位:元
ownSharesRatiofloat持股数量占比,单位:%
ownSharesNetBuyfloat净买入,单位:元,浮点数(当日持股-前一日持股)

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):

	print(C.get_hkt_statistics('600000.SH'))

get_etf_info - 根据ETF基金代码获取ETF申赎清单及对应成分股数据

原型

get_etf_info(stockcode)

释义

根据ETF基金代码获取ETF申赎清单及对应成分股数据,每日盘前更新

参数

字段名数据类型解释
stockcodestringETF基金代码如"510050.SH"

返回值

一个多层嵌套的dict

示例

# coding:gbk
def init(C):
    pass
    
def handlebar(C):
    d = get_etf_info("510050.SH")
    print(d)

get_etf_iopv - 根据ETF基金代码获取ETF的基金份额参考净值

原型

get_etf_iopv(stockcode)

释义

根据ETF基金代码获取ETF的基金份额参考净值

参数

字段名数据类型解释
stockcodestringETF基金代码如"510050.SH"

返回值

float类型值,IOPV,基金份额参考净值

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	print(get_etf_iopv("510050.SH"))

ContextInfo.get_local_data - 获取本地行情数据【不推荐】

注意

本函数用于仅用于获取本地历史行情数据,使用前请确保已通过download_history_data在新窗口打开下载过历史行情数据

原型

ContextInfo.get_local_data(
    stock_code,
    start_time='',
    end_time='',
    period='1d',
    divid_type='none',
    count=-1)

释义

获取本地行情数据

参数

字段名数据类型解释
stock_codestring默认参数,合约代码格式为 code.market,不指定时为当前图合约
start_timestring默认参数,开始时间,格式为 '20171209' 或 '20171209010101'
end_timestring默认参数,结束时间,格式同 start_time
periodstring默认参数,K线类型,可选值包括:
'tick':分笔线(只用于获取'quoter'字段数据)、'realtime': 实时线、'1d':日线
'md':多日线、'1m':1分钟线、'3m':3分钟线
'5m':5分钟线、'15m':15分钟线、'30m':30分钟线
'mm':多分钟线、'1h':小时线、'mh':多小时线
'1w':周线、'1mon':月线、'1q':季线
'1hy':半年线、'1y':年线
dividend_typestring除复权种类,可选值:
'none':不复权
'front':向前复权
'back':向后复权
'front_ratio':等比向前复权
'back_ratio':等比向后复权
countintcount 大于等于0时:
如果指定了 start_timeend_time,则以 end_time 为基准向前取 count 条数据;
如果 start_timeend_time 缺省,则默认取本地数据最新的 count 条数据;
如果 start_timeend_timecount 都缺省时,则默认取本地全部数据。

返回值

返回一个dict,键值为timetag,value为另一个dict(valuedict)

  • period='tick'时函数获取分笔数据,valuedict字典数据key值有:
字段数据类型含义
lastPricefloat最新价
openfloat开盘价
highfloat最高价
lowfloat最低价
lastClosefloat前收盘价
amountfloat成交额
volumefloat成交量
pvolumefloat原始成交量
stockStatusint作废 参考openInt
openIntfloat若是股票,则openInt含义为股票状态,非股票则是持仓量openInt字段说明在新窗口打开
lastSettlementPricefloat昨结算价
askPricelist委卖价
bidPricelist委买价
askVollist委卖量
bidVollist委买量
settlementPricefloat今结算价
  • period为其他值时,valuedict字典数据key值有:
字段名数据类型解释
amountfloat成交额
volumefloat成交量
openfloat开盘价
highfloat最高价
lowfloat最低价
closefloat收盘价

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	data = C.get_local_data(stock_code='600000.SH',start_time='20220101',end_time='20220131',period='1d',divid_type='none')
	print(data)

ContextInfo.get_history_data - 获取历史行情数据【不推荐】

警告

  1. 此函数已不推荐使用,推荐使用ContextInfo.get_market_data_ex()在新窗口打开
  2. 此函数使用前需要先通过ContextInfo.set_universe()设定股票池

原型

ContextInfo.get_history_data(
    len, 
    period, 
    field, 
    dividend_type = 0,
    skip_paused = True)

释义

获取历史行情数据

参数

名称类型描述
lenint需获取的历史数据长度
periodstring需获取的历史数据周期,可选值包括:
'tick':分笔线、 '1d':日线、 '1m':1分钟线
'3m':3分钟线、 '5m':5分钟线、 '15m':15分钟线
'30m':30分钟线、 '1h':小时线、 '1w':周线
'1mon':月线、 '1q':季线、 '1hy':半年线
'1y':年线
fieldstring需获取的历史数据的类型,可选值包括:
'open':开盘价
'high':最高价
'low':最低价
'close':收盘价
'quoter':详细报价(结构见 get_market_data 方法)
dividend_typeint默认参数,除复权,默认不复权,可选值包括:
0:不复权
1:向前复权
2:向后复权
3:等比向前复权
4:等比向后复权
skip_pausedbool默认参数,是否停牌填充,默认填充

返回值 一个字典dict结构,key 为 stockcode.market, value 为行情数据 list,list 中第 0 位为最早的价格,第 1 位为次早价格,依次下去。

示例

# coding = gbk
def init(C):
	C.stock_list = ["000001.SZ","600519.SH", "510050.SH"]
	C.set_universe(C.stock_list)

def handlebar(C):
	data = C.get_history_data(2, '1d', 'close')
	print(data)

ContextInfo.get_market_data() - 获取行情数据【不推荐】

原型

ContextInfo.get_market_data(
    fields, 
    stock_code = [], 
    start_time = '', 
    end_time = '',
    skip_paused = True, 
    period = 'follow', 
    dividend_type = 'follow', 
    count = -1)

释义

获取行情数据

参数

字段名数据类型解释
fields字段列表可选值包括:
'open': 开
'high': 高
'low': 低
'close': 收
'volume': 成交量
'amount': 成交额
'settle': 结算价
'quoter': 分笔数据(包括历史)
stock_code默认参数,合约代码列表合约格式为 code.market,例如 '600000.SH',不指定时为当前图合约
start_time默认参数,时间戳开始时间,格式为 '20171209' 或 '20171209010101'
end_time默认参数,时间戳结束时间,格式为 '20171209' 或 '20171209010101'
skip_paused默认参数,布尔值如何处理停牌数据:
true:如果是停牌股,会自动填充未停牌前的价格作为停牌日的价格
false:停牌数据为 NaN
periodstring需获取的历史数据周期,可选值包括:
'tick':分笔线、 '1d':日线、 '1m':1分钟线
'3m':3分钟线、 '5m':5分钟线、 '15m':15分钟线
'30m':30分钟线、 '1h':小时线、 '1w':周线
'1mon':月线、 '1q':季线、 '1hy':半年线
'1y':年线
dividend_type默认参数,字符串缺省值为 'none',除复权,可选值包括:
'none':不复权
'front':向前复权
'back':向后复权
'front_ratio':等比向前复权
'back_ratio':等比向后复权
count默认参数,整数缺省值为 -1。当大于等于 0 时,效果与 get_history_data 保持一致
  • count参数设置的几种情况
count 取值时间设置是否生效开始时间和结束时间设置效果
count >= 0生效返回数量取决于开始时间与结束时间和count与结束时间的交集
count = -1生效同时设置开始时间和结束时间,在所设置的时间段内取值
count = -1生效开始时间结束时间都不设置,取当前最新bar的值
count = -1生效只设置开始时间,取所设开始时间到当前时间的值
count = -1生效只设置结束时间,取股票上市第一根 bar 到所设结束时间的值

返回值

  • 返回值根据传入的参数情况,会返回不同类型的结果
count字段数量股票数量时间点返回类型
=-1=1=1=1float
=-1>1=1默认值pandas.Series
>=-1>=1=1>=1pandas.DataFrame(字段数量和时间点不同时为1)
=-1>=1>1默认值pandas.DataFrame
>1=1=1=1pandas.DataFrame
>=-1>=1>1>=1pandas.Panel

示例

# coding = gbk
def init(C):
    C.stock_list = ["000001.SZ","600519.SH", "510050.SH"]
	
def handlebar(C):
    data1 = C.get_market_data(["close"],["000001.SZ"],start_time = "20231106",end_time = "20231106", count = -1) # 返回float值
    data2 = C.get_market_data(["close","open"],["000001.SZ"], count = -1) # 返回pandas.Series
    data3 = C.get_market_data(["close","open"],C.stock_list, count = -1) # 返回pandas.DataFrame
    data4 = C.get_market_data(["open","high", "low", "close"],C.stock_list,count = 20) # 返回pandas.Panel

    print(data1)
    print(data2)
    print(data3)
    print(data4)


获取财务数据

获取财务数据前,请先通过界面端数据管理 - 财务数据下载

财务数据下载

提示

财务数据接口通过读取下载本地的数据取数,使用前需要补充本地数据。除公告日期和报表截止日期为时间戳毫秒格式其他单位为元或 %,数据主要包括资产负债表(ASHAREBALANCESHEET)、利润表(ASHAREINCOME)、现金流量表(ASHARECASHFLOW)、股本表(CAPITALSTRUCTURE)的主要字段数据以及经过计算的主要财务指标数据(PERSHAREINDEX)。建议使用本文档对照表中的英文表名和迅投英文字段,表名不区分大小写。

ContextInfo.get_financial_data - 获取财务数据

财务数据接口有两种用法,入参和返回值不同,具体如下

用法1

原型

ContextInfo.get_financial_data(fieldList, stockList, startDate, enDate, report_type = 'announce_time')

释义

获取财务数据,方法1

参数

字段名类型释义与用例
fieldListList(必须)财报字段列表:['ASHAREBALANCESHEET.fix_assets', '利润表.净利润']
stockListList(必须)股票列表:['600000.SH', '000001.SZ']
startDateStr(必须)开始时间:'20171209'
endDateStr(必须)结束时间:'20171212'
report_typeStr(可选)报表时间类型,可缺省,默认是按照数据的公告期为区分取数据,设置为 'report_time' 为按照报告期取数据,' announce_time' 为按照公告日期取数据

提示

选择按照公告期取数和按照报告期取数的区别:

报告日期是指财务报告所覆盖的会计时间段,而公告日期是指公司向外界公布该报告的具体时间点

若指定report_type为report_time,则不会考虑财报的公告日期,可能会取到未来数据

若指定report_type为announce_time,则会按财报实际发布日期返回数据,不会取到未来数据

例:

返回值

函数根据stockList代码列表,startDate,endDate时间范围,返回不同的的数据类型。如下:

代码数量时间范围返回类型
=1=1pandas.Series (index = 字段)
=1>1pandas.DataFrame (index = 时间, columns = 字段)
>1=1pandas.DataFrame (index = 代码, columns = 字段)
>1>1pandas.Panel (items = 代码, major_axis = 时间, minor_axis = 字段)

示例

# coding:gbk
def init(C):
  pass

def handlebar(C):

  #取总股本和净利润
  fieldList = ['CAPITALSTRUCTURE.total_capital', '利润表.净利润']   
  stockList = ["000001.SZ","000002.SZ","430017.BJ"]
  startDate = '20171209'
  endDate = '20231204'
  data = C.get_financial_data(fieldList, stockList, startDate, endDate, report_type = 'report_time')
  print(data)

用法2

原型

ContextInfo.get_financial_data(tabname, colname, market, code, report_type = 'report_time', barpos)

与用法 1 可同时使用

释义

获取财务数据,方法2

参数

字段名类型释义与用例
tabnameStr(必须)表名:'ASHAREBALANCESHEET'
colnameStr(必须)字段名:'fix_assets'
marketStr(必须)市场:'SH'
codeStr(必须)代码:'600000'
report_typeStr(可选)报表时间类型,可缺省,默认是按照数据的公告期为区分取数据,设置为 'report_time' 为按照报告期取数据,' announce_time ' 为按照公告日期取数据
barposnumber当前 bar 的索引

返回值

float :所取字段的数值

示例

# coding:gbk
def init(C):
  pass
	
def handlebar(C):
  index = C.barpos
  data = C.get_financial_data('ASHAREBALANCESHEET', 'fix_assets', 'SH', '600000', index)
  print(data)

ContextInfo.get_raw_financial_data - 获取原始财务数据

提示

取原始财务数据,与get_financial_data相比不填充每个交易日的数据

原型

ContextInfo.get_raw_financial_data(fieldList,stockList,startDate,endDate,report_type='announce_time')

释义

取原始财务数据,与get_financial_data相比不填充每个交易日的数据

参数

字段名类型释义与用例
fieldListList(必须)字段列表:例如 ['资产负债表.固定资产','利润表.净利润']
stockListList(必须)股票列表:例如['600000.SH','000001.SZ']
startDateStr(必须)开始时间:例如 '20171209'
endDateStr(必须)结束时间:例如 '20171212'
report_typeStr(可选)时间类型,可缺省,默认是按照数据的公告期为区分取数据,设置为 'report_time' 为按照报告期取数据,可选值:'announce_time','report_time'

返回值

函数根据stockList代码列表,startDate,endDate时间范围,返回不同的的数据类型。如下:

代码数量时间范围返回类型
=1=1pandas.Series (index = 字段)
=1>1pandas.DataFrame (index = 时间, columns = 字段)
>1=1pandas.DataFrame (index = 代码, columns = 字段)
>1>1pandas.Panel (items = 代码, major_axis = 时间, minor_axis = 字段)

示例

#encoding:gbk
'''
获取财务数据
'''
import pandas as pd
import numpy as np
import talib

def to_zw(a):
	'''0.中文价格字符串'''
	import numpy as np
	try:
		header = '' if a > 0 else '-'
		if np.isnan(a):
			return '问题数据'
		if abs(a) < 1000:
			return header + str(int(a)) + ""
		if abs(a) < 10000:
			return header + str(int(a))[0] + ""
		if abs(a) < 100000000:
			return header + str(int(a))[:-4] + "" + str(int(a))[-4] + ''
		else:
			return header + str(int(a))[:-8] + "亿" + str(int(a))[-8:-4] + ''
	except:
		print(f"问题数据{a}")
		return '问题数据'


def after_init(C):
	fieldList = ['ASHAREINCOME.net_profit_excl_min_int_inc','ASHAREINCOME.revenue'] # 字段表
	stockList = ['000001.SZ'] # 标的
	a=C.get_raw_financial_data(fieldList,stockList,'20150101','20300101',report_type = 'report_time') # 获取原始财务数据
	# print(a)
	for stock in a:
		for key in a[stock]:
			for t in a[stock][key]:
				print(key, timetag_to_datetime(int(t),'%Y%m%d'), to_zw(a[stock][key][t]))
			print('-' *22)
		print('-' *22)

ContextInfo.get_last_volume - 获取最新流通股本

原型

ContextInfo.get_last_volume(stockcode)

释义

获取最新流通股本

参数

字段名数据类型解释
stockcodestring标的名称,必须是 'stock.market' 形式

返回值

int类型值,代表流通股本数量

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	data = C.get_last_volume("000001.SZ")
	print(data)

ContextInfo.get_total_share - 获取总股数

原型

ContextInfo.get_total_share(stockcode)

释义

获取总股数

参数

字段名数据类型解释
stockcodestring股票代码,缺省值 '',默认为当前图代码, 如:'600000.SH'

返回值

int:总股数

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	data = C.get_total_share('600000.SH')
	print(data)

财务数据字段表

资产负债表 (ASHAREBALANCESHEET)

中文字段迅投字段
应收利息int_rcv
可供出售金融资产fin_assets_avail_for_sale
持有至到期投资held_to_mty_invest
长期股权投资long_term_eqy_invest
固定资产fix_assets
无形资产intang_assets
递延所得税资产deferred_tax_assets
资产总计tot_assets
交易性金融负债tradable_fin_liab
应付职工薪酬empl_ben_payable
应交税费taxes_surcharges_payable
应付利息int_payable
应付债券bonds_payable
递延所得税负债deferred_tax_liab
负债合计tot_liab
实收资本(或股本)cap_stk
资本公积金cap_rsrv
盈余公积金surplus_rsrv
未分配利润undistributed_profit
归属于母公司股东权益合计tot_shrhldr_eqy_excl_min_int
少数股东权益minority_int
负债和股东权益总计tot_liab_shrhldr_eqy
所有者权益合计total_equity
货币资金cash_equivalents
应收票据bill_receivable
应收账款account_receivable
预付账款advance_payment
其他应收款other_receivable
其他流动资产other_current_assets
流动资产合计total_current_assets
存货inventories
在建工程constru_in_process
工程物资construction_materials
长期待摊费用long_deferred_expense
非流动资产合计total_non_current_assets
短期借款shortterm_loan
应付股利dividend_payable
其他应付款other_payable
一年内到期的非流动负债non_current_liability_in_one_year
其他流动负债other_current_liability
长期应付款longterm_account_payable
应付账款accounts_payable
预收账款advance_peceipts
流动负债合计total_current_liability
应付票据notes_payable
长期借款long_term_loans
专项应付款grants_received
其他非流动负债other_non_current_liabilities
非流动负债合计non_current_liabilities
专项储备specific_reserves
商誉goodwill
报告截止日m_timetag
公告日m_anntime

利润表 (ASHAREINCOME)

中文字段迅投字段
投资收益plus_net_invest_inc
联营企业和合营企业的投资收益incl_inc_invest_assoc_jv_entp
营业税金及附加less_taxes_surcharges_ops
营业总收入revenue
营业总成本total_operating_cost
营业收入revenue_inc
营业成本total_expense
资产减值损失less_impair_loss_assets
营业利润oper_profit
营业外收入plus_non_oper_rev
营业外支出less_non_oper_exp
利润总额tot_profit
所得税inc_tax
净利润net_profit_incl_min_int_inc
归母净利润net_profit_excl_min_int_inc
管理费用less_gerl_admin_exp
销售费用sale_expense
财务费用financial_expense
综合收益总额total_income
归属于少数股东的综合收益总额total_income_minority
公允价值变动收益change_income_fair_value
已赚保费earned_premium
报告截止日m_timetag
公告日m_anntime

现金流量表 (ASHARECASHFLOW)

中文字段迅投字段
收到其他与经营活动有关的现金other_cash_recp_ral_oper_act
经营活动现金流入小计stot_cash_inflows_oper_act
支付给职工以及为职工支付的现金cash_pay_beh_empl
支付的各项税费pay_all_typ_tax
支付其他与经营活动有关的现金other_cash_pay_ral_oper_act
经营活动现金流出小计stot_cash_outflows_oper_act
经营活动产生的现金流量净额net_cash_flows_oper_act
取得投资收益所收到的现金cash_recp_return_invest
处置固定资产、无形资产和其他长期投资收到的现金net_cash_recp_disp_fiolta
投资活动现金流入小计stot_cash_inflows_inv_act
投资支付的现金cash_paid_invest
购建固定资产、无形资产和其他长期投资支付的现金cash_pay_acq_const_fiolta
支付其他与投资的现金other_cash_pay_ral_inv_act
投资活动产生的现金流出小计stot_cash_outflows_inv_act
投资活动产生的现金流量净额net_cash_flows_inv_act
吸收投资收到的现金cash_recp_cap_contrib
取得借款收到的现金cash_recp_borrow
收到其他与筹资活动有关的现金other_cash_recp_ral_fnc_act
筹资活动现金流入小计stot_cash_inflows_fnc_act
偿还债务支付现金cash_prepay_amt_borr
分配股利、利润或偿付利息支付的现金cash_pay_dist_dpcp_int_exp
支付其他与筹资的现金other_cash_pay_ral_fnc_act
筹资活动现金流出小计stot_cash_outflows_fnc_act
筹资活动产生的现金流量净额net_cash_flows_fnc_act
汇率变动对现金的影响eff_fx_flu_cash
现金及现金等价物净增加额net_incr_cash_cash_equ
销售商品、提供劳务收到的现金goods_sale_and_service_render_cash
收到的税费与返还tax_levy_refund
购买商品、接受劳务支付的现金goods_and_services_cash_paid
处置子公司及其他收到的现金net_cash_deal_subcompany
其中子公司吸收现金cash_from_mino_s_invest_sub
处置固定资产、无形资产和其他长期资产支付的现金净额fix_intan_other_asset_dispo_cash_payment
报告截止日m_timetag
公告日m_anntime

股本表 (CAPITALSTRUCTURE)

中文字段迅投字段
总股本total_capital
已上市流通A股circulating_capital
自由流通股本free_float_capital(旧版本为freeFloatCapital
限售流通股份restrict_circulating_capital
变动日期m_timetag
公告日m_anntime

主要指标 (PERSHAREINDEX)

中文字段迅投字段
每股经营活动现金流量s_fa_ocfps
每股净资产s_fa_bps
基本每股收益s_fa_eps_basic
稀释每股收益s_fa_eps_diluted
每股未分配利润s_fa_undistributedps
每股资本公积金s_fa_surpluscapitalps
扣非每股收益adjusted_earnings_per_share
主营收入inc_revenue
毛利润inc_gross_profit
利润总额inc_profit_before_tax
净利润du_profit
归属于母公司所有者的净利润inc_net_profit
扣非净利润adjusted_net_profit
净资产收益率du_return_on_equity
销售毛利率sales_gross_profit
主营收入同比增长inc_revenue_rate
净利润同比增长du_profit_rate
归属于母公司所有者的净利润同比增长inc_net_profit_rate
扣非净利润同比增长adjusted_net_profit_rate
营业总收入滚动环比增长inc_total_revenue_annual
归属净利润滚动环比增长inc_net_profit_to_shareholders_annual
扣非净利润滚动环比增长adjusted_profit_to_profit_annual
加权净资产收益率equity_roe
摊薄净资产收益率net_roe
摊薄总资产收益率total_roe
毛利率gross_profit
净利率net_profit
实际税率actual_tax_rate
预收款营业收入pre_pay_operate_income
销售现金流营业收入sales_cash_flow
资产负债比率gear_ratio
存货周转率inventory_turnover

十大股东/十大流通股东 (TOP10HOLDER/TOP10FLOWHOLDER)

提示

对于公告内披露的十大股东数量大于10条的,我们会保留原始数据,以保持和公司公告信息一致

中文字段迅投字段
公告日期declareDate
截止日期endDate
股东名称name
股东类型type
持股数量quantity
变动原因reason
持股比例ratio
股份性质nature
持股排名rank

股东数 (SHAREHOLDER)

中文字段迅投字段
公告日期declareDate
截止日期endDate
股东总数shareholder
A股东户数shareholderA
B股东户数shareholderB
H股东户数shareholderH
已流通股东户数shareholderFloat
未流通股东户数shareholderOther

获取期权信息

ContextInfo.get_option_detail_data - 获取指定期权品种的详细信息

原型

ContextInfo.get_option_detail_data(optioncode)

释义

获取指定期权品种的详细信息

参数

字段名数据类型解释
optioncodestring期权代码,如'10001506.SHO',当填写空字符串时候默认为当前主图的期权品种

返回值dict,字段如下:

字段类型说明
ExchangeIDstr期权市场代码
InstrumentIDstr期权代码
ProductIDstr期权标的的产品ID
OpenDateint发行日期
ExpireDateint到期日
PreClosefloat前收价格
SettlementPricefloat前结算价格
UpStopPricefloat当日涨停价
DownStopPricefloat当日跌停价
LongMarginRatiofloat多头保证金率
ShortMarginRatiofloat空头保证金率
PriceTickfloat最小变价单位
VolumeMultipleint合约乘数
MaxMarketOrderVolumeint涨跌停价最大下单量
MinMarketOrderVolumeint涨跌停价最小下单量
MaxLimitOrderVolumeint限价单最大下单量
MinLimitOrderVolumeint限价单最小下单量
OptUnitint期权合约单位
MarginUnitfloat期权单位保证金
OptUndlCodestr期权标的证券代码
OptUndlMarketstr期权标的证券市场
OptExercisePricefloat期权行权价
NeeqExeTypestr全国股转转让类型
OptUndlRiskFreeRatefloat期权标的无风险利率
OptUndlHistoryRatefloat期权标的历史波动率
EndDelivDateint期权行权终止日
optTypestr期权类型

示例

#encoding:gbk
def init(ContextInfo):
  pass

def after_init(ContextInfo):
  print(ContextInfo.get_option_detail_data('10002235.SHO'))

ContextInfo.get_option_list - 获取指定期权列表

原型

ContextInfo.get_option_list(undl_code,dedate,opttype,isavailable)

释义

获取指定期权列表。如获取历史期权,需先下载过期合约列表

参数

字段名数据类型解释
undl_codestring期权标的代码,如'510300.SH'
dedatestring期权到期月或当前交易日期,"YYYYMM"格式为期权到期月,"YYYYMMDD"格式为获取当前日期交易的期权
opttypestring期权类型,默认值为空,"CALL","PUT",为空时认购认沽都取
isavailablebool是否可交易,当dedate的格式为"YYYYMMDD"格式为获取当前日期交易的期权时,isavailable为True时返回当前可用,为False时返回当前和历史可用

返回值

list,期权合约列表

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	# 获取到期月份为202101的上交所510300ETF认购合约
	data1=C.get_option_list('510300.SH','202101',"CALL")

	# 获取20210104当天上交所510300ETF可交易的认购合约
	data2=C.get_option_list('510300.SH','20210104',"CALL",True)

	# 获取20210104当天上交所510300ETF已经上市的认购合约(包括退市)
	data3=C.get_option_list('510300.SH','20210104',"CALL",False)

ContextInfo.get_option_undl_data - 获取指定期权标的对应的期权品种列表

原型

ContextInfo.get_option_undl_data(undl_code_ref)

释义

获取指定期权标的对应的期权品种列表

参数

字段名数据类型解释
undl_code_refstring期权标的代码,如'510300.SH',传空字符串时获取全部标的数据

返回值

指定期权标的代码时返回对应该标的的期权合约列表list

期权标的代码为空字符串时返回全部标的对应的品种列表的字典dict

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):

	print(C.get_option_undl_data('510300.SH')[:30])

ContextInfo.bsm_price - 基于BS模型计算欧式期权理论价格

原型

ContextInfo.bsm_price(optionType,objectPrices,strikePrice,riskFree,sigma,days,dividend)

释义

基于Black-Scholes-Merton模型,输入期权标的价格、期权行权价、无风险利率、期权标的年化波动率、剩余天数、标的分红率、计算期权的理论价格

参数

字段类型说明
optionTypestr期权类型,认购:'C',认沽:'P'
objectPricesfloat期权标的价格,可以是价格列表或者单个价格
strikePricefloat期权行权价
riskFreefloat无风险收益率
sigmafloat标的波动率
daysint剩余天数
dividendfloat分红率

返回

提示

  • objectPrices为float时,返回float
  • objectPrices为list时,返回list
  • 计算结果最小值0.0001,结果保留4位小数,输入非法参数返回nan
#encoding:gbk
import numpy as np


def init(ContextInfo):
  pass

def after_init(ContextInfo):
  object_prices=list(np.arange(3,4,0.01));
  #计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0,标的年化波动率为23%时标的价格从3元到4元变动过程中期权理论价格序列
  prices=ContextInfo.bsm_price('C',object_prices,3.5,0.03,0.23,15,0)
  print(prices)
  #计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0,标的年化波动率为23%时标的价格为3.51元的平值期权的理论价格
  price=ContextInfo.bsm_price('C',3.51,3.5,0.03,0.23,15,0)
  print(price)

ContextInfo.bsm_iv - 基于BS模型计算欧式期权隐含波动率

原型

ContextInfo.bsm_iv(optionType,objectPrices,strikePrice,optionPrice,riskFree,days,dividend)

释义 基于Black-Scholes-Merton模型,输入期权标的价格、期权行权价、期权现价、无风险利率、剩余天数、标的分红率,计算期权的隐含波动率

参数

字段类型说明
optionTypestr期权类型,认购:'C',认沽:'P'
objectPricesfloat期权标的价格,可以是价格列表或者单个价格
strikePricefloat期权行权价
riskFreefloat无风险收益率
sigmafloat标的波动率
daysint剩余天数
dividendfloat分红率

返回

double

#encoding:gbk
import numpy as np

def init(ContextInfo):
    pass

def after_init(ContextInfo):
    # 计算剩余15天的行权价3.5的认购期权,在无风险利率3%,分红率为0时,标的现价3.51元,期权价格0.0725元时的隐含波动率
    iv=ContextInfo.bsm_iv('C',3.51,3.5,0.0725,0.03,15)
    print(iv)

获取合约信息

ContextInfo.get_instrument_detail - 根据代码获取合约详细信息

提示

旧版本客户端中,函数名为ContextInfo.get_instrumentdetail;不支持iscomplete参数

原型


ContextInfo.get_instrument_detail(stockcode,iscomplete = Fasle)

释义

根据代码获取合约详细信息

参数

字段名数据类型解释
stockcodestring标的名称,必须是 'stock.market' 形式
iscompletebool是否获取全部字段,默认为False

返回值

根据stockcode返回一个dict。该字典数据key值有:

名称类型描述
ExchangeIDstring合约市场代码
InstrumentIDstring合约代码
InstrumentNamestring合约名称
ProductIDstring合约的品种ID(期货)
ProductNamestring合约的品种名称(期货)
ProductTypeint合约的类型, 默认-1,枚举值可参考下方说明
ExchangeCodestring交易所代码
UniCodestring统一规则代码
CreateDatestr创建日期
OpenDatestr上市日期(特殊值情况见表末)
ExpireDateint退市日或者到期日(特殊值情况见表末)
PreClosefloat前收盘价格
SettlementPricefloat前结算价格
UpStopPricefloat当日涨停价
DownStopPricefloat当日跌停价
FloatVolumefloat流通股本(注意,部分低等级客户端中此字段为FloatVolumn)
TotalVolumefloat总股本(注意,部分低等级客户端中此字段为FloatVolumn)
LongMarginRatiofloat多头保证金率
ShortMarginRatiofloat空头保证金率
PriceTickfloat最小价格变动单位
VolumeMultipleint合约乘数(对期货以外的品种,默认是1)
MainContractint主力合约标记,1、2、3分别表示第一主力合约,第二主力合约,第三主力合约
LastVolumeint昨日持仓量
InstrumentStatusint合约停牌状态(<=0:正常交易(-1:复牌);>=1停牌天数;)
IsTradingbool合约是否可交易
IsRecentbool是否是近月合约
ChargeTypeint期货和期权手续费方式
ChargeOpenfloat开仓手续费(率)
ChargeClosefloat平仓手续费(率)
ChargeTodayOpenfloat开今仓(日内开仓)手续费(率)
ChargeTodayClosefloat平今仓(日内平仓)手续费(率)
OptionTypeint期权类型
OpenInterestMultipleint交割月持仓倍数

提示

字段OpenDate有以下几种特殊值: 19700101=新股, 19700102=老股东增发, 19700103=新债, 19700104=可转债, 19700105=配股, 19700106=配号 字段ExpireDate为0 或 99999999 时,表示该标的暂无退市日或到期日

字段ProductType 对于股票以外的品种,有以下几种值

国内期货市场:1-期货 2-期权(DF SF ZF INE GF) 3-组合套利 4-即期 5-期转现 6-期权(IF) 7-结算价交易(tas) 沪深股票期权市场:0-认购 1-认沽 外盘: 1-100:期货, 101-200:现货, 201-300:股票相关 1:股指期货 2:能源期货 3:农业期货 4:金属期货 5:利率期货 6:汇率期货 7:数字货币期货 99:自定义合约期货 107:数字货币现货 201:股票 202:GDR 203:ETF 204:ETN 300:其他

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	data = C.get_instrumentdetail("000001.SZ")
	print(data)

get_st_status - 获取历史st状态

提示

本函数需要下载历史ST数据(过期合约K线),可通过界面端数据管理 - 过期合约数据下载

原型

get_st_status(stockcode)

释义

获取历史st状态

参数

字段名数据类型解释
stockcodestring股票代码,如000004.SZ(可为空,为空时取主图代码)

返回值

st范围字典 格式 {'ST': [['20210520', '20380119']], '*ST': [['20070427', '20080618'], ['20200611', '20210520']]}

示例:

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	print(get_st_status('600599.SH'))

ContextInfo.get_his_st_data - 获取某只股票ST的历史

提示

本函数需要下载历史ST数据(过期合约K线),可通过界面端数据管理 - 过期合约数据下载

原型

ContextInfo.get_his_st_data(stockcode)

释义

获取某只股票ST的历史

参数

字段名数据类型解释
stockcodestring股票代码,'stkcode.market',如'000004.SZ'

返回值

dict,st历史,key为ST,*ST,PT,历史未ST会返回{}

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	print(C.get_his_st_data('000004.SZ'))

ContextInfo.get_main_contract - 获取期货主力合约

提示

  1. 该函数支持实盘/回测两种模式
  2. 若要使用该函数获取历史主力合约,必须要先下载历史主力合约数据
  3. 历史主力合约数据目前通过界面端数据管理 - 过期合约数据 - 历史主力合约下载

原型

ContextInfo.get_main_contract(codemarket)
ContextInfo.get_main_contract(codemarket,date="")
ContextInfo.get_main_contract(codemarket,startDate="",endDate="")

释义

获取当前期货主力合约

参数

字段名数据类型解释
codemarketstring合约和市场,合约格式为品种名加00,如IF00.IF,zn00.SF
startDatestring开始日期(可以不写),如20180608
endDatestring结束日期(可以不写),如20190608

返回值

str,合约代码

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	symbol1 = C.get_main_contract('IF00.IF')# 获取当前主力合约

	symbol2 = C.get_main_contract('IF00.IF',"20190101")# 获取指定日期主力合约

	symbol3 = C.get_main_contract('IF00.IF',"20181101","20190101") # 获取时间段内全部主力合约

	print(symbol1, symbol2)
	print("="*10)
	print(symbol3)

ContextInfo.get_contract_multiplier - 获取合约乘数

原型

ContextInfo.get_contract_multiplier(contractcode)

释义

获取合约乘数

参数

字段名数据类型解释
contractcodestring合约代码,格式为 'code.market',例如 'IF1707.IF'

返回值int,表示合约乘数

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	multiplier = C.get_contract_multiplier("rb2401.SF")
	print(multiplier)

ContextInfo.get_contract_expire_date - 获取期货合约到期日

原型

ContextInfo.get_contract_expire_date(codemarket)

释义

获取期货合约到期日

参数

字段名数据类型解释
Codemarketstring合约和市场,如IF00.IF,zn00.SF

返回值str,合约到期日

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	data = C.get_contract_expire_date("IF2311.IF")
	# print(type(data))
	print(data)

ContextInfo.get_his_contract_list - 获取市场已退市合约

原型

ContextInfo.get_his_contract_list(market)

释义

获取市场已退市合约,需要手动补充过期合约列表

参数

字段名数据类型解释
marketstring市场,SH,SZ,SHO,SZO,IF等

返回值

list,合约代码列表

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):

	print(C.get_his_contract_list('SHO')[:30])

获取除复权信息

ContextInfo.get_divid_factors - 获取除权除息日和复权因子

原型

ContextInfo.get_divid_factors(stock.market)

释义

获取除权除息日和复权因子

参数

字段名数据类型解释
stock.marketstring股票代码.市场代码,如 '600000.SH'

返回值

dict

key:时间戳,

value:list[每股红利,每股送转,每股转赠,配股,配股价,是否股改,复权系数]

输入除权除息日非法时候返回空dict,合法时返回输入日期的对应的dict,不输入时返回查询股票的所有除权除息日及对应dict

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	Result = C.get_divid_factors('600000.SH')
	print(Result)

获取指数权重

ContextInfo.get_weight_in_index - 获取某只股票在某指数中的绝对权重

原型

ContextInfo.get_weight_in_index(indexcode, stockcode)

释义

获取某只股票在某指数中的绝对权重

参数

字段名数据类型解释
indexcodestring指数代码,格式为 'stockcode.market',例如 '000300.SH'
stockcodestring股票代码,格式为 'stockcode.market',例如 '600004.SH'

返回值

float:返回的数值单位是 %,如 1.6134 表示权重是 1.6134%

示例

# coding:gbk
def init(C):
	pass
	
def handlebar(C):
	data = C.get_weight_in_index('000300.SH', '000002.SZ')
	print(data)

获取成分股信息

ContextInfo.get_stock_list_in_sector - 获取板块成份股

原型

ContextInfo.get_stock_list_in_sector(sectorname, realtime)

释义

获取板块成份股,支持客户端左侧板块列表中任意的板块,包括自定义板块

参数

字段名数据类型解释
sectornamestring板块名,如 '沪深300','中证500','上证50','我的自选'等
realtime毫秒级时间戳实时数据的毫秒级时间戳

返回值

list:内含成份股代码,代码形式为 'stockcode.market',如 '000002.SZ'

示例

# coding:gbk
def init(C):
	pass
def handlebar(C):
	print(C.get_stock_list_in_sector('上证50'))

获取交易日信息

注意

  1. 该函数只能在after_init;handlebar运行

ContextInfo.get_trading_dates - 获取交易日信息

原型

ContextInfo.get_trading_dates(stockcode,start_date,end_date,count,period='1d')

释义

ContextInfo.get_trading_dates(stockcode,start_date,end_date,count,period='1d')

参数

字段名数据类型解释
stockcodestring股票代码,缺省值''默认为当前图代码,如:'600000.SH'
start_datestring开始时间,缺省值''为空时不使用,如:'20170101','20170101000000'
end_datestring结束时间,缺省值''默认为当前bar的时间,如:'20170102','20170102000000'
countintK线个数,必须大于0,取包括end_date往前的count个K线,start_date不为空时此值无效,写为1即可
periodstringk线类型,'1d':日线,'1m':分钟线,'3m':三分钟线,'5m':5分钟线,'15m':15分钟线,'30m':30分钟线,'1h':小时线,'1w':周线,'1mon':月线,'1q':季线,'1hy':半年线,'1y':年线

返回值

list:K线周期(交易日)列表 period为日线时返回如['20170101','20170102',...]样式 其它返回如['20170101010000','20170102020000',...]样式

示例

# coding:gbk
def init(C):
	pass
def after_init(C):
    print(C.get_trading_dates('600000.SH','','',30,'1d'))
def handlebar(C):
	pass
上次更新:
邀请注册送VIP优惠券
分享下方的内容给好友、QQ群、微信群,好友注册您即可获得VIP优惠券
玩转qmt,上迅投qmt知识库