软件使用中遇到的问题,请老师帮忙看看

简单的突破策略,编写后在主连复权合约上测试发现有个百思不得其解的问题,两种编写方式差距巨大,具体代码如下:第一种,最高点>=指标线,发单用指标线作为信号价。代码如下: Bool HUpBand1=H>=UpperBand; Bool LDownBand1=L<=LowerBand; If(MarketPosition>0 && L<=AveMa && BarsSinceEntry>0) { Sell(0,Min(Open,AveMa)); } If(MarketPosition<0 && H>=AveMa && BarsSinceEntry>0) { BuyToCover(0,Max(Open,AveMa)); } //==============================================================//判断是否开仓 If(MarketPosition<1 && HUpBand1 ) { Buy(Lots,max(Open,UpperBand )); } If(MarketPosition>-1 && LDownBand1 ) { SellShort(Lots,min(Open,LowerBand)); } }第二种写法:最高点>指标线,越过才算信号,发单用信号价加减最小跳动,代码如下: Bool HUpBand=H>UpperBand; Bool LDownBand=L<LowerBand; //==============================================================//先进行平仓 If(MarketPosition>0 && L<AveMa && BarsSinceEntry>0) { Sell(0,Min(Open,AveMa-MinMove*pricescale*rollover)); } If(MarketPosition<0 && H>AveMa && BarsSinceEntry>0) { BuyToCover(0,Max(Open,AveMa+MinMove*pricescale*rollover)); } //==============================================================//判断是否开仓 If(MarketPosition<1 && HUpBand) { Buy(Lots,max(Open,UpperBand+MinMove*pricescale*rollover )); } If(MarketPosition>-1 && LDownBand ) { SellShort(Lots,min(Open,LowerBand-MinMove*pricescale*rollover)); }测试结果显示,第二种写法结果很差,由于是在主连复权上测试,刘风老师也在论坛上回复过这里的指标价需要乘以复权系数,所以逻辑上应该是没问题的。1、这两种写法哪种写法的发单逻辑是准确的?2、第一种写法好于第二种是否有偷价的嫌疑?

第二个多加了滑点,加了成本自然差了

回复:王老师,第二个写法由于是高低点大于或小于指标线才算触发信号,这里发单价不就应该用指标线加一跳吗,不然就偷价1跳了吧?

回复:偷价是一回事 ,你说的没问题但图表信号高了自然绩效差了

很明显信号条件不一样了,不能放在一起比较

回复:刘老师,信号条件的差别是高低点等于指标线时是否算做触发,发单条件也做了相应的修改来适应逻辑,按道理来说回测结果不应该差别这么大的。