我想请问一下,这两行代码的区别,为什么测试之后得到了完全不一样的结果

 
 int A=iHighest(NULL,15,MODE_HIGH,30,1);   
    double B=High[A];
    if(Bid>(B+200*Point))
     {
       if(y1>z1 && x1>25 && y1>30)
       {
       if(t!=Time[0])                              
         { 
           if(buy(CLots,2000,400,Symbol()+"buy0",123456)>0)
             {
               t=Time[0];
             }
         }
       }

     }

第一个是这种,选取近30根K线的最高点突破了做多

  double A; 

   int B=iHighest(NULL,0,MODE_HIGH,30,1); 

   if(B!=-1)  A=High[B]; 

   else PrintFormat("Error in call iHighest. Error code=%d",GetLastError());

     

    if(Bid>(A+200*Point))

     {

       if(y1>z1 && x1>25 && y1>30)

       {

       if(t!=Time[0])                              

         { 

           if(buy(Blots,2000,400,Symbol()+"buy0",123456)>0)

             {

               t=Time[0];

             }

         }

       }

     }

第二种是这种,我根据F1帮助更改的iHighest的用法,但是使用后发现实际的运行效果完全不一样,不知道有没有大神直到这两种代码之间的区别

 
Gao Fei Zhang:
 int A=iHighest(NULL,15,MODE_HIGH,30,1);   
    double B=High[A];
    if(Bid>(B+200*Point))
     {
       if(y1>z1 && x1>25 && y1>30)
       {
       if(t!=Time[0])                              
         { 
           if(buy(CLots,2000,400,Symbol()+"buy0",123456)>0)
             {
               t=Time[0];
             }
         }
       }

     }

第一个是这种,选取近30根K线的最高点突破了做多

  double A; 

   int B=iHighest(NULL,0,MODE_HIGH,30,1); 

   if(B!=-1)  A=High[B]; 

   else PrintFormat("Error in call iHighest. Error code=%d",GetLastError());

     

    if(Bid>(A+200*Point))

     {

       if(y1>z1 && x1>25 && y1>30)

       {

       if(t!=Time[0])                              

         { 

           if(buy(Blots,2000,400,Symbol()+"buy0",123456)>0)

             {

               t=Time[0];

             }

         }

       }

     }

第二种是这种,我根据F1帮助更改的iHighest的用法,但是使用后发现实际的运行效果完全不一样,不知道有没有大神直到这两种代码之间的区别

首先,int A=iHighest(NULL,15,MODE_HIGH,30,1); 和 int B=iHighest(NULL,0,MODE_HIGH,30,1);  都不一样了呀。
 
Lin Luo #:
首先,int A=iHighest(NULL,15,MODE_HIGH,30,1); 和 int B=iHighest(NULL,0,MODE_HIGH,30,1);  都不一样了呀。

可是运行的时间周期都是M15呀,我改一下试试

 
Gao Fei Zhang #:

可是运行的时间周期都是M15呀,

Lin Luo #:
首先,int A=iHighest(NULL,15,MODE_HIGH,30,1); 和 int B=iHighest(NULL,0,MODE_HIGH,30,1);  都不一样了呀。

直到为啥了,两个做单逻辑都不同,调整好了感谢

原因: