能否在hs300的onbar行情中,交易对应的指数期权?如果能,该用什么函数?
我订阅了hs300的指数行情 ,想根据收盘价与60日均线来决定交易对应的期权,能否在onbar中买卖期权(未订阅行情)?如果可以,该用什么函数?
对应的代码如下:
SubscribeBar(code,"30m",20200101,20201231);
OnBar(ArrayRef<Integer> indexs)
{
//
If(close[1] > Average(close[1],60) and MarketPosition==0) //如果昨日大于昨日60日均线且仓位为空
{
Commentary("指数收盘价站上60日均线");
option_code = GetOptionCode(code,close[1],1);
Commentary("虚一看跌期权为" + option_code);
}
If(close[1] < Average(close[1],60) and MarketPosition==0) //如果昨日大于昨日60日均线且仓位为空
{
Commentary("指数收盘价跌破60日均线");
option_code = GetOptionCode(code,close[1],0);
Commentary("虚一看涨期权为" + option_code);
}
}
根据逻辑订阅相应的期权品种 ,期权合约名都有规律
或者A函数指定品种,可以直接下单
回测的话就要订阅,只考虑实时就要结合A函数,属于进阶内容
谢谢回答!
我看到有A_BUY函数,可以直接指定合约下单。但函数参数需要指定价格,在hs300指数的onbar驱动函数中,该怎么获得指定合约的实时价格呢?
Bool A_Buy(String symbol, Numeric lot, Numeric price, ArrayRef<Integer> orderIds, String userNote = "", String createSource = "", Integer accountIndex = 0)
symbol是合约代码,类型为String,我已通过自编函数成功获取要想的期权代码。
lot是手数,类型为Numeric,
price 是价格,类型为Numeric, 该如何获取?
orderIds是报单索引,类型为ArrayRef<Integer>,报单索引是什么?该传什么参数进去?
现阶段主要是做回测,而不是实时交易,所以还是要解决订阅期权行情的问题。
我在onbar中通过自编函数获取了需要的期权代码,然后订阅。虽然能通过编译,但在回测跑应用时,进度一直停留在0.0%不会动,看来无法在onbar中订阅行情 。且由于指数价格在波动,每次需要交易的期权代码都不一样,需要通过onbar获取hs300的价格后,再取对应的虚一档看涨或看跌期权,该怎么订阅和取消订阅(平仓后即可取消订阅)为好?
一般你订阅个虚实的各3档 应该够用了吧
不要临时订阅,会重启策略单元
订阅都是事先做好
首先,每个月期权的主力合约都会变化,如果回测时间要一年,就有12个月的期权合约要订阅。
其次,具体到每个月,指数价格都在波动,触发交易信号时需要选择的虚值期权合约都不同,无法穷举。
再次,期权的合约编号也不是完全有规律,主力合约的行权价相差50,但虚一些的合约行权价差距可能是100。如果按50价差穷举合约名称,可能会列举出一些不存在的合约,在回测时又会提示无法订阅,相当头疼。
期权合约本来就是这样,每个人交易的又不一样
只有自己设计方案
看样子你对期权不太了解,也不知道楼主问的问题是什么。
期权根据行情变化可以有几十种策略组合,水平价差,垂直价差,合成套利等等,岂是订阅三个合约就能解决的?
实盘我可以每天加入新合约订阅,回测怎么办?把历史上数千个合约都加到图表吗?
比如50ETF现货价格2.725,判断行情可能缓涨,这时候要获取2.65CALL和2.8CALL组成牛市价差,过几天50ETF价格到了2.8,牛市价差调整成2.8CALL和2.85CALL,在期权策略方面,tbq完全没法回测。实盘可以手动维护合约,回测没法加挂。
你说的很对!TBQ对期权完全是门外汉,回测是不能用的,实盘也基本不能用!建议TB公司开发人员,看看“真格”量化的期权,才能知道做期权到底需要什么数据,应该提供那些函数。哎,无语中。。。。。。。