新手请教策略测试遇到的问题

 

如下是我做单条件

     double mod=NormalizeDouble(MathMod(Close[1],0.005),5); 

     if(mod<=0.0044&&mod>0.004)

       {Alert("做空单");}

    if(mod<0.001&&mod>=0.0006)

      {Alert("做多单");}

策略测试时,当 mod 不在这个做单范围也会做单,是什么原因?有解决方法吗?


还是就是如何提高复盘模型的质量?

 
   int    ticket;
   double lots=0,stoploss=NormalizeDouble(MathMod(Close[1],0.005),5);
   double int_low=NormalizeDouble(Close[1]-stoploss,5);
   if(stoploss<0.009&&stoploss>=0.0006)
     {
      int  c=0,d=0;
      for(int i=0;i<2000;i++)
        {
         if(Close[i]<int_low-0.0005)
           {c=i;break;}
        }
      for(int i=2;i<c+1;i++)
        {
         if(Close[i]>int_low+0.0005)
           {return;}
        }
      ticket=OrderSend(Symbol(),OP_BUY,2,Ask,2,int_low-0.00001,Close[1]+Point*315);
     }

     以上代码是整数系统的多单部分

     我设定的是当stoploss在6到9之间时才可以做单,昨天这个EA做了一单,但是stoploss=9.3。有人知道为什么吗

原因: