onorder域里无法print

想在onorder域里进行一些业务运算同时打印一些变量,不知道为什么打印不出来,请问下什么原因呢?比如以下一段代码,红色的打印语句在控制台里就是不打印:Params Numeric FastLength(5);// 短期指数平均线参数 Numeric SlowLength(20);// 长期指数平均线参数Vars Series<Numeric> AvgValue1; Series<Numeric> AvgValue2; Global Numeric a; Global Numeric b; Global Numeric buynum; Global Numeric sellshortnum;Events OnReady() { SetBackBarMaxCount(1+Max(FastLength,SlowLength)); Range[0:DataSourceSize() - 1] { setPlotOption("MA1", "begin-bar", FastLength); setPlotOption("MA2", "begin-bar", SlowLength); } } OnOrder(OrderRef ord) { Print("OnOrder triggered: Order ID: " + Text(ord.orderid)); print("ordertext"+text(ord)); if(ord.side==Enum_Buy and ord.combOffset==Enum_entry) { a = ord.orderid; print("buytime:"+text(time)); print("a:"+text(a)); buynum=buynum+1; } if(ord.side==Enum_Sell and ord.combOffset==Enum_entry) { b = ord.orderid; print("sellshorttime:"+text(time)); print("b:"+text(b)); sellshortnum=sellshortnum+1; } } OnBar(ArrayRef<Integer> indexs) { AvgValue1 = AverageFC(Close,FastLength); AvgValue2 = AverageFC(Close,SlowLength); PlotNumeric("MA1",AvgValue1); PlotNumeric("MA2",AvgValue2); print("a:"+text(a)); print("b:"+text(b)); print("buynum:"+text(buynum)); print("sellshortnum:"+text(sellshortnum)); If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1]) { Buy(0,Open); } If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1]) { SellShort(0,Open); } }

1.先看位置 Print("OnOrder triggered: Order ID: " + Text(ord.orderid));你写在了onorder底层,那么没打印说明什么? 说明onorder没有触发

回复:谢谢,操作源搞错了

不打印的原因和简单,就是没执行。没执行的原因,就是没驱动没驱动的原因,就是没有发生符合事件域的事件你写在onorder里的print没执行,那就说明没执行onorder域

回复:谢谢老师,但是为什么没有触发呢?比如if(ord.side==Enum_Buy and ord.combOffset==Enum_entry),这个IF写法不能认为是筛选到买入委托吗?我对照着帐户的成交记录,有买入开仓,那就是上面这个写法不对,是哪里写得不对呢。谢谢

回复:你确认发生了能驱动onorder域的事件了吗?

回复:刘老师,的确是自己搞错了操作源。谢谢