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

简单的突破策略,编写后在主连复权合约上测试发现有个百思不得其解的问题,

两种编写方式差距巨大,具体代码如下:

第一种,最高点>=指标线,发单用指标线作为信号价。代码如下:


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、第一种写法好于第二种是否有偷价的嫌疑?

请老师帮忙看看代码的错误
求助贴 麻烦老师帮忙看看
软件使用过程中的问题
关于settrigerbarclose在使用中遇到的问题
帮忙看看我的对冲套利平仓条件有什么问题
回测遇到的2个问题 请老师解答下
请帮忙看下尾盘平仓的设置
求老师帮忙看看
编译时提示错误,错误号2002,帮忙看看是否有问题
请老师帮忙看看这个代码

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

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

偷价是一回事 ,你说的没问题

但图表信号高了自然绩效差了

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

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