Discussione sull’articolo "Manuale MQL5: Expert Advisor multivaluta: approccio semplice, accurato e rapido" - pagina 3

 
//+------------------------------------------------------------------+
//|Calcola il livello di Trailing Stop |
//+------------------------------------------------------------------+
double CalculateTrailingStop(int symbol_number,ENUM_POSITION_TYPE position_type)
  {
//--- Variabili per i calcoli
   double    level       =0.0;
   double    buy_point   =low[symbol_number].value[1];  // Valore basso per Buy
   double    sell_point  =high[symbol_number].value[1]; // Valore alto per Vendi

Non sarà corretto farlo. Se la posizione e il prezzo della barra si aprono con un gap, lo StopLoss non sarà impostato correttamente.

 
Jose:

L'articolo è chiaro e facile da seguire e fornisce le impostazioni nei file .set. Ho avuto un problema con le modalità di esecuzione dei simboli, in particolare con la condizione che controllava se era istantanea o di mercato e solo dopo permetteva l'apertura degli ordini, che ho dovuto rimuovere, ma tutto ha funzionato bene.

Ho una domanda. Ho visto diversi approcci avanzati, come questo, che sono costruiti da zero trascurando la struttura Expert, ExpertSignal, ExpertTrade...., anche se spendono molto codice (e tempo, suppongo) per replicare alcune delle sue caratteristiche. Qualcuno potrebbe darmi una giustificazione, per favore?

Ciao a tutti!

Sto cercando di testare questo EA ma ho appena ricevuto il seguente messaggio in Strategy Tester: "Errore nell'apertura della posizione: 4753 - 1 La posizione non è stata trovata". Non capisco perché. Questo accade quando la funzione "trade.PositionOpen" viene eseguita alla riga 159 del file "TradeFunctions.mqh". Qualcuno può darmi una mano per favore?

 

Potreste dirmi dove avviene l'inversione di posizione come descritto dall'autore? Ecco il suo codice con la descrizione

//--- Se esiste una posizione
   else
     {
      //--- Ottenere il tipo di posizione
      GetPositionProperties(symbol_number,P_TYPE);
      //--- Se la posizione è opposta al segnale e l'inversione di posizione è abilitata
      if(pos.type==opposite_position_type && Reverse[symbol_number])
        {
         //--- Ottenere il volume di posizione
         GetPositionProperties(symbol_number,P_VOLUME);
         //--- Regolare il volume
         lot=pos.volume+CalculateLot(symbol_number,Lot[symbol_number]);
         //--- Invertiamo la posizione
         OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment);
         return;
        }

guardare la funzione OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment);

//+------------------------------------------------------------------+
//||Apre una posizione|
//+------------------------------------------------------------------+
void OpenPosition(int symbol_number,
                  double lot,
                  ENUM_ORDER_TYPE order_type,
                  double price,
                  double sl,
                  double tp,
                  string comment)
  {
//--- Impostare il numero principale nella struttura commerciale
   trade.SetExpertMagicNumber(MagicNumber);
//--- Impostare la dimensione dello slittamento in punti
   trade.SetDeviationInPoints(CorrectValueBySymbolDigits(Deviation));
//--- Modalità di esecuzione istantanea e di esecuzione del mercato
// *** A partire dalla build 803, livelli di Stop Loss e Take Profit ***
// *** può essere impostato quando si apre una posizione in modalità SYMBOL_TRADE_EXECUTION_MARKET ***
   if(symb.execution_mode==SYMBOL_TRADE_EXECUTION_INSTANT ||
      symb.execution_mode==SYMBOL_TRADE_EXECUTION_MARKET)
     {
      //--- Se la posizione non è aperta, stampare un messaggio al riguardo
      if(!trade.PositionOpen(Symbols[symbol_number],order_type,lot,price,sl,tp,comment))
         Print("Errore nell'apertura di una posizione: ",GetLastError()," - ",ErrorDescription(GetLastError()));
     }
  }
È solo un blocco! Non c'è inversione... lo stesso vale per l'incremento del lotto! Puoi spiegarmi, forse mi sbaglio?
 
Tango_X:

Potreste dirmi dove avviene l'inversione di posizione come descritto dall'autore? Ecco il suo codice con la descrizione

Guardate la funzione OpenPosition(symbol_number,lot,order_type,position_open_price,sl,tp,comment);

È solo un blocco! Non c'è inversione... lo stesso vale per l'incremento del lotto! Puoi spiegarmi, forse mi sbaglio?

Esistono due tipi di conti di trading: netting e hedge.

C'eraAzioneEra su Netting.È su Hedge.
Comprare 1,0Vendere 2,0Vendere 1.0Comprare 1.0 e vendere 2.0
 
Vladimir Karputov:

Esistono due tipi di conti di trading: di compensazione e di copertura.

C'eraAzioneDiventato su NettingDiventato su Hedge
Comprare 1.0Vendere 2.0Vendere 1.0Comprare 1.0 e vendere 2.0

Ottenuto! Grazie!

 
"TimeframeToString" non esiste e non è dichiarato nell'articolo, si prega di sostituirlo con "EnumToString".