请教买卖问题

OnBar(ArrayRef<Integer> indexs) { MinPoint = MinMove*PriceScale; MyEntryPrice = AvgEntryPrice; i_offset = offset*MinMove*PriceScale; AA = CrossOver(High,BuyPosition); BB = CrossUnder(LOW,SellPosition); If(Time == 0.0935) {Sign1 = Close[1];} IF (sign1 != 0) { BuyPosition = sign1 + X1; SellPosition = sign1 - X1; } PlotNumeric("BuyPosition",BuyPosition); PlotNumeric("SellPosition",SellPosition); If(CurrentBar > 44*Max(Mday,Nday)){ If(MarketPosition == 0 And AA And Time >= 0.0935) { Buy(lots,Max(Open,BuyPosition)+i_offset); Return; } If(MarketPosition == 0 And BB And Time >= 0.0935) { SellShort(lots,Min(Open,SellPosition)-i_offset); Return; }第一张图为啥没穿过上轨也有信号第二张和第三张图是穿过了上轨没信号,但是有些时候又有信号,哪里有问题?求大神

执行顺序的问题你的代码是先判断AA条件是否成立,再修改AA条件里的buyposition取值,然后再画图这就导致,判断AA条件时使用的buyposition其实不是你画图画出来的东西,而是上一根bar的buyposition。代码执行也是有一个先后顺序的,正确的顺序应该是先更新buyposition的值,然后画图,然后再判断AA条件是否成立,最后引用AA条件来判断信号。

回复:明白了谢谢