Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 266

 
danil77783:

Artyom buon pomeriggio. Il mio nome è Daniel. La mia domanda è la seguente. Ho scritto il mio Expert Advisor in MQL4, per essere più preciso, riscritto dal video tutorial. Apparentemente ci sono alcuni errori in esso, ma non si compila bene.

Il compilatore mostrerà gli errori specificando la linea e la posizione nella linea. Si prega di fare riferimento a loro

Inserisci il testo del programma usando il pulsante SRC sopra il testo del tuo messaggio - guarda, è meglio!

//+------------------------------------------------------------------+
//|                                                        test7.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+

#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

Si potrebbe anche allegare un file - allora si vedrebbe immediatamente nel MetaEditor

 
LRA:

Il compilatore genererà degli errori indicando la linea e la posizione nella linea. Fare riferimento a loro

Inserisci il testo del programma usando il pulsante SRC sopra il testo del tuo messaggio - guarda, è meglio!!!

Potresti anche allegare un file - allora si vedrebbe subito in MetaEditor


Scusa per il comportamento scorretto, mi correggo, ti do la mia parola :) sono esausto assolutamente....

//+------------------------------------------------------------------+
//|                                                        test7.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//-------------------------------------------------------------------
extern double lots            = 0.1;
extern int    TakeProfit      = 300;
extern int    StopLoss        = 50;
extern int    Magic           = 777; 
extern int    Slippage        = 3;
//-------------------------------------------------------------------
extern string TMA             = "Параметры индикатора TMA";
extern string TimeFrame       = "current time frame";
extern int    HalfLength      = 56;
extern int    Price           = PRICE_CLOSE;
extern double ATRMultiplier   = 2.0;
extern int    ATRPeriod       = 100;
extern bool   Interpolate     = true;
//-------------------------------------------------------------------
double PriceHigh, PriceLow, SL ,TP;
int ticet;


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if (Digits == 3 || Digits == 5);
   {
       TakeProfit *=10;
       StopLoss   *=10;
       Slippage   *=10;
   }  
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
    PriceHigh = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);  
    PriceLow  = iCustom(NULL, 0, "TMA_Fair", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);  
    
    if (CountSell() == 0 && Bid >= PriceHigh)
    {
      tik et = OrderSend(Symbol(), OP_SELL, lots, Bid, Slippage, 0, 0, "TMA robot", Magic, 0, Red);  
      if (tiket > 0)
      {
          SL = NormalizeDouble(Bid + StopLoss*Point, Digits);
          TP = NormalizeDouble(Bid - TakeProfit*Point, Digits);
          
          if (OrderSelect(ticet, SELECT_BY_TICKET)) 
              OrderModify(tiket, OrderOpenPrice(), SL, TP, 0);
        }
    }
  }
//--------------------------------------------------------------------------------------------
 if (CountBuy() == 0 && Ask <= PriceLow)
    {
      tiket = OrderSend(Symbol(), OP_BUY, lots, Ask, Slippage, 0, 0, "TMA robot", Magic, 0, Blue);  
      if (tiket > 0)
      {
          TP = NormalizeDouble(Ask + TakeProfit*Point, Digits);
          SL = NormalizeDouble(Ask - StopLoss*Point, Digits);
          
          if (OrderSelect(ticet, SELECT_BY_TICKET)) 
              OrderModify(tiket, OrderOpenPrice(), SL, TP, 0);
        }
    }
//+------------------------------------------------------------------+
int CountSell() 
  {
    int count = 0;
    for (int trade = OrdersTotal()-1; trade>=0; trade--)
    {
       if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
       {
          if (OrderSymbol() == Symbol() && OrderMagicNumber) == Magic && OrderType() == OP_SELL)
             count++;
       }   
    }
    return(count);
  }
//-----------------------------------------------------------------------------------------------  
  int CountBuy() 
  {
    int count = 0;

    for (int trade = OrdersTotal()-1; trade>=0; trade--)
    {
       if (OrderSelect(trade, SELECT_BY_POS, MODE_TRADES))
       {
          if (OrderSymbol() == Symbol() && OrderMagicNumber) == Magic && OrderType() == OP_BUY)
             count++;
       }   
    }
    return(count);
  }

Ho segnato le linee con gli errori, file..... allegato, per favore date un'occhiata, grazie in anticipo!

 
 
danil77783:

Mi scuso per il comportamento scorretto, mi correggerò, vi do la mia parola :) sono completamente esausto ....

Ho segnato le linee con gli errori, ho allegato il file....., per favore cercatelo, grazie in anticipo!

È così difficile capire che ticet e tiket sono variabili diverse?

E non si può vedere la parentesi di chiusura senza anche la parentesi di apertura?

 
Grazie mille per il vostro aiuto!!! .... Risolto tutti gli errori con uno che non riesco a capire. Chiedo il vostro aiuto. Dove ho sbagliato di nuovo?
 
danil77783:
Grazie mille per il vostro aiuto!!! .... Corretti tutti gli errori con uno che non riesco a capire. Chiedo il vostro aiuto. Dove ho sbagliato di nuovo?
Avete questo blocco fuori dal corpo della funzione OnTick, togliete una parentesi graffa.
 
Alekseu Fedotov:
Avete questo blocco fuori dal corpo della funzione OnTick, rimuovete una staffa.

E poi mancherà una staffa.

La parentesi sopra la linea selezionata deve essere spostata in basso, prima della linea meno.

}
//+------------------------------------------------------------------+
 
Alexey Viktorov:

E poi mancherà una staffa.

La parentesi sopra la linea evidenziata deve essere spostata in basso prima della linea del meno.

Oh, sì, dovresti.

 

Tutto!!! .... Grazie mille. Compilato. Funziona!

 
danil77783: Tutto!!! .... Grazie mille. Compilato. Funziona!

Qual è il profitto? Anche questo pezzo qui con la funzione vuota può essere scartato. Prova...

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   
  }