Chi può aiutare con il robot, perché non funziona? - pagina 4

 
GIM:

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

Errore: "i".

Qual è l'errore?

//+------------------------------------------------------------------+
//|                                                          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:
Cosa vuol dire, solo con i propri ordini....
Se metti diverse copie dell'EA su un conto, in modo da non confondere quale EA ha aperto l'ordine, viene utilizzato il numero di identificazione.
 
Potrebbe essere il numero di scambi o le coppie di valute?
 
GIM:
Cosa vuol dire, solo con i propri ordini....
Se l'EA lavorerà solo con i propri ordini nel conto, questo è il modo corretto di scriverlo. Se ci sono diverse strategie ed esperti, non devono confondere i propri ordini con quelli degli altri.
 
Sergey Gritsay:
Se hai diverse copie dell'EA in un conto, non confonde quale EA ha aperto l'ordine e usa un numero di identificazione unico.
Tutto è chiaro, dal cuore!
 
Vladimir Zubov:

Qual è l'errore?

L'errore qui è che la variabile i è inizializzata 2 volte nel primo ciclo for e nel secondo ciclo for, o la seconda inizializzazione dovrebbe essere rimossa, o il nome della variabile dovrebbe essere cambiato.
 
Grazie a tutti!
 
Sergey Gritsay:
L'errore qui è che la variabile i è inizializzata due volte nel primo ciclo for e nel secondo ciclo for, o la seconda inizializzazione dovrebbe essere rimossa, o il nome della variabile dovrebbe essere cambiato.
È vero, pensavo che il suo compilatore stesse combattendo.
 
Vladimir Zubov:
È vero, pensavo che il suo compilatore stesse combattendo.
Il compilatore probabilmente lo fa, ma dovrebbe dare un avvertimento, non un errore.
 

e no, se lo togliete

#property strict

dice che è un errore.