在OnBarClose中编写的交易代码,却在bar开始时执行,这是什么原因
各位老师好,我在编写策略的时候,想实现一个需求:即在开盘第一根K线未突破上轨时,马上出局。于是选择使用了onbarclose代码,但今天开盘时程序立即执行了程序,如下图所示:于是我打开程序检查代码,如下所示:OnBarClose(ArrayRef<Integer> indexs) { //如果在10:00前没有向上突破,且昨日有持仓,则平仓 If(data1.time == 0.093 and Data1.High <= BuyLine) { data1.Commentary(data1.time= + TimeToString(data1.time)); data1.Commentary(Data1.High[1]= + text(Data1.High[1])); data1.Commentary(BuyLine= + text(BuyLine)); Range[2:datacount-1] { if(MarketPosition==1) { SellForIndexOption(lots,Close); FileAppend(c:\\\\DT_Option_Debug,data1.time= + Text(data1.Time) + CurrentDate= + DateToString(CurrentDate) + CurrentTime= + TimeToString(CurrentTime) + Data1.High[1]= + Text(Data1.High[1]) + Buyline= + Text(BuyLine) + SellLine= + Text(SellLine) + 此时价格为 + Text(data1.close) + ,未向上突破buyline,平仓所有合计 + text(lots) + 张看涨期权 ); data1.PlotString(Cover,平仓,low,red); lots = 0; } } } }对上文的代码简单解释一下:1、代码是在onbarclose中执行,已用红色字段加粗,2、限制time==0.093这根K线才执行,即9:30这根K线收盘后才执行。3、SellForIndexOption(lots,Close);是我自己封装的函数,里面的代码就是平仓函数sell4、使用了多图层,结构如下所示:事后我查看了交易的实数数据,发现程序在9点29分29秒即触发了交易,而我希望其在10:00才触发。这与onbarclose的设计并不相符,这是为何?是我对这个函数的机制理解不对吗?请老师指导。