Programmazione Metatrader Overfitting_II (per principianti)

Data di utilizzo Da : 2015.03.14 A : 2015.04.08

cioe' sta vedendo il futuro?...perche' cosi' si spiega perche' io ottengo molto poco
puo' andar bene per provare a prevedere domani...ma non per verificare lo storico

E' solo un trucchetto per imbrogliare MT4. ;)
Spesso capita (ma non sempre, non so perche') che con lo strategy tester se si mette la data di oggi, MT4 si ferma a ieri.
Se si mette la data di domani, sicuramente calcola anche oggi.
Tutto qui.
 
E' solo un trucchetto per imbrogliare MT4. ;)
Spesso capita (ma non sempre, non so perche') che con lo strategy tester se si mette la data di oggi, MT4 si ferma a ieri.
Se si mette la data di domani, sicuramente calcola anche oggi.
Tutto qui.

si ma non puoi dire che nello storico ha fatto tot performance...chiaro che in sto modo li fa

ora ho scoperto perche' a te va :D
 
Commento sui valori immessi nella maschera.

Intanto vi faccio notare che si devono spuntare le caselline dei parametri che si vogliono ottimizzare.
I parametri non spuntati mantengono il valore default durante i test.
La colonna Valori contiene i valori che saranno usati nei successivi test sui dati storici.
Se si fa l'ottimizzazione, questi valori sono ignorati.
Le colonne Avvio, Passo e Arresto, il cui significato mi sembra ovvio, sono i range che verranno utilizzati durante l'ottimizzazione.
Per le durate dei cicli, voglio indagare tutte le combinazioni da 15 a 150 barre orarie, per trovare la ciclicità piu' profittevole, dal T-4 al T-1, tenendo conto che EurUSd tende a fare cicli molto lunghi (es. i tracy durano mediamente 10 giorni = 240 ore).
Sottolineo che i valori per i campi StpLss, da 0.0005 a 0.0050 sono espressi in punti EurUsd e non in valuta del conto; se si usasse FTSEMib il range potrebbe essere da 10 a 100.
La variabile PercToTrade varia da 0.2 a 0.8 perchè voglio esplorare tutte le possibilità; ricordiamoci che nella rev1 del TS questo valore e' riferito al ciclo diretto, mentre il ciclo inverso sarà sempre il complemento a 1 (es se la percentuale iniziale up del ciclo diretto fosse 0.6, la percentuale down del ciclo inverso sarebbe 0.4).

Dopo aver sistemato i valori di input e cliccato su OK, si torna nella finestra principale.

A questo punto occorre spuntare la casellina Ottimizzazione e premere Avvio.

Il programma eseguirà l'ottimizzazione, impiegando un certo tempo.
Se i parametri sono molti e i range molto estesi, l'ottimizzazione potrebbe impiegare anche parecchi giorni.
Fortunatamente avevamo spuntato la casellina Algoritmo genetico nella tendina Testing (vedere post precedente); in questa modalità il programa "saltella" qua e la nella matrice n-dimensionale dei parametri e utilizza solo alcune combinazione tra tutte quelle possibili; in ogni caso il campione sarà sufficientemente esteso per consentire una elevata probabilità di beccare qualche combinazione ottimale.
Questo trucchetto va usato in prima battuta, quando si vuole esplorare tutto il range delle possibilità, per avere un primo screening delle combinazioni ottimali.
Successivamente, dopo aver individuato uno o piu' range ristretti di valori, si ripeteranno le ottimizzazioni senza ricorrere alla opzione Algoritmo genetico.

Al termine, andremo a vedere i risultati cliccando in basso, su Grafico dell'ottimizzazione, dove apparirà questa immagine :

(continua)
 

Allegati

  • TesterGraph.gif
    TesterGraph.gif
    20,3 KB · Visite: 147
ok aspetto:D
pero' sono sospettoso

in giro in sti giorni ho trovato un test con stop loss intraday su barre daily ...quindi immagina i risultati
 
Purtroppo il grafico e' bidimensionale, mentre noi abbiamo ottimizzato su 5 variabili.
Poco male; cliccando col destro sugli assi si possono cambiare le variabili e quindi, un grafico alla volta, potro' vedere tutte le coppie di variabili.
In questo modo andremo a restringere i range delle variabili e ci focalizzeremo sull'obiettivo.
Se siete arrivati fino a qui, lascio a voi il compito di esaminare i grafici delle variabili, due alla volta.

Ricordiamoci che questo grafico non ci da tutte le combinazioni ma solo quelle campionate dall'Algoritmo genetico.

Intanto ragioniamo sul grafico del post precedente.
Li sono plottati le durate dei due cicli, diretto in ascissa e inverso in ordinata.
Le maggiori densita di punti si trovano in corrispondenza dei range intorno a 20/23 e a 35/43 di ascissa che evidentemente corrispondono a cicli T-3 e T-2 diretti.

In corrispondenza di questi valori di ascissa, i valori di ordinata coprono tutto il range; il significato e' che con cicli T-2 o T-3 diretti potremmo associare cicli inversi di ordine anche superiore; ma a noi questo non interessa e quindi prenderemo in considerazione per il ciclo inverso un range pressoche' uguale a quello che sceglieremo per il ciclo diretto.

Se ora clicchiamo su Risultati dell'ottimizzazione e facciamo il sort (doppio click) sul campo Profitti, noteremo che i massimi profitti si ottengono con la combinazione 36/35.

Facendo ragionamenti analoghi sui grafici delle varie coppie di variabili, possiamo restringere i range di tutte la variabili.

A questo punto affineremo l'ottimizzazione togliendo l'opzione Algoritmo genetico e andremo a ridefinire la tabella dei Valori di input, in questo modo :

(continua)
 

Allegati

  • qqq.jpg
    qqq.jpg
    54,4 KB · Visite: 223
Purtroppo il grafico e' bidimensionale, mentre noi abbiamo ottimizzato su 5 variabili.

giusto, 5 variabili sono indispensabili. :)

“I remember my friend Johnny von Neumann used to say, with four
parameters I can fit an elephant, and with five I can make him wiggle his
trunk.” [Enrico Fermi, 1953]

.
 
Siamo quasi arrivati...

Avendo ristretto i range di variabilità dei parametri e disinserito l'algoritmo genetico, ripetendo l'ottimizzazione, il programma utilizzerà TUTTE le combinazioni possibili, in un tempo ragionevole.

Ricordiamoci che comunque il tempo dipenderà dal timeframe e dalla profondità del campione utilizzato.

Il risultato di questo affinamento e' visibile nel grafico sotto.

A questo punto voglio sottolineare che il comportamento di questo TS e' veramente impressionante: in tanti anni e in centinaia di test effettuati, non mi era mai capitato di ottenere grafici di questo genere, dove TUTTE le caselline, ovvero tutte le combinazioni testate, risultano profittevoli.

Normalmente, con altri TS, anche operando senza Algoritmo genetico, si ottengono grafici pieni di caselline bianche, ovvero di combinazioni in loss, e con caselline verdi sparpagliate in macchie qua e la.

A questo punto converrà esaminare quantitativamente i risultati, aprendo la tabella dei Risultati dell'ottimizzazione.
Nella tabella andremo a scegliere una combinazione che, non necessariamente, sarà quella in cima alla lista.
E qui entra in ballo l'esperienza, che si ottiene provando e riprovando.
Io normalmente, a parità di profitto o quasi, preferisco combinazioni col minimo drawdown e col massimo payoff (profitto/operazioni); nel caso di presenza di qualche parametro piu' "elastico" degli altri, scelgo un valore centrale.

Nel nostro caso, sceglierei ad esempio questa combinazione :

CycleDir=36
CycleInv=41
StpLssDir=0.0017
StpLssInv=0.0009
PercToTrade=0.6

Facendo doppio click su questa riga (la seconda della tabella "sortata" sui profitti) si otterrà il riempimento automatico della colonna Valore della tabellina dei Valori di input, nella finestra Proprietà esperte.

A questo punto, togliendo la spuntatura su Ottimizzazione e cliccando su Avvio, partirà il test vero e proprio sul periodo esaminato, con i parametri scelti.

(continua)
 

Allegati

  • TesterGraph.gif
    TesterGraph.gif
    55,1 KB · Visite: 145
giusto, 5 variabili sono indispensabili. :)

“I remember my friend Johnny von Neumann used to say, with four
parameters I can fit an elephant, and with five I can make him wiggle his
trunk.” [Enrico Fermi, 1953]

.

Figurati che io di variabili non ne vorrei usare nemmeno una !
Ma questa obiezione, sacrosanta in generale, non e' pertinente a questo TS che cerca di individuare le ciclicità.
E' fisiologico che per tradare un ciclo devo almeno:
- definire la sua durata
- definire una tolleranza, sotto il valore di partenza, per reversare
Due parametri per il ciclo diretto e due per il ciclo inverso fanno gia' quattro.
E sono un minimo fisiologico che, una volta definito, potrebbe essere mantenuto per l'eternità.
Il quinto parametro e' la proporzione tra le fasi iniziali up/diretta e down/inversa che puo' variare nelle fasi bear, bull e flat del mercato; questo e' un parametro classico, con tutti i rischi di overfitting ma... e' solo uno!

Io credo che chi avrà la pazienza di esaminare e provare questo TS si renderà conto che si tratta di un oggetto molto particolare, con caratteristiche del tutto diverse dai soliti TS basati su oscillatori, indicatori e algoritmi vari.

Con questo non voglio dire di essere certo che il TS funzionerà sempre e comunque, ma solo che sta promettendo bene.
 
Il test sul periodo in esame, con i parametri scelti, fornisce questi risultati (visibili cliccando su Rapporto) :

Deposito iniziale 10000.00
Spread Corrente (2)
Profitto totale netto 1055.41
Profitto lordo 1193.45
Perdita lorda -138.05
Fattore di profitto (profit factor) 8.65
Ricompensa attesa 40.59
Drawdown assoluto 28.27
Drawdown massimo 111.26 (1.08%)
Drawdown relativo 1.08% (111.26)
Operazioni totali 26
Posizioni al ribasso (vincite %) 13 (69.23%)
Posizioni al rialzo (vincite %) 13 (61.54%)
Operazioni con profitto (% del totale) 17 (65.38%)
Operazioni in perdita (% del totale) 9 (34.62%)
Il piu' grande
operazione con profito 214.70
operazione in perdita -26.92
Media
operazione con profito 70.20
operazione in perdita -15.34
Massimo
vincite consecutive (profitto in denaro) 9 (791.29)
perdite consecutive (perdita in denaro) 2 (-49.39)
Massimale
profitto consecutivo (numero delle vincite) 791.29 (9)
perdita consecutiva (numero delle perdite) -49.39 (2)
Media
vincite consecutive 2
perdite consecutive 1

La equity line e' in questo grafico :

(continua)
 

Allegati

  • TesterGraph.gif
    TesterGraph.gif
    13 KB · Visite: 139

Users who are viewing this thread

Back
Alto