遍历期权图层时,偶然发生不执行的交易代码的情况,请TB老师分析
先说一下背景,我做了一个突破型的策略,每天生成上下轨BuyLine和SellLine,当天向上突破BuyLine时则做多,第二天前30分钟未向上突破时则先平昨日仓。突破的时候需要买入虚一档的看涨期权,由于每天需交易的期权都不同,所以我把可能的期权图层都加进策略中,交易时需执行遍历图层代码。但在实盘操作时,发现开平仓的代码偶尔会不正常发单,比如今天HO2406-C-2500应该发单,却没发单。但同一套策略的Mo2406-C-5300却能正常发单,这种情况已经出现了很多次,感觉是平台机制的问题,请研发人员分析。交易情况如下:仅有MO期权的交易,而无HO期权的交易。我以HO的期权策略进行说明,0号图层是ih2406的日线,1号图层是ih2406的30分钟线,2及以后的图层都是当月的看涨期权图层,如下图所示:交易的核心代码如下:OnBarOpen(ArrayRef<Integer> indexs){ Range[2:datacount-1] { If(data1.time == 0.1 and Data1.High[1] < BuyLine) { if(MarketPosition==1) { data1.Commentary(Symbol + 仓位不为空,即将平仓); Sell(lots,Open); FileAppend(c:DT_Option_Debug,data1.time= + Text(data1.Time) + CurrentDate= + DateToString(CurrentDate) + CurrentTime= + TimeToString(CurrentTime) + Data1.High[1]= + Text(Data1.High) + Buyline= + Text(BuyLine) + SellLine= + Text(SellLine) + 此时价格为 + Text(data1.Open) + ,未向上突破buyline,平仓所有合计 + text(lots) + 张看涨期权。驱动的图层为 + TextArray(indexs)); data1.PlotString(Cover,10点平仓,low,red); } } }}我用fileappend函数记录了交易的代码,用文件查看器查看后,可以看到是有触发交易的:那么问题来了,为什么账户交易记录里没有发出任何一个期权合约的交易委托呢?如果说代码有问题,为什么HO代码不触发交易,但MO合约触发了交易呢?问题出在OnBarOpen处理不了range遍历循环,还是range[2:datacount-1]的用法有问题?这个Bug已经困扰我许久,请TB的各位老师指导。