Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 674

 
Leo59:

Non riesco a far stampare() qualcosa nel log del tester. Come si fa?

Ecco il codice di OnInit() dell'Expert Advisor:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   SymbolSelect("EURJPY",true);
   Print(__FUNCTION__,", ",TimeToString(TimeCurrent()));
   SymbolSelect("USDJPY",true);
//---
   return(INIT_SUCCEEDED);
  }


Poi imposto un breakpoint (passo 1) ed eseguo il test sulla storia (passo 2):

OnInit()

e nel tester ottengo il risultato:

2016.11.23 13:02:24.191 2016.06.13 00:00:00   OnInit, 2016.06.13 00:00
 

Vladimir Karputov:

Poi, imposto un breakpoint (passo 1) ed eseguo un test della storia (passo 2):

Stranamente, questo pulsante blu, che indichi con il numero "2", non è attivo per me. Potrebbe essere perché sono in MT4?
 
Ma, tuttavia, se una cosa del genere è scritta:


Ci sono delle restrizioni sul funzionamento di alcune funzioni nel tester di strategia del terminale client.

Funzioni Print() e PrintFormat()

Per aumentare le prestazioni durante l'ottimizzazione dei parametri EA, le funzioniPrint() ePrintFormat() non vengono eseguite. L'eccezione è l'uso di queste funzioni all'interno del gestoreOnInit(). Questo ci permette di facilitare la ricerca delle cause degli errori quando questi si verificano.


perché le funzioniPrint() all'interno del gestoreOnInit() non funzionano come al solito?

E in generale, altre funzioni definite dall'utente in init() in modalità di ottimizzazione?
 
Leo59:
Stranamente, il mio pulsante blu, che indichi con "2", non è attivo. Potrebbe essere perché sono in MT4?

Sì, è per questo che posso testare liberamente qualsiasi EA sulla STORIA, cioè scegliere un timeframe, diciamo dal 2016.06.20 al 2016.11.11 e tranquillamente, passo dopo passo, fare il debug e osservare i cambiamenti nelle variabili, mentre tu non puoi farlo.

Quindi vale la pena continuare a sedersi su un vecchio terminale il cui supporto è terminato? O forse dovresti usare la moderna MetaTrader 5? In effetti, MetaTrader 5 ha già l'hedging:La piattaforma di trading MetaTrader 5 ha l'hedging.

 
Vladimir Karputov:

Sì, è per questo che posso testare liberamente qualsiasi EA sulla STORIA, cioè scegliere un timeframe, diciamo dal 2016.06.20 al 2016.11.11 e tranquillamente, passo dopo passo, fare il debug e osservare i cambiamenti nelle variabili, mentre tu non puoi farlo.

Quindi vale la pena continuare a sedersi su un vecchio terminale il cui supporto è terminato? O forse dovresti usare la moderna MetaTrader 5? Dopo tutto, MetaTrader 5 ha già l'hedging:La piattaforma di trading MetaTrader 5 ha l'hedging.

Perché posso eseguire il debugging in MT4 e osservare i cambiamenti delle variabili passo dopo passo? Cosa sto facendo di sbagliato?
 
Artyom Trishkin:
Perché posso fare il debug in MT4, e con calma, passo dopo passo, fare il debug e vedere le variabili cambiare? Cosa sto facendo di sbagliato?
Cosa stai facendo di sbagliato: leggere molto velocemente o saltare deliberatamente il testo.
 
Caro!!!!

Domanda sostanziale:

perché la funzionePrint() all'interno del gestoreOnInit() non funziona come al solito? E in generale, che dire di altre funzioni personalizzate in init() in modalità di ottimizzazione?

 
Leo59:
Caro!!!!

Domanda sostanziale:

perché la funzionePrint() all'interno del gestoreOnInit() non funziona come al solito? E in generale, che dire di altre funzioni definite dall'utente in init() in modalità di ottimizzazione?

Tutto è spiegato sopra. Ha funzionato e funziona. Vi ho mostrato un esempio.

Forum sul trading, sistemi di trading automatico e test di strategia

Domande dai principianti

Vladimir Karputov, 2016.11.23 12:07

Ecco il codice di OnInit() di EA:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   SymbolSelect("EURJPY",true);
   Print(__FUNCTION__,", ",TimeToString(TimeCurrent()));
   SymbolSelect("USDJPY",true);
//---
   return(INIT_SUCCEEDED);
  }


Metto inoltre un punto di interruzione (passo 1) e inizio il test sulla storia (passo 2):

OnInit()

E nel tester ottengo il risultato:

2016.11.23 13:02:24.191 2016.06.13 00:00:00   OnInit, 2016.06.13 00:00

 
Vladimir Karputov:

Quanto sopra è già stato spiegato. Ha funzionato e funziona. E vi ho fatto un esempio.


Vladimir, nel tuo esempio con breakpoint e test in esecuzione da MetaEditor, e non da tester nel terminale non è standard.

Lasciatemi ripetere:

1. Perché la funzionePrint() nel gestoreOnInit() non funziona come al solito?

2. Come funzionano le altre funzioni utente in init() in modalità di ottimizzazione?

 
Leo59:
Vladimir, nel tuo esempio con il breakpoint e l'inizio del test da MetaEditor, e non dal tester nel terminale non è standard.

Di nuovo:

1. Perché la funzionePrint() nel gestoreOnInit() non funziona come al solito?

2. Come funzionano le altre funzioni utente in init() in modalità di ottimizzazione?

Ho la sensazione che tu non abbia mai acceso il terminale.

Ecco il codice di OnInit() di Expert Advisor:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   SymbolSelect("EURJPY",true);
   Print(__FUNCTION__,", ",TimeToString(TimeCurrent()));
   SymbolSelect("USDJPY",true);
//---
   return(INIT_SUCCEEDED);
  }

Passo dopo passo. Primo passo - avviare il tester dal terminale (un solo passaggio), testando sulla storia, con visualizzazione:

Passo 1

Nel tester di strategia, otteniamo i seguenti risultati:

Passo 2

Motivazione: