各位,为什么这段代码用函数封装不起来?

 

这段代码的意思是查询下单后的N次均线下穿时的价格。没有用函数封起来的时候很正常,想查第几次就可以查第几次,查到小于订单的开盘时间时就结束。但是用函数封起来之后会跳到订单前面一个莫名其妙的时间段的价格。

      datetime a=0;

      datetime b=0;

      int count=0;

      double c=0;

      for(int n=0;n<OrdersTotal();n++)

       {

         if(OrderSelect(n,SELECT_BY_POS,MODE_TRADES)&&OrderSymbol()==Symbol())

          {

             a=OrderOpenTime();

          }

       }

     for(int i=1;i<2000;i++)

     {  double ma5=iMA(Symbol(),PERIOD_CURRENT,5,0,MODE_SMA,PRICE_CLOSE,i);

        double ma5s=iMA(Symbol(),PERIOD_CURRENT,5,0,MODE_SMA,PRICE_CLOSE,i+1);

        double ma10=iMA(Symbol(),PERIOD_CURRENT,10,0,MODE_SMA,PRICE_CLOSE,i);

        double ma10s=iMA(Symbol(),PERIOD_CURRENT,10,0,MODE_SMA,PRICE_CLOSE,i+1);

        if(ma5<ma10&&ma5s>ma10s)

          {

             b=Time[i];

             c=Close[i];

             if(a<b) 

           {

             count++;  

           }

             if(count==2)

            {

             Print("c=",c);

              

              break;

             

          }

         

        }

           

      }

原因: