行情访问函数
订阅实时行情-SubscribeQuote
订阅实时行情—SubscribeQuote(code)或SubscribeQuote(codelist),订阅品种的实时行情,支持订阅单个品种和多个品种,用来驱动OnQuote事件
参数
Code:合约代码 + 市场代码,订阅单品种
Codelist 品种列表,订阅多个品种时使用
市场代码:SHSE 上交所、SZSE 深交所、SHFE 上期所、INE 上海国际能源交易中心、DCE 大连商品交易所、CZCE 郑州商品交易所、CFFEX 中金所
示例
def OnStart(context) :
print "I\'m starting..."
SubscribeQuote('m1805.DCE')
SubscribeQuote(['m1805.DCE', 'cu1805.SHFE'])
取消行情数据订阅—UnsubscribeQuote
取消行情数据订阅—UnsubscribeQuote(code)或(codelist),取消订阅品种的实时行情
参数
Code、codelist 同SubscribeQuote
示例
UnsubscribeQuote(‘m1805.DCE’)
UnsubscribeQuote([‘m1805.DCE’, ‘cu1805.SHFE’])
订阅K线数据—SubscribeBar
订阅K线数据—SubscribeBar(code,BarType),订阅品种K线数据,用来驱动OnBar事件
参数
Code:合约代码 + 市场代码
BarType K线类型,如日线周线月线分钟线
详细周期:Year 、Season 、Month 、Week 、Day、Min240、Min120、Min60、Min30、Min15、Min5、Min3、Min
示例
订阅沪铜1805的日K线数据
def OnStart(context) :
print "I\'m starting..."
SubscribeBar( "rb1901.SHFE",BarType.Day)
取消K线数据订阅—UnsubscribeBar
取消订阅K线数据—UnsubscribeBar(code,BarType),取消订阅品种K线数据
参数
Code:合约代码 + 市场代码
BarType K线类型,如日线周线月线分钟线
详细周期:Year 、Season 、Month 、Week 、Day、Min240、Min120、Min60、Min30、Min15、Min5、Min3、Min
示例
UnsubscribeBar(‘cu1805.SHFE’, BarType.Day)
取消订阅沪铜1805的日K线数据
获取实时行情数据—GetQuote
获取实时行情数据—GetQuote(code)
参数
Code:合约代码 + 市场代码,如rb1901.SHFE
返回
一个对象,拥有以下属性
- open开盘价
- high最高价
- low最低价
- now最新价
- clear结算价
- lastclose昨收
- lastclear昨结
- riselimit涨停价
- highlimit涨停价 和riselimit相同,兼容考虑
- falllimit跌停价
- lowlimit跌停价 和falllimit相同,兼容考虑
- avg 均价
- volume 成交量
- turnover 成交金额,和money一样,兼容考虑
- money 成交金额
- amount持仓量
- lastamount 昨日持仓量
- curvol 现手
- amountdiff 仓差
- volsell 内盘
- volbuy 外盘
- askprice(0) 买卖盘卖价,0表示第一档,4表示第五档。视数据源情况而定,最多10档,即取值范围是0~9。超出取值范围时将固定返回0.0,无论取价还是取量。
- askvol(0) 买卖盘卖量,0表示第一档,4表示第五档。视数据源情况而定,最多10档,即取值范围是0~9。超出取值范围时将固定返回0.0,无论取价还是取量。
- bidprice(0) 买卖盘买价,0表示第一档,4表示第五档。视数据源情况而定,最多10档,即取值范围是0~9。超出取值范围时将固定返回0.0,无论取价还是取量。
- bidvol(0) 买卖盘买量,0表示第一档,4表示第五档。视数据源情况而定,最多10档,即取值范围是0~9。超出取值范围时将固定返回0.0,无论取价还是取量。
- time 数据时间
- 注意:买卖盘数据只在tick回测和实盘的时候提供
示例
def OnQuote(context,code) :
print '获取实时行情'
dyndata = GetQuote("rb1901.SHFE")
now1 = dyndata.now
print '最新价' + str(now1)
获取历史行情数据—GetHisData
获取历史行情数据—GetHisData(Code,BarType,option)
参数
Code:合约代码 + 市场代码
BarType K线类型,如日线周线月线分钟线
详细周期:Year 、Season 、Month 、Week 、Day、Min240、Min120、Min60、Min30、Min15、Min5、Min3、Min
option 可设定前/后复权,可指定StartDate/EndDate/Count
option.WeightType:0为不复权,1为前复权,2为后复权
注意:StartDate/EndDate/Count,取两个使用,如option.StartDate = datetime.datetime(2012, 3, 5)起始,option.Count = 10 总K线数,则得到的K线数据是从12年3月5号到15号;
开始时间和结束时间,可以精确到分钟,方便夜盘交易的期货品种使用,如下例中,获取2018年12月4号晚上开始交易,到12月5号收盘一整个交易日螺纹钢1905的1分钟线;
示例
option = PBObj()
option.StartDate = datetime.datetime(2018, 12, 4,21,0)
option.EndDate = datetime.datetime(2018, 12,5,15,0)
klinedata = GetHisData("rb1905.SHFE", BarType.Min, option)
print len(klinedata)
返回
一个对象,拥有以下属性
- open开盘价
- high最高价
- low最低价
- close收盘价
- clear结算价
- volume 成交量
- turnover 成交金额,和money一样,兼容考虑
- money 成交金额
- amount持仓量
- datetime 数据时间
- tradedate 交易日
获取指定字段K线数据—GetHisDataByField()
GetHisDataByField(code, BarType.Day,[“open”, “high”, “low”, “close”], option),获取指定字段的K线数据,比如获取收盘价列表,成交量列表等,支持K线数据的价格和量的数据列表。
参数
Code:合约代码 + 市场代码
BarType K线类型,如日线周线月线分钟线
详细周期:Year 、Season 、Month 、Week 、Day、Min240、Min120、Min60、Min30、Min15、Min5、Min3、Min
list 要获取的字段列表,单个字段时,可直接用字段,比如”high”
可用字段有:”open”, “high”, “low”, “close”,’clear’,’volume’,’turnover’,’amount’,每个字段的含义参考上方GetHisData的对象属性
option 可设定前/后复权,可指定StartDate/EndDate/Count
option.WeightType:0为不复权,1为前复权,2为后复权
注意:StartDate/EndDate/Count,取两个使用,如option.StartDate = datetime.datetime(2012, 3, 5)起始,option.Count = 10 总K线数,则得到的K线数据是从12年3月5号到15号;
返回
同时获取多个字段的数据时,返回的是一个二维数组,数组由每个字段对应的数据list组成;获取单个字段的数据时,返回一个数组,如例中的klinedata2,就是一个由最近10日的最高价组成的数组。
示例
g.code = 'm1901.DCE'
option1 = PBObj()
option1.EndDate = GetCurrentTime()
option1.Count = 10
#获取最近10天的开高低收价格列表
kline = GetHisDataByField(g.code, BarType.Day, ["open", "high", "low", "close"], option)
print kline
option2 = PBObj()
option2.EndDate = GetCurrentTime()
option2.Count = 10
#获取最近10天的最高价列表
klinedata2 = GetHisDataByField(g.code, BarType.Day, "high", option2)
print klinedata2
获取某时刻多合约k线-GetHisDataByTime
获取某时刻多合约k线-GetHisDataByTime(samples,bartype,datatime),用于获取某一时刻的一组合约的K线数据(日线、1分钟线)
参数
samples:合约列表,数据类型:list
bartype:BAR类型,数据类型:BarType(仅支持日线和1分钟线),如BarType.Day、BarType.Min
datatime:数据时间,数据类型:1分钟线只能为datetime格式,日线可以为datetime、date、int格式
返回
一个list,每个元素为一个dict,dict的key值有:
- data[“合约”] 为合约代码;
- data[“K线”] 为K线object,与一般K线对象相同。
示例
def OnBar(context,code,bartype):
kline = GetHisDataByTime(['rb1905.SHFE','m1905.DCE'],BarType.Day,datetime.date(2019,1,22))
print '合约: ' + kline[0]['合约'] + ' 收盘价: ' + str(kline[0]['K线'].close)
for i in kline[0].keys():
print str(i) + ': ' + str(kline[0][i])
获取基本信息—GetContractInfo
获取基本信息GetContractInfo(code)
参数
Code:合约代码,可支持期货、期权、指数品种的基本信息。
返回
一个字典,包含该code的所有信息。
其中期权合约信息的key值有行权比率、名称、期权标的、合约乘数、行权价格、行权方式(int型):0为欧式1为美式;期权类型:0为股票期权,1为指数期权,2为期货期权;行权到期日(datetime型)、合约存续(int型,65 – 当日新挂牌69 – 存续68 – 当日摘牌48 – 未上市49 – 已退市)、合约调整(int型,48 – 近期未做调整,49 – 最近10个交易日内合约发生过调整。)、期权种类(int型):0为认购期权,1为认沽期权。
期货合约信息的key值有品种代码、合约乘数、上市日期、名称、最后交易日
指数信息的key值有名称、基准点数、上市日期
示例
info1 = GetContractInfo("rb1901.SHFE")
for oo in info1.keys():
print str(oo) +':' + str(info1[oo])
查询交易所信息—GetExchangeInfo
查询交易所信息—GetExchangeInfo(ExchangeId)
参数
ExchangeId市场代码
SHFE 上期所、INE 上海国际能源交易中心、DCE 大连商品交易所、CZCE 郑州商品交易所、CFFEX 中金所
返回
一个词典,包含id对应的交易所信息,字段有:代码、名称、简称
示例
#获取交易所信息
exchang = GetExchangeInfo('SHFE')
print str(exchang)
查询交易所支持的品种列表—GetVarieties
查询交易所支持的品种列表—GetVarieties(ExchangeId).用于查询交易所可以交易的品种
参数
ExchangeId市场代码
HFE 上期所、INE 上海国际能源交易中心、DCE 大连商品交易所、CZCE 郑州商品交易所、CFFEX 中金所
返回
一个列表,里面包含交易所id所对应的品种,如‘ag’
示例
#获取上期所品种
ch = GetVarieties('SHFE')
print str(ch)
获取期货合约列表—GetFuturesContracts
GetFuturesContracts(ExchangeCode,VarietyCode) ,获取指定品种的可交易期货合约列表
参数
ExchangeCode:交易所代码,如‘SHFE’上期所
SHFE 上期所、INE 上海国际能源交易中心、DCE 大连商品交易所、CZCE 郑州商品交易所、CFFEX 中金所
VarietyCode:品种代码,str型,如‘rb’,可由GetVarieties获取
返回
list 包含指定品种的可交易期货合约列表
示例
vac = GetFuturesContracts('SHFE','rb')
print vac
查询品种信息—GetVarietyInfo
查询品种信息—GetVarietyInfo(ExchangeId, VarietyCode),用于查询某交易所某一品种的信息
参数
ExchangeId市场代码
SHFE 上期所、INE 上海国际能源交易中心、DCE 大连商品交易所、CZCE 郑州商品交易所、CFFEX 中金所
VarietyCode代码,如“ag”,可通过GetVarieties函数获取
返回
一个词典,key值包括价格小数位、交易时段、集合竞价时段、名称、最小变动价位、类别(int型,1代表股票、2代表封闭基金、3代表ETF基金、4代表商品期货、5代表金融期货、6代表股票期权、7代表期货期权)、代码、交易所ID、报价单位
示例
codeinfo = GetVarietyInfo(‘SHFE’,’ag’)
品种主力合约—GetMainContract
品种主力合约—GetMainContract(ExchangeId ,VarietyCode,Type),用于查询某一品种的主力合约
参数
ExchangeId市场代码
SHFE 上期所、INE 上海国际能源交易中心、DCE 大连商品交易所、CZCE 郑州商品交易所、CFFEX 中金所
VarietyCode代码,如’ag’,可通过GetVarieties函数获取
Type:0代表当月,1代表下月,2代表下季,3代表隔季,20代表主力
返回
对应Type的合约代码
示例
#查询主力合约
zhuli = GetMainContract('SHFE', 'ag',20)
print '白银主力:' + str(zhuli)
查询期权标的列表—GetOptionObjects
查询期权标的列表—GetOptionObjects(Exchange Id),用于查询某交易所的期权标的列表
参数
ExchangeId市场代码
SHSE 上交所、SZSE 深交所、SHFE 上期所、INE 上海国际能源交易中心、DCE 大连商品交易所、CZCE 郑州商品交易所、CFFEX 中金所
返回
一个列表,包含期权标的
示例
#查询上交所期权标的
biaodi = GetOptionObjects('SHSE')
print '标的:' + str(biaodi)
查询期权合约列表—GetOptionContracts
查询期权合约列表—GetOptionContracts(Object Stock Code,ExcuteDate,Type),用于查询某期权标的对应的期权合约列表
参数
ObjectStockCode期权标的代码,可由GetOptionObjects获取
ExcuteDate 期权合约月份,格式如datetime.datetime(2018,3,1),写之前,需import datetime;指18年3月份到期的期权合约,年份和月份有意义,日期值无意义,写几号都可以;也可以直接输入整数:0代表当月,1代表下月,2代表下季,3代表隔季; 期货期权的话,月份由ObjectStockCode期权标的代码决定,直接填None就可以了
Type 0代表认购期权,1代表认沽期权,2代表全部
返回
一个list,包含所有所查标的到期日对应类型的期权合约代码
示例
#查询期权合约列表
oplist = GetOptionContracts('510050.SHSE',datetime.datetime(2018,3,1),2)
print str(oplist)
查询平价期权合约—GetAtmOptionContract
查询平价期权合约—GetAtmOptionContract(Object Stock Code,Excute Date,ObjectStockPrice,type),用于查询某期权标的对应的期权合约列表
参数
ObjectStockCode:期权标的代码,可由GetOptionObjects获取
ExcuteDate:期权合约月份,格式如datetime.datetime(2018,3,1),写之前,需import datetime;指18年3月份到期的期权合约,年份和月份有意义,日期值无意义,写几号都可以;也可以直接输入整数:0代表当月,1代表下月,2代表下季,3代表隔季;
期货期权的话,月份由ObjectStockCode期权标的代码决定,直接填None就可以了
ObjectStockPrice:标的价格,可用GetQuote函数获取
Type:0代表认购期权,1代表认沽期权,2代表全部
返回
平价期权合约代码
示例
#查询平价期权合约
dyndata1 = GetQuote("510050.SHSE")
atmop = GetAtmOptionContract('510050.SHSE',datetime.datetime(2018,3,1),dyndata1.now,2)
print str(atmop)
查询期权到期日—GetOptionsLastDates
GetOptionsLastDates(ObjectCode) 获取指定品种(标的)当前所有期权的到期日,暂不支持期货期权到日期查询, 如需获取期货期权到期日,可用GetContractInfo获取
参数
ObjectCode:标的代码/标的品种,如‘510050.SHSE’
返回
list, 包含指定品种(标的)当前所有期权的到期日,日期格式为datetime格式
示例
last = GetOptionsLastDates('510050.SHSE')
print str(last)
计算期权最痛点位—GetOptionMP
期权最痛点位计算GetOptionMP(Object Stock Code,ExcuteDate)
参数
ObjectStockCode:期权标的代码,可由GetOptionObjects获取
ExcuteDate:期权合约月份,格式如datetime.datetime(2018,3,1),写之前,需import datetime;指18年3月份到期的期权合约,年份和月份有意义,日期值无意义,写几号都可以;也可以直接输入整数:0代表当月,1代表下月,2代表下季,3代表隔季; 期货期权的话,月份由ObjectStockCode期权标的代码决定,直接填None就可以了
示例
mp = GetOptionMP('510050.SHSE',1)
print mp
获取期权行权价列表—GetOptionsStrikePrices
GetOptionsStrikePrices(ObjectCode,ExcuteDate) ,获取指定标的,到期日的行权价列表
参数
ObjectCode:标的代码,如’510050.SHSE’
ExecuteDate:到期日,datetime型,可由GetOptionsLastDates获取
返回
list 包含指定标的,到期日的行权价列表
示例
last = GetOptionsLastDates('510050.SHSE')
stp = GetOptionsStrikePrices('510050.SHSE',last[0])
print stp
查询交易所指数列表—GetExchangeIndexList
查询交易所指数列表—GetExchangeIndexList(ExchangeId),用于查询某交易所指数列表
参数
ExchangeId市场代码
SHSE 上交所、SZSE 深交所、SHFE 上期所、INE 上海国际能源交易中心、DCE 大连商品交易所、CZCE 郑州商品交易所、CFFEX 中金所
返回
一个列表,包含该交易所的所有指数
示例
#查询指数列表
indlist = GetExchangeIndexList('SHSE')
print '指数列表:' + str(indlist)
查询指数样本—GetIndexSamples
查询指数样本—GetIndexSamples(IndexCode),用于查询某指数的样本
参数
IndexCode指数代码,可用GetExchangeIndexList获取
返回
一个list,包含该指数的所有样本的代码
示例
#查询指数样本
sam = GetIndexSamples('000016.SHSE')
print '样本:' + str(sam)
查询指数样本权重及其他信息—GetSampleInfo
查询指数样本权重及其他信息—GetSampleInfo(IndexCode, StockCode),用于查询某指数样本权重及其他信息
参数
IndexCode指数代码,可用GetExchangeIndexList获取
StockCode 样本代码,可用GetIndexSamples获取
返回
一个字典,包含样本对应权重信息,字段:样本权重
示例
#查询权重
sam1 = GetSampleInfo('000016.SHSE','600016.SHSE')
print str(sam1)
查询商品持仓排名—GetProductsRanking
查询商品持仓排名—GetProductsRanking(search_type,search_value,vol_type,startdate,enddate,no),因为上期所和中金所官方不披露商品持仓,只能查询大商所和郑商所的商品持仓排名
参数
search_type:查询类型 0.按产品查询 1.按会员单位查询 必填无默认值
search_value: 品种/会员单位 必填无默认值,品种格式如”m.DCE”
vol_type:类型 enum(0.成交量排名,1.持买仓量排名,2.持卖仓量排名) 必填无默认值
startdate:开始时间,默认3个月前,int型,如20190102
enddate:结束时间,默认今天,如果只想指定开始时间,不想指定结束时间,这个时候结束时间填数字0
no:名次 默认不设置,即所有名次,int型,如1
返回
返回list,list里只有一个词典,词典key包含字段:交易日,品种,会员,排名,数量,增减
示例
获取2019年1月2号至今豆粕品种排名第一的持买仓量,并打印出来
a = GetProductsRanking(0,"m.DCE",1,20190102,0,1)
i = 0
while i<len(a):
for oo in a[i].keys():
print str(oo) +':' + str(a[i][oo])
i +=1
查询合约持仓排名—GetContractRanking
查询合约持仓排名—GetContractRanking(search_type,search_value,vol_type,startdate,enddate,no)
参数
search_type:查询类型 0.按合约查询 1.按会员单位查询 必填无默认值
search_value: 合约/会员单位 必填无默认值,品种格式如”rb1905.SHFE”
vol_type:类型 enum(0.成交量排名,1.持买仓量排名,2.持卖仓量排名) 必填无默认值
startdate:开始时间,默认3个月前,int型,如20190102
enddate:结束时间,默认今天,如果只想指定开始时间,不想指定结束时间,这个时候结束时间填数字0
no:名次 默认不设置,即所有名次,int型,如1
返回
返回list,list里只有一个词典,词典key包含字段:交易日,合约,会员,排名,数量,增减
示例
获取2019年1月2号至今螺纹1905合约排名第一的持买仓量,并打印出来
b = GetContractRanking(0,"rb1905.SHFE",1,20190102,0,1)
print b
n = 0
while n<len(b):
for oo in b[n].keys():
print str(oo) +':' + str(b[n][oo])
n +=1
查询日仓单—GetReceipt
查询日仓单(product,startdate,enddate)
参数
product: 品种 必填无默认值,品种格式如”cu.SHFE”
startdate:开始时间 默认3个月前,int型,如20190102
enddate:结束时间 默认今天,int型
返回
返回list,list里只有一个词典,词典key包含字段:交易日、仓库名称、仓单数量、比上日增减、有效预报、升贴水、单位
示例
获取2019年1月2号至今铜品种的日仓单,并打印出来
c = GetReceipt("cu.SHFE",20190102)
n = 0
while n<len(c):
for oo in c[n].keys():
print str(oo) +':' + str(c[n][oo])
n +=1