¿Quién puede ayudar con el robot, por qué no funciona? - página 4

 
GIM:

for(int i=0;i<TotalPedidos();i++)

Error: "i".

¿Cuál es el error?

//+------------------------------------------------------------------+
//|                                                          123.mq4 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

input double  lots       = 0.01;   // Лот
input int     stop_loss      = 10; // Указываем в валюте депозита
input int     take_profit    = 20; // Указываем в валюте депозита
extern int    Slippage = 3;        // Допустимое проскальзываение цены в пунктах
input int     Magic = 16384;       // Уникальный номер эксперта

int            last_bar       = 0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
// ===== Пересчет под пятизнак =========
   if(Digits()==3 || Digits()==5)
     {
      Slippage           *= 10;
     }   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if (last_bar == Bars) {return;}
   last_bar = Bars;
   if (OrdersTotal() == 0){
          int ticketbuy = OrderSend(Symbol(), OP_BUY, lots ,Ask, Slippage, 0, 0,  "", Magic, 0, clrBlue);
            if(ticketbuy<0)
               Print(Symbol()," OpenPosition. OrderSend Buy fail #",GetLastError());
            else
               Print(Symbol()," OpenPosition. OrderSend Buy successfully");
          int ticketsell = OrderSend(Symbol(), OP_SELL, lots ,Bid, Slippage, 0, 0,  "", Magic, 0, clrRed);
            if(ticketsell<0)
               Print(Symbol()," OpenPosition. OrderSend Sell fail #",GetLastError());
            else
               Print(Symbol()," OpenPosition. OrderSend Sell successfully");      
}
 double profit=0;
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==_Symbol && OrderMagicNumber()== Magic)
        {
         profit+=OrderProfit()+OrderSwap()+OrderCommission();
        }
     }
 int requot=0;
 if(profit>=take_profit || (-profit)>=stop_loss)
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==_Symbol && OrderMagicNumber()== Magic)
        {
         if(OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrRed))
               requot=0;
            else
              {
               requot++;
              }
         if(requot>10)
              {
               i++;
               requot=0;
              }
            i--;
        }
     }
 
  }
//+------------------------------------------------------------------+

 
GIM:
¿Qué quieres decir con que sólo con órdenes propias....
Si se colocan varios ejemplares del EA en una misma cuenta para que no se confunda qué EA abrió la orden, se utiliza el número de identificación.
 
¿Podría ser el número de operaciones o los pares de divisas?
 
GIM:
¿Qué quieres decir con que sólo con órdenes propias....
Si el EA sólo va a trabajar con órdenes propias en la cuenta, esta es la forma correcta de escribirlo. Si hay varias estrategias y expertos, no deben confundir sus propias órdenes con las de los demás.
 
Sergey Gritsay:
Si tiene varias copias del EA en una cuenta, no confunde qué EA abrió la orden y utiliza un número de identificación único.
¡Todo está claro, desde el corazón!
 
Vladimir Zubov:

¿Cuál es el error?

El error aquí es que la variable i se inicializa 2 veces en el primer bucle for y en el segundo bucle for, o bien hay que eliminar la segunda inicialización, o sustituir el nombre de la variable por otro.
 
Gracias a todos.
 
Sergey Gritsay:
El error aquí es que la variable i se inicializa dos veces en el primer bucle for y en el segundo bucle for, o bien hay que eliminar la segunda inicialización, o bien hay que cambiar el nombre de la variable.
Así es, pensé que su compilador está luchando.
 
Vladimir Zubov:
Es cierto, pensé que su compilador estaba luchando.
El compilador probablemente lo hace, pero debería dar una advertencia en lugar de un error.
 

y no, si lo sacas.

#property strict

dice que es un error.