Se vedi tutto strano devi riaggiornare la cache del tuo browser. premendo CTRL + F5. E' dovuto all'aggiornamento del forum.

Backtest con Metatrader 4

Di tutto un po' su Metatrader.
Rispondi
Avatar utente
positiveday
Amministratore
Messaggi: 1859
Iscritto il: sab mag 28, 2016 9:23 pm

Backtest con Metatrader 4

Messaggio da positiveday » lun lug 22, 2019 7:54 am

Anni addietro, quando ero uno degli amministratori di forexometro (vecchia versione) avevo scritto della pagine della wiki, che mi ero ... inventato.
Poi forexometro (old) è sparito nell'abisso degli attacchi hacker e tutto il database è andato perso (non da me :mrgreen: ).
Su archive.org ho recuperato tempo fa un altro pezzetto della wiki, questo è quello sui backtest.
Visto che non l'ho mai postato lo aggiungo qui sotto.
:D
http://widgets.myfxbook.com/widget?id=1 ... &color=red
Trovi interessanti i contenuti di forexometro? Considera la possibilità di iscriverti! :mrgreen: e poi di partecipare ...

Avatar utente
positiveday
Amministratore
Messaggi: 1859
Iscritto il: sab mag 28, 2016 9:23 pm

Re: Backtest con Metatrader 4

Messaggio da positiveday » lun lug 22, 2019 8:03 am

Backtest Metatrader4

La funzionalità del backtest in Metatrader è di estrema utilità per valutare il funzionamento degli expert advisors ( detti Consiglieri esperti).
E' certamente vero che non c'è niente di meglio del test live di un expert, purtroppo però quasi tutti gli expert hanno bisogno di essere ottimizzati con le condizioni di mercato recenti e passate per poter guadagnare realmente, quindi un expert che non è stato in grado di guadagnare l'altro ieri, difficilmente sarà in grado di farlo fra una settimana.
Oltretutto, un expert advisor che ha guadagnato regolarmente nei precedenti sei mesi ha buone probabilità di farlo anche nel futuro, certamente di più di un expert che ha sempre perso denaro nell'immediato passato.

Cosa fa il backtester di Metatrader.
Fa "credere" all'expert che stia lavorando nel passato fornendogli date e quote della coppia di lavoro, inerenti un periodo passato che possiamo scegliere a piacere, inviandogli delle quotazioni basate sullo storico dei prezzi scaricato dal nostro broker o dal server di Metaquotes.
Questa simulazione di funzionamento è, per il nostro expert, reale, con la sola differenza che i tempi tra un tick e l'altro sono ridottissimi, ed il tempo, quindi per il nostro expert passa molto in fretta. Il backtester si occupa di creare questo tempo "artificiale" e velocizzato per poter effettuare dei backtest il più possibile affidabili in un tempo decisamente ridotto.

Il problema delle quote
Il sistema di Metatrader4 sullo storico delle quote non salva i tick di ogni coppia di lavoro, il minimo intervallo di tempo è il minuto e quindi per ogni barra da 1 minuto salva i classici Open, Close, High, Low.
Questa limitazione rende impossibile effettuare dei backtest per expert particolari quali scalper che analizzano la dimensione dei tick per esempio poichè i tick singoli vengono creati artificialmente dal backtester di metatrader sui valori di High e Low di ogni singolo minuto.
Quindi, il tester, "presenta" all'expert sotto test, un Open all'inizio del minuto, delle oscillazioni casuali del prezzo che andranno però dall'High al Low che sono abbinati alla barra di quel minuto, ed all'ultimo secondo presenterà il Close di quella barra e via così.

Attendibilità delle serie dei prezzi storici.
E' convinzione diffusa che sia utile effettuare i backtest su "questo" e "sull'altro" broker, per vedere il tal expert come si comporta. In realtà tutti i Metatrader di tutti broker non forniscono le quote dello specifico broker, ma scaricano, tutti quanti, le serie storiche dal server di Metaquotes, e questo è quanto infatti viene scritto nel "disclaimer" prima di avviare un nuovo scaricamento di quote.
Quindi è illusorio credere di fare dei backtest attendibili su uno specifico broker, in quanto le quote storiche sono uguali per tutti. Inoltre la pessima qualità delle quote scaricate da Metquotes rende assolutamente inattendibili i backtest effettuati con tali dati. Sono presenti "buchi" di settimane qua e là nelle serie storiche e quindi l'uso di tali quote per i backtest non ha alcun senso.
L'unico broker che offre le proprie quote reali per i backtest è Alpari Russia o Nuova Zelanda, Alpari Inghilterra si appoggia comunque a Metaquotes.
Quindi per chi volesse effettuare i backtest con una buona attendibilità non rimane che un demo di Alpari.ru per avere le quote sufficientemente attendibili. Inoltre, ormai, se si rimane nell'ambito di broker di una certa serietà le quote si differenziano minimamente da broker a broker. Nel caso specifico in cui si desideri effettuare dei backtest con dati di stoplevel, freezelevel od altro, comunque specifici di un certo broker non rimane che copiare i dati storici (files .hst) da Alpari.ru al broker desiderato proteggendo i files dalla scrittura (attributo "r" - read only), considerando che comunque il GMT offset di Alpari.ru rimarrà invariato.

Configurazione Metatrader
E' necessario configurare Metatrader per utilizzare tutte le barre dello storico. Selezionare "Strumenti" - "Opzioni" - "Grafici" . Inserire 999999999 come penultima casella numerica della finestra : "Numero massimo barre ..", quella che inglese è contrassegnata con "Max bars in history". Altrettanto l'ultima casella serve per indicare quante barre può contenere al massimo un grafico. Se ad esempio si desidera visualizzare il grafico di un backtest di un anno ad 1 minuto sarà necessario che il grafico possa visualizzare almeno : 365 x 24 x 60 = 525.600 barre (anche meno considerando che mancano i weekend e certe festività). Attenzione che mantenere un alto numero di barre di visualizzazione dei grafici richiede molta memoria da parte di Metatrader ed inoltre rallenta di molto il funzionamento dello stesso specialmente con più grafici aperti, quindi aumentare il numero delle barre nei grafici solo a ragion veduta e solo per il tempo dei backtest, riportarle quindi ai valori iniziali.

I prezzi storici
Per prima cosa è necessario scaricare dal server del broker o da quello di Metaquotes la storia delle quote della coppia di cui andiamo ad effettuare il backtest. Qui ci sono due sistemi.
Quello ufficiale prevede di aprire con F2 il Centro Storia, aprire la coppia interessata col doppio click, selezionare il periodo 1Minuto col doppio click, cliccare su "Download", confermare il "Disclaimer", eseguire più volte il download finchè non appare il messaggio che non sono più presenti nuovi dati e se si desidera ricalcolare tutti i timeframes basandoli sulle nuove barre da 1 minuto appena scaricate, confermare con "Si". Al termine chiudere il "Centro storia", chiudere Metatrader, attendere che scarichi i dati sul disco (led dell'Hard Disk spento per un po') e quindi riaprirlo. In questo modo abbiamo scaricato la storia per la coppia in questione.
Il sistema meno ufficiale prevede di scaricare le quote reali dal nostro broker. Qui va da broker a broker, purtroppo molti broker sono al corrente di questa possibilità e limitano la storia disponibile. Si tratta di aprire un grafico ad 1 Minuto, disabilitare lo "Scorrimento automatico del grafico", di premere quindi Pagina Su all'infinito finchè non si può più tornare indietro nel tempo, il processo può durare molti minuti. Ripetere l'operazione su tutti i successivi timeframes, che ovviamente richiederanno meno tempo. Verificare su quello ad 1 minuto la data di partenza, quella sarà la data oltre la quale non potremo andare indietro nel tempo col backtest se vorremo effettuarlo con le quote reali del nostro broker. Ovviamente se prima si è già scaricata la storia da Metaquotes non otterremo uno scaricamento delle quote dal nostro broker ma vedremo solo i dati già scaricati dal server di Metaquotes. Quindi se si ha già precedentemente scaricato la storia di una coppia si deve prima cancellare totalmente con la procedura qui sotto.

Se si avesse il dubbio di avere uno storico dei prezzi inattendibile o corrotto e nonostante successivi scaricamenti e ricalcoli non si eliminano gli errori nella storia effettuare le seguenti operazioni : - uscire da metatrader - con le risorse del computer posizionarsi nella directory di installazione di Metatrader, normalmente "\programmi\nome del broker\" - aprire la cartella "History" - aprire la cartella downloads ed eliminare la sottocartella col nome della coppia ed il suo contenuto - sempre nella cartella "History" vedremo anche una o più cartelle col nome del server del nostro broker in genere con aggiunto demo o real alla fine - aprire quella che ci interessa, se abbiamo visto la storia corrotta in modalità demo sara la cartella che finisce per demo da aprire - all'interno della cartella scelta eliminare tutti i file che iniziano col nome della coppia in questione (es. AUDCAD30.hst AUDCAD43200.hst ecc. ecc) - aprire la cartella "tester" presente sempre nella directory di installazione e quindi la sottocartella "history" e cancellare l'intero contenuto - riavviare Metatrader e ricaricare la storia della coppia desiderata

Il Modello
Offre tre opzioni, la prima è quella che offre più precisione (notare il precissimo), quindi è basata sul timeframe ad 1 minuto ed i tick simulati sono basati sui vari High e Low delle barre ad 1 minuto.
La seconda sono i "Punti di controllo", vengono presi dal timeframe inferiore a quello di test ( il "Periodo" più sotto) i dati Open Close High Low e fatti vedere all'expert, dovendo generare molti meno tick, il backtester impiega molto meno tempo, ma l'affidabilità del backtest scende di molto, va usato solo dietro precisa indicazione di chi ha realizzato l'expert in caso di ottimizzazione.
La terza è ancora più "brutale" ed invia all'expert solo i prezzi di apertura delle barre del timeframe corrente, anche qui è utile solo in particolari casi di ottimizzazione.


Il periodo temporale del backtest

Scegliere le date di inizio e fine test spuntando "Data di utilizzo" ed inserendo il periodo richiesto. Ovviamente non dovrà essere antecedente allo storico delle quote che abbiamo precedentemente scaricato.
Va anche fatta attenzione che siano presenti i dati temporali antecedenti l'inizio del backtest.
Se avviamo il backtest, ad es. il 01/01/2015 e l'expert advisor utilizza una media H1 a 200 periodi, saranno necessari i date antecedenti per 200 barre ad H1 al 01/01/2015, considerando che una settimana di Forex sono circa 120 barre H1 (quindi meno del semplicistico 24 x 7).
Salvo che accettiamo trades sbagliate per circa due settimane dall'inizio del backtest.

Il periodo o timeframe del backtest
Selezionare dopo "Periodo:" il grafico sul quale lavorerà l'expert. Ogni expert, salvo rari casi, analizza le barre del grafico sul quale è situato : va scelto da expert ad expert.

Il Simbolo o la coppia
Selezionare la coppia per la quale si è scaricata la storia e che si vuole impiegare nel backtest.

Il Consigliere esperto
Dalla lista selezionare il nome dell'expert advisor che vogliamo provare.

Le Proprietà esperte
Le proprietà del consigliere esperto (malamente tradotte in Proprietà esperte) stanno ad indicare tutti quei parametri (variabili) che potremo configurare nel nostro expert. Servono anche per configurare i parametri della eventuale ottimizzazione che è possibile effettuare e che forse è la funzione più potente del backtester di Metatrader. Aprendo queste proprietà nelle zona "Testing" troviamo il deposito iniziale, che è il capitale col quale inizierà il test e la sua valuta.
In "Posizioni" potremo scegliere se attivare solo i Buy solo i Sell od entrambi (long=buy=compro, short=sell=vendo).
Nei "Valori di input" inseriremo i parametri esterni configurabili del nostro expert, come da manuale del produttore dell'expert e da nostra preferenza nei vari fattori di rischio od altri.
Con i tasti "Carica" e "Salva" potremo sia caricare dei file con estensione .set che magari il produttore dell'expert ha fornito col medesimo oppure potremo salvare l'insieme di tutti i parametri esterni dell'expert come da nostre preferenze.
Va notato che per il backtester i file .set vengono letti e salvati comunemente nella directory "tester" sotto "programmi/nome dell'intsallazione di metatrader" mentre invece nel funzionamento reale, al momento dell'appicazione sul grafico dell'expert, se faremo click su "Carica" verrà mostrato il contenuto della cartella "experts/presets" sempre sotto il percorso di installazione di Metatrader.

Proprietà del simbolo
Si apre una finestra che mostra i parametri che saranno usati per il backtest, sono identici a quelli correnti per la coppia in questione e non possono essere modificati. Qui va notato, che lo Spread (differenza tra Ask e Bid) non è modificabile ed è quello corrente per quella coppia. Per il backtest di programmi il cui funzionamento è molto sensibile allo spread (scalper) è indispensabile che il backtest venga effettuato quando lo spread sia il più possibile identico a quello in cui lavorerà realmente il programma. Inutile effettuare un backtetst di uno scalper con lo spread a 1,8 pips quando poi la notte andrà di media magari sui 4.

Grafico aperto
E' la penosa traduzione di "Open chart", che sta a significare "Apri il grafico alla fine del backtest", terminato il backtest si potranno quindi vedere le singole operazioni sul grafico dove avrà lavorato l'expert, sempre ammesso che l'expert non contenga nella funzione "deinit" un ObjectsDeleteAll() che cancellerà ogni traccia del suo funzionamento dal grafico ... Se si sta eseguendo un backtest per un periodo di tempo molto lungo bisogna fare attenzione al numero delle barre totali analizzate presenti nel report finale. Se il numero delle "Barre sotto esame" è superiore all'opzione in "Strumenti"+"Opzioni"+"Grafici"+"Numero massimo barre" ...... la seconda delle due, qui il traduttore ha inserito del testo troppo lungo e significa : "Massime barre nei grafici".
Questo valore non deve essere inferiore al numero delle barre in esame oppure la visualizzazione del grafico del backtest si fermerà indietro nel tempo a questo valore.

Modifica il consigliere
Selezionandolo si aprirà l'editor di mql per apportare modifiche al programma, al termine delle modifiche con F5 verrà ricreato e salvato il nuovo programma, e tornando al backtester si potrà effettuare un nuovo backtest per vedere le differenze.
L'opzione di modifica del consigliere funziona solamente se si ha a disposizione il codice "sorgente" dell'expert, cosa che non avviene con gli expert commerciali che non sono modificabili.

La Partenza
Sistemati tutti i punti precedenti facendo click su questo tasto si avvia il backtest. A questo punto si potrà vedere cliccando su "Grafico" in basso l'andamento del saldo del conto, in pratica un andamento ideale sarà quello .... basso a sinistra ed alto a destra. Questo per il fatto che sull'asse verticale si ha il saldo e su quello orizzontale il numero delle operazioni. E' desiderio comune l'avere un saldo che aumenti col numero delle operazioni. Posizionandosi col mouse su un qualsiasi punto della curva apparirà l'informazione relativa a quella operazione.
Cliccando su "Risultati" si vedranno le singole operazioni di apertura ordine, modifica e chiusura del medesimo.
Cliccando su "Rapporto" si vedranno i vari parametri statistici ottenuti durante il test, facendo click col tasto di destra si potrà salvare come "Rapporto dettagliato", al termine verrà visualizzato nel nostro browser preferito. Attenzione in questi dati al valore "Errori di grafici" che deve essere zero per una buona attendibilità del rapporto. Se non fosse zero sarà necessario scaricare nuovamente la storia ed effettuare il ricalcolo delle barre più sopra spiegato.
Nel "Diario" si vedranno le singole operazioni, e gli eventuali messaggi dell'expert o del backtester. E' molto utile per analizzare l'assenza di errori durante il periodo del backtest. Se appena partito il backtest appare un messaggio come questo : TestGenerator: unmatched data error sta a significare che sono presenti degli errori nella storia e quindi la stessa va riscaricata e ricalcolata come più sopra indicato.

Copyright : Carlo Colombo - positiveday
http://widgets.myfxbook.com/widget?id=1 ... &color=red
Trovi interessanti i contenuti di forexometro? Considera la possibilità di iscriverti! :mrgreen: e poi di partecipare ...

Avatar utente
positiveday
Amministratore
Messaggi: 1859
Iscritto il: sab mag 28, 2016 9:23 pm

Re: Backtest con Metatrader 4

Messaggio da positiveday » lun lug 22, 2019 8:07 am

Poi il consiglio finale è : compratevi una licenza di Tick Data Suite e pagate il canone per tenerla aggiornata.
Se si ritengono importanti i backtest e le ottimizzazioni per una strategia, e lo sono, se sono eseguiti "cum grano salis", allora la spesa vale il costo.
:mrgreen:
http://widgets.myfxbook.com/widget?id=1 ... &color=red
Trovi interessanti i contenuti di forexometro? Considera la possibilità di iscriverti! :mrgreen: e poi di partecipare ...

Rispondi