请教老师关于分段止盈的排序问题

有个问题还没弄明白,就是分段止盈的时候,触发阈值的排序问题,从小到大,和从大到小,我都回测过,但是结果不一样,为什么?实盘时又该如何正确排序,才能保证和回测结果一样,谢谢老师。比如: Numeric StartPro1(2); //1级跟踪止盈,盈利2%启动 Numeric StopPro1(50); //1级跟踪止盈,盈利回撤50%触发 Numeric StartPro2(4); //2级跟踪止盈,盈利4%启动 Numeric StopPro2(30); //2级跟踪止盈,盈利回撤30%触发 Numeric StartPro3(6); //3级跟踪止盈,盈利6%启动 Numeric StopPro3(10); //3级跟踪止盈,盈利回撤10%触发从大到小 If(MarketPosition >0 && CurrentBar > entBar) { If(HighAfterEntry[1] >= LastEntryPrice * (1+ 0.01* StartPro3)) { Stop_L = HighAfterEntry[1] * (1- 0.01 * StopPro3) + LastEntryPrice *0.01 * StopPro3 ; }Else If(HighAfterEntry[1] >= LastEntryPrice * (1+ 0.01* StartPro2)) { Stop_L = HighAfterEntry[1] * (1- 0.01 * StopPro2) + LastEntryPrice *0.01 * StopPro2 ; }Else If(HighAfterEntry[1] >= LastEntryPrice * (1+ 0.01* StartPro1)) { Stop_L = HighAfterEntry[1] * (1- 0.01 * StopPro1) + LastEntryPrice *0.01 * StopPro1 ; }Else { Stop_L = 0 ; } }从小到大 If(MarketPosition >0 && CurrentBar > entBar) { If(HighAfterEntry[1] >= LastEntryPrice * (1+ 0.01* StartPro1)) { Stop_L = HighAfterEntry[1] * (1- 0.01 * StopPro1) + LastEntryPrice *0.01 * StopPro1 ; }Else If(HighAfterEntry[1] >= LastEntryPrice * (1+ 0.01* StartPro2)) { Stop_L = HighAfterEntry[1] * (1- 0.01 * StopPro2) + LastEntryPrice *0.01 * StopPro2 ; }Else If(HighAfterEntry[1] >= LastEntryPrice * (1+ 0.01* StartPro3)) { Stop_L = HighAfterEntry[1] * (1- 0.01 * StopPro3) + LastEntryPrice *0.01 * StopPro3 ; }Else { Stop_L = 0 ; } }

代码的执行顺序是从上到下的,所以判断顺序也是先执行上面的判断再执行下面的。如果进了上面的,下面的进不去了

回复:还是不太明白,那这个分段止盈到底应该怎么排序?从大到小,还是从小到大?