期权量化学习(4)——K线及指标

找到操作的标的合约,我们就可以调用其历史K线,进行判断分析。

 

获取基本信息 GetContractInfo (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(g.atmopc)
    print(info1)

 

  

 

 

 #订阅日K线用来驱动onbar事件
    SubscribeBar(g.atmopc,BarType.Day)

  

订阅K线数据—SubscribeBar (code,BarType),订阅品种K线数据,用来驱动OnBar事件。

每天的行情初始化事件,系统会自动退订掉之前订阅的K线,需要重新订阅。

 

 

 

K线类型

 

 

K线更新事件OnBar (context, code, type),当有新的一根K线出现时,调用该事件。每当有新的一根K线产生时触发。根据订阅K线的频率触发。

实时行情事件OnQuote (context, code),当有品种行情过来时,调用该事件。按天回测时,每个订阅过行情的合约每天触发会一次,在收盘时触发(一般是交易日的15:00)

两者都需要提前使用SubscribeQuote订阅行情才能触发,需要在行情初始化事件里SubscribeQuote订阅行情。每天新的行情初始化事件触发时,系统会自动将前一天订阅的行情退订掉,所以每一天都需要重新退订。

 

 

定时器OnTimer (context, timerid),在时间达到设置的定时时间时调用;需要配合SetTimer函数使用。

 # 在k线出现的时候,如果没持仓就买开,如果有就平仓
def OnBar(context,code,bartype):
    posi = context.myacc.GetPositions() #获取所有持仓
    
    if len(posi) == 0:
    #下单买开,2表示最新价
        print("买开")
        QuickInsertOrder(context.myacc,g.atmopc,'buy','open',PriceType(PbPriceType.Limit,2), 10)
elif len(posi) >0: opcode = posi[0].contract print("卖平") #下单卖平,16表示对手价 QuickInsertOrder(context.myacc,opcode,'sell','close',PriceType(PbPriceType.Limit,16), 10)
UnsubscribeBar(g.atmopc,BarType.Day)

  

获取所有的持仓信息—Account.GetPositions (option),返回一个list,包含符合查询条件的所有持仓对象

 

 

快捷下单QuickInsertOrder (account,code,direction,open_or_close,price_type,volume,today_first=True),其中有等号的参数是可不填的,等号后是默认值

 

PbPriceType 下单价位类型,用于下单、追单时指定价位。可以用于InsertOrder,QuickInsertOrder,等各处下单函数中价格的位置。

 

 

 

posted @ 2021-04-29 16:55  徐海建  阅读(555)  评论(0编辑  收藏  举报