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

 
Artyom Trishkin:
Aperto come? Qual è il motivo dell'apertura?

La ragione per aprire una posizione sull'euro e la ragione per aprire una posizione sulla sterlina. Ovviamente, deve essere in qualche modo scritto nel codice dell'Euro Expert Advisor. Ma come - non capisco.

 
novichok2018:

La ragione per aprire una posizione sull'euro e la ragione per aprire una posizione sulla sterlina. Ovviamente, deve essere in qualche modo scritto nel codice dell'Euro Expert Advisor. Ma come - non capisco.

Si fa attraverso il solito if() con controllo dei commenti. E nei commenti dell'ordine, inseriamo l'ora di apertura o il biglietto dell'ordine da cui si apre il secondo ordine.
 
Alexandr Sokolov:
Il codice è implementato attraverso il solito if() con controllo dei commenti. Nel commento dell'ordine, devi inserire l'ora di apertura o il biglietto dell'ordine da cui si apre il secondo ordine.

Come può l'if() del codice Euro EA essere riferito al codice Pound EA? Come posso vedere la posizione della sterlina nel codice dell'euro?

 
novichok2018:

Come può l'if() del codice Euro EA essere riferito al codice Pound EA? Come vede la posizione della sterlina nel codice dell'euro?

Ti stai complicando le cose da solo. È sufficiente fare un ciclo degli ordini in euro e confrontare ogni ordine in euro con tutti gli ordini in sterline. E se nessuno dei commenti corrisponde, allora si apre un ordine in sterline con il commento in cui il biglietto o il tempo di apertura dell'ordine in euro

 

Puoi per favore illuminarmi su come trasferire i risultati dell'ottimizzazione dell'EA nel tester MT5, all'EA sul pannello grafico MT5? Come salvarli?

Nel manuale e Google non può trovare ancora ...

MOLTI GRAZIE.

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
Alexandr Sokolov:

Ti stai complicando le cose da solo. È sufficiente fare un ciclo degli ordini in euro e confrontare ogni ordine in euro con tutti gli ordini in sterline. E se nessuno dei commenti corrisponde, allora si apre un ordine di sterlina con il commento del biglietto o il tempo di apertura di un ordine sull'euro.

Per essere onesti - non capisco niente. La situazione è la seguente: non ci sono ordini né sull'euro né sulla sterlina. E abbiamo condizioni per aprire una posizione nella sterlina e la posizione viene aperta. L'apertura della posizione sulla sterlina dovrebbe diventare un segnale per aprire una posizione sull'euro e la posizione dovrebbe aprirsi. Quindi cosa dovrei fare nel ciclo? E non capisco nulla dei commenti. Puoi scrivere un codice di esempio per aiutarmi a capirlo?

E nel codice della sterlina, quando appaiono le condizioni, possiamo aprire due posizioni - una per la sterlina e l'altra per l'euro specificando il simbolo richiesto in OrderSend? Funzionerà?

 
novichok2018:

Per essere onesti - non capisco nulla. La situazione è la seguente: non ci sono ordini né sull'euro né sulla sterlina. E ci sono condizioni per aprire una posizione nella sterlina e la posizione si è aperta. L'apertura della posizione sulla sterlina dovrebbe essere un segnale per l'apertura della posizione sull'euro e la posizione dovrebbe aprirsi. Quindi cosa dovrei fare nel ciclo? E non capisco nulla dei commenti. Puoi scrivere un codice di esempio per farmi capire?

int ticket;
for(int  i = 0; i < OrdersTotal(); i++)
  {
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
     {
      if(OrderMagicNumber() == id_number1 && OrderSymbol() == "GBPUSD")
        {
         if(SecondExpert(OrderTicket()) == false)
           {
            ticket = OrderSend(...);
           };
        };
     };
  };

//----------------------------------------------------------------------------------------------------------------------

bool SecondExpert(int ticket)
  {
   bool se = false;
   for(int i = 0; i < OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
        {
         if(OrderMagicNumber() == id_number2 && OrderSymbol() == "EURUSD")
           {
            if(OrderComment() == (string)ticket)
              {
               se = true; break;
              };
           };
        };
     };
  //-----------------------------------------------------------------
   return(se);
  }


Ecco come la vedo io).

 
novichok2018:

Per essere onesti, non ho capito nulla. La situazione è la seguente: non ci sono ordini né sull'euro né sulla sterlina. E abbiamo condizioni per aprire una posizione nella sterlina e la posizione si è aperta. L'apertura della posizione sulla sterlina dovrebbe innescare l'apertura della posizione sull'euro e la posizione dovrebbe aprirsi. Quindi cosa dovrei fare nel ciclo? E non capisco nulla dei commenti. Puoi scrivere un codice di esempio per farmi capire?

Se è in un EA dovrebbe essere qualcosa del genere

if(условие для EURUSD)
 {
  OrderSend("EURUSD", ... );
  OrderSend("GBPUSD", ... );
 }

if(условие для GBPUSD)
 {
  OrderSend("GBPUSD", ... );
  OrderSend("EURUSD", ... );
 }

O ancora più semplice

if(условие для EURUSD || условие для GBPUSD)
 {
  OrderSend("EURUSD", ... );
  OrderSend("GBPUSD", ... );
 }
 
Alexey Viktorov:

Se è in un EA dovrebbe essere qualcosa del genere

O ancora più semplice

Sì, l'ho immaginato in qualche modo, ma non posso verificare il lavoro sulla storia, perché l'apertura di una posizione su EUR dovrebbe avvenire a causa della condizione per GBP e non si riflette nel codice per EUR, e la storia è raffigurata su EUR. Da qui l'incertezza sulla correttezza della decisione.

 
novichok2018:

Sì, è come l'ho immaginato, ma non posso verificare se funziona sullo storico, perché l 'apertura di una posizione sull'euro dovrebbe avvenire dalla condizione per la sterlina e non si riflette nel codice per l'euro, mentre lo storico è visualizzato sull'euro. Da qui l'incertezza sulla correttezza della decisione.

La funzionebool ExistPositions() di Igor Kim restituisce la bandiera di esistenza della posizione, è troppo difficile per me adattarla alle mie condizioni specifiche. Ma non credo che sarà messo alla prova nella storia.

Se nessuno ha un codice, effettivamente testato nel mondo reale, da mostrarmi, lo proverò scientificamente. Grazie.