Рабочий ли код?

 
   double c1,cpr;
   c1=iClose(Symbol(),0,1);
   cpr=c1-Ask;

   for(int i=1; i<=MaxOrders; i++)
     {
      if(c1<Ask && cpr>0.00010)
        {
         OPENORDER(OP_BUY,NormalizeDouble(Ask,Digits),LotPr,i);
        }
      if(c1>Ask && cpr>0.00010)
        {
         OPENORDER(OP_SELL,NormalizeDouble(Bid,Digits),LotPr,i);
        }
     }

   double OSL,OTP,OOP,StLo,SL,TP;
   int tip;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            tip = OrderType();
            OSL = NormalizeDouble(OrderStopLoss(),Digits);
            OTP = NormalizeDouble(OrderTakeProfit(),Digits);
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            SL=OSL;TP=OTP;
            if(tip==OP_BUY)
              {
               if(OSL==0 && stoploss!=0)
                 {
                  SL=NormalizeDouble(OOP-stoploss  *Point,Digits);
                 }
               if(OTP==0 && TakeProflt!=0)
                 {
                  TP=NormalizeDouble(OOP+TakeProflt*Point,Digits);
                 }
               if(TrailingStop!=0)
                 {
                  StLo=NormalizeDouble(Bid-TrailingStop*Point,Digits);
                  if(StLo>=OOP && StLo>=OSL+StepTrall*Point) SL=StLo;
                 }
               if(SL!=OSL || TP!=OTP)
                 {
                  if(!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error OrderModify ",GetLastError());
                 }
              }
            if(tip==OP_SELL)
              {
               if(OSL==0 && stoploss!=0)
                 {
                  SL=NormalizeDouble(OOP+stoploss  *Point,Digits);
                 }
               if(OTP==0 && TakeProflt!=0)
                 {
                  TP=NormalizeDouble(OOP-TakeProflt*Point,Digits);
                 }
               if(TrailingStop!=0)
                 {
                  StLo=NormalizeDouble(Ask+TrailingStop*Point,Digits);
                  if(StLo<=OOP && (StLo<=OSL-StepTrall*Point || OSL==0)) SL=StLo;
                 }
               if(SL!=OSL || TP!=OTP)
                 {
                  if(!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error OrderModify ",GetLastError());
                 }
              }
           }
        }
     }
   return(0);
  }
//---
void OPENORDER(int ord,double Price,double LOT,int i)
  {
   int error,err;
   double SL=0,TP=0;
   while(true)
     {
      error=true;
      RefreshRates();
      if(ord==OP_BUY)
        {
         if(takeprofit>=STOPLEVEL) TP=NormalizeDouble(Price+takeprofit*Point,Digits); else TP=0;
         if(stoploss>=STOPLEVEL) SL=NormalizeDouble(Price-stoploss*Point,Digits);   else SL=0;
         error=OrderSend(Symbol(),OP_BUY,LOT,Price,slippage,SL,TP," ",Magic,0,Blue);
        }
      if(ord==OP_SELL)
        {
         if(takeprofit>=STOPLEVEL) TP=NormalizeDouble(Price-takeprofit*Point,Digits); else TP=0;
         if(stoploss>=STOPLEVEL) SL=NormalizeDouble(Price+stoploss*Point,Digits);   else SL=0;
         error=OrderSend(Symbol(),OP_SELL,LOT,Price,slippage,SL,TP," ",Magic,0,Red);
        }
      if(error==-1)
        {
         txt=StringConcatenate(txt,"\nError ",GetLastError());
         if(ord== 1) txt = StringConcatenate(txt,"  OPENORDER BUY ",i,"   Ask =",DoubleToStr(Ask,Digits),"   Price =",DoubleToStr(Price,Digits)," (",NormalizeDouble((Price-Ask)/Point,0),")  SL =",DoubleToStr(SL,Digits)," (",NormalizeDouble((Price-SL)/Point,0),")  TP=",DoubleToStr(TP,Digits)," (",NormalizeDouble((TP-Price)/Point,0),")  STOPLEVEL=",STOPLEVEL);
         if(ord==-1) txt = StringConcatenate(txt,"  OPENORDER SELL ",i,"   Bid =",DoubleToStr(Bid,Digits),"   Price =",DoubleToStr(Price,Digits)," (",NormalizeDouble((Bid-Price)/Point,0),")  SL =",DoubleToStr(SL,Digits)," (",NormalizeDouble((SL-Price)/Point,0),")  TP=",DoubleToStr(TP,Digits)," (",NormalizeDouble((Price-TP)/Point,0),")  STOPLEVEL=",STOPLEVEL);
         Print(txt);
         Comment(txt,"  ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
         err++;Sleep(1000);RefreshRates();
        }
      else
        {
         Comment("Ордер ",error," успешно выставлен ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
         n++;
         return;
        }
      if(err >attempts) return;
     }
   return;
  }
//+------------------------------------------------------------------+

Будет ли работать данный код? В тестере не открывает ордеров, но и ошибок нет....где я просчитался?

 

Вместо Point,Digits надо писать _Point, _Digits или Point(),Digits()

 
Alexey Volchanskiy:

Вместо Point,Digits надо писать _Point, _Digits или Point(),Digits()

и так сойдет )

 
Alexey Volchanskiy:

Вместо Point,Digits надо писать _Point, _Digits или Point(),Digits()


Что то не помогло...а еще есть ошибки?

 
Alexandr Bryzgalov:

и так сойдет )


а что тогда не идет,не подскажете?Был бы признателен)))

 
Alexandr Bryzgalov:

и так сойдет )


c #property strict не сойдет

 
Stepan Lyzlov:

а что тогда не идет,не подскажете?Был бы признателен)))


  1. В OPENORDER вставить хотя бы Print c распечаткой входных параметров. И в журнале посмотреть, есть ли ошибки.

 
Alexey Volchanskiy:

  1. В OPENORDER вставить хотя бы Print c распечаткой входных параметров. И в журнале посмотреть, есть ли ошибки.

В самом начале где?Да? В условиях
 
Stepan Lyzlov:
В самом начале где?Да? В условиях

Я бы перед каждым OrderSend распечатывал параметры этой команды. 

Может, она вообще не вызывается.

 
Alexey Volchanskiy:

Я бы перед каждым OrderSend распечатывал параметры этой команды. 

Может, она вообще не вызывается.

Можете пример одного принта написать
 
Stepan Lyzlov:
Можете пример одного принта написать

Судя по просьбе, код не вы писали )) Ну да ладно

if(ord==OP_BUY)
        {
         if(takeprofit>=STOPLEVEL) TP=NormalizeDouble(Price+takeprofit*Point,Digits); else TP=0;
         if(stoploss>=STOPLEVEL) SL=NormalizeDouble(Price-stoploss*Point,Digits);   else SL=0;
         error=OrderSend(Symbol(),OP_BUY,LOT,Price,slippage,SL,TP," ",Magic,0,Blue);
         Print("error=", error, "  LOT=", LOT, "  Price=", DoubleToString(Price, 8), ...); и остальные параметры в том же духе
        }

***