Analisi dei risultati dei test e ottimizzazione nel tester di strategie MetaTrader 5 - pagina 5

 
Anatoli Kazharski:

La stessa cosa che si sta facendo ora. Caricare i simboli durante il processo di test.

Oppure, immediatamente prima dell'inizio del test, definire e aggiungere i simboli selezionati per il test nella lista, se tale lista esiste. In alternativa, se si determina che i simboli che sono nella cache non sono più necessari, allora non usarli nel test.

Non posso avere una risposta definitiva in ogni caso, ma solo a livello di ipotesi e suggerimenti di opzioni.

Ok.

L'esperto non fa trading. Ma siccome sembra controllare la possibilità di entrare nel mercato, un'altra coppia viene caricata in aggiunta a quella principale per calcolare i requisiti di margine. I dati su due coppie sono memorizzati nella cache in modo che non si perda tempo nel disimballare e preparare i dati durante il test successivo.

L'Expert Advisor inizia a fare trading. La seconda coppia mancante viene caricata per calcolare il profitto. Questi dati vengono memorizzati di nuovo nella cache, in modo che non si perda tempo nel decomprimere e preparare i dati durante il test successivo.

Personalmente, non ti piace perdere tempo in applicazioni "inutili" di zecche alla storia. A tutti gli altri non piace perdere molto più tempo per il reunpacking e la preparazione dei dati.

Ok, rispondi tu. Perché non, finché non c'è una richiesta, applicare zecche di strumenti "superflui"? "Buona domanda" (ts) E da questo momento, il momento della richiesta, bisogna costruire la storia, (e inoltre avere delle zecche, perché qualcuno può anche richiederle). La perdita di tempo sarà ancora maggiore che se costruiamo gradualmente la storia (come la stiamo costruendo ora).

Non c'è garanzia che un esperto che usa una particolare storia non la userà su altri passaggi. 99% di possibilità che la storia nei passaggi successivi sia la stessa di quella usata nei passaggi precedenti

 
Sono d'accordo con Slava - l'esempio è sferico.
 
Slava:

Ok.

Expert Advisor non fa trading. Ma a causa del fatto che sembra controllare la possibilità di entrare nel mercato, un'altra coppia viene caricata in aggiunta alla coppia principale per calcolare i requisiti di margine. I dati su due coppie sono memorizzati nella cache in modo che non si perda tempo nel disimballare e preparare i dati durante il test successivo.

L'Expert Advisor inizia a fare trading. La seconda coppia mancante viene caricata per calcolare il profitto. Questi dati vengono memorizzati di nuovo nella cache, in modo che non si perda tempo nel decomprimere e preparare i dati durante il test successivo.

Personalmente, non ti piace perdere tempo in applicazioni "inutili" di zecche alla storia. A tutti gli altri non piace perdere molto più tempo per il reunpacking e la preparazione dei dati.

Ok, rispondi tu. Perché non, finché non c'è una richiesta, applicare zecche di strumenti "superflui"? "Buona domanda" (ts) E da questo momento, il momento della domanda, bisogna costruire la storia, (e inoltre avere delle zecche, perché qualcuno potrebbe anche richiederle). La perdita di tempo sarà ancora maggiore che se costruiamo gradualmente la storia (come la stiamo costruendo ora).

Non è possibile prevedere in modo affidabile che l'Expert Advisor che usa una certa cronologia non userà la stessa cronologia su altri passaggi. 99% di possibilità che la storia usata nei successivi passaggi di test sia la stessa di quella usata nei passaggi precedenti

Non insisto molto. Avresti potuto iniziare subito con questo chiarimento. Se sai con certezza che la tua opzione è la migliore, puoi risparmiare tempo senza sprecarlo in discussioni. Ma è necessario un chiarimento, se posso, perché non sono sicuro di essere stato capito.

Tutto questo chiarimento riguarda il processo di ottimizzazione?

E se si trattasse solo del processo del singolo test? Perché i tick di GBPUSD e AUDUSD dai test precedenti quando solo EURUSD viene testato?

Semplicemente non vedo in quale caso potremmo aver bisogno di tick di altri simboli (GBPUSD e AUDUSD), quando solo un simbolo (EURUSD) è necessario. Ho bisogno di alcuni esempi e cifre specifiche.

E se ho già testato 20 simboli alla volta? Perché ho bisogno dei tick di tutti questi simboli se devo testarne solo uno? Più personaggi sono stati usati nel precedente test singolo, più tempo ci vorrà per il test su uno solo. Dopotutto, posso passare al test dei personaggi da un gruppo di personaggi completamente diverso. E non ho affatto bisogno dei dati del precedente gruppo di personaggi in questo momento.

E di che tipo di tempo stiamo parlando (spacchettare/preparare)? Quanto tempo ci vuole per spacchettare e preparare i dati? E quanto tempo aumenta per un test singolo dopo un test con più simboli?

Ora faccio i test e vi mostro i risultati. Ho bisogno di un chiarimento su un esempio specifico.

 
Anatoli Kazharski:
Manca la casella di controllo "Reset cache".
 

1 simbolo: EURUSD

2018.01.29 19:30:33.875 Core 1  EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0:00:00.078. Test passed in 0:00:27.266 (including ticks preprocessing 0:00:01.282).
2018.01.29 19:30:33.875 Core 1  EURUSD,M5: total time from login to stop testing 0:00:27.344 (including 0:00:00.078 for history data synchronization)
2018.01.29 19:30:33.875 Core 1  837 Mb memory used including 8 Mb of history data, 512 Mb of tick data

//---

5 simboli: EURUSD,GBPUSD,USDJPY,AUDUSD,USDCAD

2018.01.29 19:59:39.750 Core 1  EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0:00:00.078. Test passed in 0:11:52.156.
2018.01.29 19:59:39.750 Core 1  EURUSD,M5: total time from login to stop testing 0:11:52.234 (including 0:00:00.078 for history data synchronization)
2018.01.29 19:59:39.750 Core 1  130637614 total ticks for all symbols
2018.01.29 19:59:39.750 Core 1  AUDUSD: passed to tester 20717720 ticks
2018.01.29 19:59:39.750 Core 1  EURUSD: passed to tester 26169180 ticks
2018.01.29 19:59:39.750 Core 1  GBPUSD: passed to tester 27742039 ticks
2018.01.29 19:59:39.750 Core 1  USDCAD: passed to tester 23409978 ticks
2018.01.29 19:59:39.750 Core 1  USDJPY: passed to tester 32598697 ticks
2018.01.29 19:59:39.750 Core 1  1574 Mb memory used including 44 Mb of history data, 1088 Mb of cached tick data (total memory for tick data 2495 Mb)

//---

Ora abbiamo bisogno di testare di nuovo su un singolo simbolo.

1 simbolo: EURUSD

2018.01.29 20:04:25.737 Core 1  EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0:00:00.078. Test passed in 0:01:34.203.
2018.01.29 20:04:25.737 Core 1  EURUSD,M5: total time from login to stop testing 0:01:34.281 (including 0:00:00.078 for history data synchronization)
2018.01.29 20:04:25.737 Core 1  130637614 total ticks for all symbols
2018.01.29 20:04:25.737 Core 1  AUDUSD: passed to tester 20717720 ticks
2018.01.29 20:04:25.737 Core 1  EURUSD: passed to tester 26169180 ticks
2018.01.29 20:04:25.737 Core 1  GBPUSD: passed to tester 27742039 ticks
2018.01.29 20:04:25.737 Core 1  USDCAD: passed to tester 23409978 ticks
2018.01.29 20:04:25.737 Core 1  USDJPY: passed to tester 32598697 ticks
2018.01.29 20:04:25.737 Core 1  1288 Mb memory used including 44 Mb of history data, 1024 Mb of cached tick data (total memory for tick data 2495 Mb)

//---

In questo caso, perché abbiamo bisogno dei tick di questi simboli? A causa di questo carico extra, il tempo di prova su un simbolo è aumentato di più di 3 volte. L'intervallo di tempo è di un anno. E se avessi bisogno di fare un test su 5 anni?

 
fxsaber:
Manca la casella di controllo "Reset cache".
Potrebbe essere possibile fare a meno della casella di controllo. Ha solo bisogno di essere trovato.
 
fxsaber:
Manca la casella di controllo "Reset cache".

Abbiamo avuto un tick così (simile) in quattro. L'abbiamo rimosso. Perché c'è stato un malinteso da parte della maggior parte degli utenti e un sacco di domande.

 
Slava:

Abbiamo avuto un tick così (simile) in quattro. L'abbiamo rimosso. Poiché c'era un malinteso tra la maggior parte degli utenti e molte domande.

C'è sempre terminal.ini:)
 

Prossimamente verranno pubblicati tre post:

  1. Quanto dura un test EA nello strategy tester?
  2. Quanto tempo ci vuole per ottimizzare i parametri su un computer?
  3. Quanto tempo ci vuole per ottimizzare i parametri nel cloud?

Per i test userò il mio Expert Advisor. Puoi eseguire la stessa serie di test e presentare i tuoi risultati. Nel mio caso, ricevo diverse decine di migliaia di offerte durante 1 anno.


1. Quanto dura un test di un Expert Advisor nello strategy tester?

Prendiamo come esempio i risultati del test nella modalitàsolo prezzo aperto.M5 timeframe (dati a cinque minuti). Tipo di contoHedge. Periodo di tempo un anno(2017.01.01-2018.01. 01).

Simbolo: EURUSD

EURUSD,M5: 281877 ticks, 74300 bars generated. Test passed in 0:00:01.453.
282883 total ticks for all symbols
EURUSD: passed to tester 282883 ticks
466 Mb memory used including 8 Mb of history data, 64 Mb of tick data

Secondo i risultati del test di cui sopra, possiamo vedere che il test su un simbolo dura1-1,5 secondi per un periodo di un anno.

Ora proviamo a testare una coppia di valute senza valuta del conto. Per esempio, se il tuo conto è in USD, allora per il test prendiamo un simbolo che non ha USD. Per esempio, EURCHF. La ragione è che per i calcoli corretti dei requisiti di margine e dei profitti in questo caso il test userà i simboli EURUSD e USDCHF, e questo a sua volta aumenta il tempo del test.

Simbolo: EURCHF

EURCHF,M5: 281063 ticks, 74273 bars generated. Test passed in 0:00:01.860.
846826 total ticks for all symbols
EURCHF: passed to tester 282468 ticks
EURUSD: passed to tester 282883 ticks
USDCHF: passed to tester 281475 ticks
467 Mb memory used including 8 Mb of history data, 64 Mb of tick data

Come possiamo vedere, il test per i tassi incrociati sarà approssimativamente due volte più lungo. In questo caso il test ha richiesto1,5-2 secondi. Ora proviamo a testarlo su diversi simboli.

Simboli: EURUSD,GBPUSD,USDJPY

EURUSD,M5: 282881 ticks, 74300 bars generated. Environment synchronized in 0:00:00.031. Test passed in 0:00:07.172.
EURUSD,M5: total time from login to stop testing 0:00:07.203 (including 0:00:00.031 for history data synchronization)
853054 total ticks for all symbols
EURUSD: passed to tester 282883 ticks
GBPUSD: passed to tester 285067 ticks
USDJPY: passed to tester 285104 ticks
628 Mb memory used including 26 Mb of history data, 64 Mb of tick data

Simboli: EURCHF,AUDCAD,AUDNZD

EURCHF,M5: 282465 ticks, 74273 bars generated. Environment synchronized in 0:00:00.031. Test passed in 0:00:12.109.
EURCHF,M5: total time from login to stop testing 0:00:12.140 (including 0:00:00.031 for history data synchronization)
2264405 total ticks for all symbols
AUDCAD: passed to tester 284995 ticks
AUDNZD: passed to tester 285398 ticks
AUDUSD: passed to tester 282069 ticks
EURCHF: passed to tester 282468 ticks
EURUSD: passed to tester 282883 ticks
NZDUSD: passed to tester 282153 ticks
USDCAD: passed to tester 282964 ticks
USDCHF: passed to tester 281475 ticks
854 Mb memory used including 26 Mb of history data, 192 Mb of tick data

Quando si testano più simboli, la velocità del test rallenta. Purtroppo non è possibile farlo diversamente ora, senza perdere la precisione dei test. Ma, come accennato in precedenza, nel prossimo aggiornamento gli sviluppatori del terminale amplieranno le capacità di MQL5, aggiungendo la possibilità di eseguire test multi-simbolo molto più velocemente.

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

2. Quanto tempo ci vuole per ottimizzare i parametri del mio computer?

Come esempio, proviamo a ottimizzare i parametri sui dati del brokerAlpari su diversi simboli in modalitàsolo prezzo aperto.M5 timeframe (dati di cinque minuti). Tipo di contoHedge. Periodo di tempo un anno(2017.01.01-2018.01. 01).

Simbolo: EURUSD

result cache used 7953 times
genetic optimization finished on pass 15616 (of 504330836375520000)
optimization done in 28 minutes 56 seconds
local 7663 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Simbolo: EURCHF

result cache used 2507 times
genetic optimization finished on pass 8704 (of 504330836375520000)
optimization done in 32 minutes 50 seconds
local 6197 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Simboli: EURUSD,GBPUSD,USDJPY

result cache used 9892 times
genetic optimization finished on pass 18176 (of 504330836375520000)
optimization done in 2 hours 15 minutes 03 seconds
local 8284 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Simboli: EURCHF,AUDCAD,AUDNZD

result cache used 7281 times
genetic optimization finished on pass 13312 (of 504330836375520000)
optimization done in 3 hours 13 minutes 37 seconds
local 6031 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Nel prossimo futuro, il terminaleMetaTrader 5 sarà aggiornato, e la velocità di test e ottimizzazione sarà molto più veloce. Forse allora sarà possibile condurre l'ottimizzazione anche nella modalitàAll ticks. Inoltre, utilizzando il servizioMQL5 Cloud Network diventerà più redditizio, in quanto la velocità di ottimizzazione aumenterà.

Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Большую часть времени современные компьютеры простаивают и не используют всех возможностей процессора. Мы предлагаем задействовать их с пользой. Вы можете сдавать мощности вашего компьютера другим участникам нашей сети для выполнения разнообразных...
Motivazione: