欢迎光临
专业期货策略平台

博易云量化交易开发API参数教程2

行情访问函数

订阅实时行情-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
0 0 vote
Article Rating
Click to rate this post!
[Total: 0 Average: 0]
赞(0) 打赏
未经允许不得转载:A期客 » 博易云量化交易开发API参数教程2
订阅
提醒
guest
0 评论
Inline Feedbacks
View all comments

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

0
Would love your thoughts, please comment.x
()
x