Discussione sull’articolo "I Fondamenti dei Testing in MetaTrader 5"

 

Il nuovo articolo I Fondamenti dei Testing in MetaTrader 5 è stato pubblicato:

Quali sono le differenze tra le tre modalità di testing in MetaTrader 5 e cosa dovremmo cercare in particolare? Come si svolge il testing di un EA, facendo trading simultaneamente su più strumenti? Quando e in che modo vengono calcolati i valori degli indicatori durante il testing e in che modo vengono gestiti gli eventi? Come sincronizzare le barre di diversi strumenti durante il testing in modalità "solo prezzi di apertura"? Questo articolo si propone di fornire risposte a queste e a molte altre domande.

Se non ci sono posizioni aperte o ordini in sospeso, non abbiamo bisogno di effettuare tali controlli sui tick nascosti e l'incremento della velocità può essere sostanzialmente tranquillo. Questa modalità "Solo Prezzi di Apertura" è ben adatta per le strategie di testing, il cui procedimento riguarda solo l'apertura della barra e non utilizza gli ordini in sospeso, così come gli ordini StopLoss e TakeProfit. Per la classe di tali strategie, l'accuratezza necessaria del testing viene preservata.

Usiamo l'Expert Advisor Moving Average dal pacchetto standard come un esempio di EA che può essere testato in qualsiasi modalità. La logica di questo EA è costruita in modo tale che tutte le decisioni vengono prese all'apertura della barra e gli operazioni vengono eseguite immediatamente, senza l'uso di ordini in sospeso.

Esegue un testing dell’EA su EURUSD H1 su un intervallo dal 01.09.2010 al 31.12.2010 e confronta i grafici. La figura mostra il grafico saldo dal rapporto di testing per tutte e tre le modalità.


Autore: MetaQuotes

 
Va ricordato che quando si ottimizza con il criterio "Custom max", si cerca sempre un massimo locale. Per trovare il minimo locale, è possibile restituire da функции OnTester il valore inverso al valore calcolato della funzione:

return(1/значение_функции);



È meglio usare

return(-значение_функции);

altrimenti si rischia di incorrere nella divisione per zero, con una minore distorsione.

 
Urain:

È meglio usare

o si potrebbe ottenere una divisione a zero, e la distorsione è minore.

Concordo. Lo aggiungeremo all'articolo, grazie per il suggerimento!
 

Необходимо помнить, что при оптимизации по критерию "Custom max" всегда ищется локальный максимум. Для поиска локального минимума можно из функции OnTester ..........

La parola "locale" dovrebbe essere sostituita da "globale". È l'estremo globale che viene cercato nell'intervallo dato.

 
joo:

La parola "locale" dovrebbe essere sostituita da "globale". È l'estremo globale che viene ricercato in un determinato intervallo.

È difficile da dire. Da un lato, l'ottimizzazione non garantisce che l'estremo globale venga trovato.
 
Rosh:
È difficile dirlo. Da un lato, l'ottimizzazione non garantisce che venga trovato un estremo globale.
Quale sarà l'estremo locale o globale, è un'altra questione. Ma è l'estremo globale che viene ricercato: questo è lo scopo dell'ottimizzazione.
 
Rosh:
Concordo. Aggiungerò l'articolo, grazie per il suggerimento!
Aggiunto
 
Potreste spiegare la differenza nella creazione di un handle di un indicatore (ad esempio Alligator) utilizzando iAlligator(...) e IndicatorCreate(...) ?
 
slyusar:
Mi spiegate la differenza nella creazione di un handle di un indicatore (ad esempio Alligator) utilizzando iAlligator(...) e IndicatorCreate(...) ?
Le maniglie non differiscono "al tatto". Ma questo non è l'argomento dell'articolo.
 
Rosh:
Le maniglie non differiscono per "tocco". Ma questo non è l'argomento di questo articolo.

Non intendevo differenze al tatto.....

Lei scrive:

"Che ci sia o meno una chiamata all'indicatore in un particolare gestore di eventi, tutti gli indicatori i cui handle sono stati creati da iCustom() o IndicatorCreate() saranno forzatamente ricalcolati prima di chiamare la funzione del gestore di eventi."

Domanda:

Perché gli indicatori i cui handle sono stati creati utilizzando (se torniamo ad Alligator) iAlligator() non saranno ricalcolati, qual è la differenza rispetto a IndicatorCreate() , cosa è meglio, cosa è peggio, cosa si dovrebbe usare e perché?

 
Leggere "Tutti gli indicatori creati da funzioni di Indicatori tecnici o IndicatorCreate()...".