OnBarClose设置提前触发,有提前触发却没有发出委托

1小时周期,设置提前触发OnBarClose,基本抄的示范例子,只是排除了0.1014这个小节: OnReady() { Range[0:DataCount-1] { Array<Numeric> timePoint; Integer i; Print(\"GetSessionCount:\" + Text(GetSessionCount)); For i = 0 To GetSessionCount() - 1 { Numeric ret = DateTimeAdd(GetSessionEndTime(i), -9); if(ret < 0) { ret = DateTimeAdd(GetSessionEndTime(i), 86400 - 9); } ret = StringToTime(TimeToString(ret)); if(ret>=0.1014 && ret<=0.11) { Print(\"no SetTriggerBarClose:\" + Text(ret)); continue;//排除10:15的15分钟休息 } Print(\"SetTriggerBarClose:\" + Text(ret)); ArrayPushBack(timePoint, ret); } SetTriggerBarClose(timePoint); } }另外说一下,这里有个奇怪的地方,如果设置数据源是具体个数,比如1000bar,GetSessionCount显示是4个(带夜盘的),如果数据源设置开始日期(测试用2023-1-1开始),GetSessionCount显示3个,就少夜盘的时间段了。下面是测试用的OnBarClose: OnBarClose(ArrayRef<Integer> indexs) { Print(\"OnBarClose:\" + Text(T)+\" CurrentTime:\"+Text(CurrentTime)); //Commentary(\"T:\"+Text(T)); //Commentary(\"EndTime:\"+Text(EndTime())); If(T==0.11){ Buy(3,Close); FileAppend(\"D:\\\\ATB\", Symbol+\" Buy 3 OnBarClose:0.11 CurrentTime:\"+Text(CurrentTime)); } If(T==0.14) { Sell(1,Close); FileAppend(\"D:\\\\ATB\", Symbol+\" Sell 1 OnBarClose:0.14 CurrentTime:\"+Text(CurrentTime)); } If( T==0.22) { Sell(0,Close); FileAppend(\"D:\\\\ATB\", Symbol+\" Sell 0 OnBarClose:0.22 CurrentTime:\"+Text(CurrentTime)); } }在文件里可以查询出最早的:MA888.CZCE Sell 1 OnBarClose:0.14 CurrentTime:0.145949166最后的:MA888.CZCE Sell 1 OnBarClose:0.14 CurrentTime:0.150459480可以确定是提前触发进入了If(T==0.14)的内部,Sell语句应该是执行过了,不知是不是Sell失败了,K线图没有信号,也没有委托发出,问题出在哪呢?

休眠肯定不行 策略没运行了

今天15点的提前触发了,有委托成交。之前没触发的原因可能是,中午休息的时候电脑睡眠,下午交易时段打开时,会提示:时间 消息类型 消息级别 内容2023-03-22 13:54:04.354 策略运行 警告 策略运行,工作区1@ATest1@rb888_H1发生信号闪烁,合约:rb888.SHFE,上次执行信号个数:1,本次执行信号个数:0,发生Bar时间:20230322.110000,发生Bar=100211点半前的买入信号被这个机制给抹去了,导致策略单元的持仓为0,因此昨天的15点没有委托和成交。今天特意检查了一下,发现持仓为0了,然后停止策略单元,重新启动自动交易,有持仓了,到15点提前触发OnBarClose也正常了。想了解一下为什么睡眠之后再唤醒后,策略单元为啥说有信号闪烁呢,有什么办法可以解决吗?

小改一下OnBarClose输出 OnBarClose(ArrayRef<Integer> indexs) { Print(OnBarClose: + Text(T)+ CurrentTime:+Text(CurrentTime)); //Commentary(T:+Text(T)); //Commentary(EndTime:+Text(EndTime())); If(T==0.11){ Buy(3,Close); FileAppend(D:\\\\ATB, Symbol+ Buy 3 OnBarClose:0.11 CurrentTime:+Text(CurrentTime)); } If(T==0.14) { bool result=Sell(1,Close); FileAppend(D:\\\\ATB, Symbol+ Sell 1 OnBarClose:0.14 CurrentTime:+Text(CurrentTime)+ result:+IIFString(result,T,F)); } If( T==0.22) { bool result=Sell(0,Close); FileAppend(D:\\\\ATB, Symbol+ Sell 0 OnBarClose:0.22 CurrentTime:+Text(CurrentTime)+ result:+IIFString(result,T,F)); } }rb888有委托成交了,提前9秒左右,正常没问题文件输出rb888.SHFE Sell 0 OnBarClose:0.22 CurrentTime:0.225951632result:T。。。。。。rb888.SHFE Sell 0 OnBarClose:0.22 CurrentTime:0.230001028result:TK线也有信号了MA888数据源设置从2023-1-1开始K线GetSessionCount就是3个,这个少了夜盘时间段,不太对劲。因为没设置夜盘提前触发,没信号没委托也是正常的。明天下午再测试一下15点提前触发但没委托的问题。

现在已经成历史k线覆盖了,等23点再截图看看。

委托是什么都没发?那监控器显示什么图表情况截图看看