Programmazione Metatrader Overfitting_II (per principianti)

:mmmm: .... al centro del diagramma si nota un segnale long per il globale con i 4 singoli indicatori a zero .....:mmmm:

Ciao Joe.
Complimenti per l'osservazione !
Significa che c'e' qualcuno che segue il progetto :clap:.

Quel segnale e' giusto, sono io che non ho spiegato bene il metodo.
Mi sono dimenticato un passaggio.
Ora provo a spiegarlo.
Dopo una transizione short->long (o viceversa), l'algoritmo necessita che la successiva transizione venga ATTIVATA, ovvero che la somma dei segnali aumenti fino a +2 o +4 (se long) o diminuisca fino a -2 o -4 (se short).
In altre parole, se un singolo segnale fa scattare la transizione, si aspetta che gli altri segnali lo seguano, ovvero che confermino il cambio di trend.
Nel caso segnalato, prima della transizione, c'erano quattro segnali short (somma -4); poi due segnali sono diventati long (somma zero) ed e' scattata la transizione short -> long.
A questo punto i due segnali responsabili della transizione sono tornati subito short (somma -4) ed e' quindi mancata l'attivazione per la transizione contraria, ed il segnale integrato e' rimasto long.
Nel grafico ho aggiunto la somma dei segnali (traccia rossa) e due freccette.
La freccetta rossa e' sulla transizione short->long.
La successiva transizione long->short, e' avvenuta solo dopo che la somma dei segnali e' diventata maggiore di zero (freccetta azzura), ovvero dopo l'attivazione.
Per completezza dela spiegazione metto il pezzo di listato che fa questo lavoro :

for( pos=Barstocalc; pos>=0; pos-- )
{
Index[pos] = oldind;
MomCount[pos] = ShaffMom[pos] + HullMom[pos] + TEMAMom[pos] + T3Mom[pos];

// long to short
if((MomCount[pos] > 0)) ltos = 1;
if((oldind > 0) && (ltos > 0) && (MomCount[pos] < 2))
{
Index[pos] = -5;
ltos = 0;
}

// short to long
if((MomCount[pos] < 0)) stol = 1;
if((oldind < 0) && (stol > 0) && (MomCount[pos] > -2))
{
Index[pos] = 5;
stol = 0;
}

oldmom = MomCount[pos];
oldind = Index[pos];
}

Ho segnato in rosso le istruzioni che accendono i flag di attivazione (stol e ltos) da 0 a 1.
Questo trucchetto e' utile per ridurre le transizioni e per eliminare i falsi segnali, anche se puo' creare qualche fastidioso drawdown.
Nel caso in questione, li trade si e' concluso comunque con un profitto netto di 31 pips.

Come ho scritto in precedenza, l'algoritmo e' provvisorio e puo' essere modificato in tanti modi.
Ad esempio basterebbe inserire due istruzioni cosi' :

...
if((oldind > 0) && (MomCount[pos] < -3)) Index[pos] = -5;
...
if((oldind < 0) && (MomCount[pos] > 3)) Index[pos] = 5;

per forzare le transizioni quando la somma dei segnali inverte il segno in modo improvviso; nel caso in oggetto avremmo avuto il ritorno dello short, subito dopo la freccetta rossa.
L'inconveniente di questa modifica e' la comparsa di numerosi falsi segnali.
Per questo, al momento, ho preferito avere qualche drawdown in piu' e qualche transizione in meno.
Per trovare l'algoritmo migliore, dovremo comunque aspettare che sia pronto il TS vero e proprio (servirà ancora qualche giorno).
 

Allegati

  • EURUSDH4.png
    EURUSDH4.png
    54,6 KB · Visite: 388
TS_Four_Signals

Il TS e' pronto.
Stasera o domani mettero' i file, dopo le ultime limatine.
Intanto, con la prima versione beta, mi sono divertito a fare un po' di test.
Ho dato un colpetto di ottimizzazione sugli ultimi sei mesi di EurUsd H4 e ho ottenuto una gran quantità di combinazioni profittevoli, il che e' un buon segno.
Una delle cose piu' laboriose da fare sarà la scelta del set di parametri, tra le centinaia prodotte dall'ottimizzazione.
Si ottengono ottimi risultati sia con combinazioni lente (meno operazioni), sia con combinazioni veloci (piu' operazioni); insomma, ce ne sarà per tutti i gusti.
Come esempio vi metto i risultati di una combinazione lenta (segnali ed equity).
Non sto a mettere il report, per evitare le solite critiche sul periodo troppo breve del test ... bla...bla.
Dico solo che, per confronto con tutti i lavori precedenti, questo mi sembra il migliore.
Per quanto riguarda test piu' lunghi, avremo tempo per farli (sperando nella vostra collaborazione)
 

Allegati

  • EURUSDH4.png
    EURUSDH4.png
    59,4 KB · Visite: 468
  • TesterGraph.gif
    TesterGraph.gif
    12,1 KB · Visite: 370
Ultima modifica:
Metto un altro esempio, sempre EurUsd H4, con un set di parametri piu' veloce e con piu' operazioni.
I risultati sono sempre molto buoni.
Il metodo sembra adatto sia per operazioni intraday che multiday.
Per ora non ho ancora lavorato con timeframe piu' brevi.
Anche questo sara' un lavoro da fare.
Per non parlare dei test da fare con altri strumenti.

Insomma ci sarà da lavorare per settimane ...
Sarei felice se qualcuno volesse convertire il TS da MT4 ad altre piattaforme, per avere piu' collaborazioni sui test.

Se qualcuno lo volesse fare, garantisco fin da ora la massima collaborazione.
 

Allegati

  • EURUSDH4.png
    EURUSDH4.png
    72,7 KB · Visite: 471
  • TesterGraph.gif
    TesterGraph.gif
    12,4 KB · Visite: 365
Aggiungo un'altra osservazione, che mi sembra interessante.

Guardando piu' attentamente alcune fra le centinaia di combinazioni profittevoli di parametri, ho notato che si distinguono per il fatto di rendere superfluo uno dei quattro parametri.

Questo apre un nuovo capitolo, tutto da esplorare, che potrei già intitolare "THREE SIGNALS", dove si integrano tre parametri invece di quattro.
E, perche' no, forse anche un capitolo "TWO SIGNALS".

Tenendo conto che si potrebbero testare nuovi tools, oltre ai quattro considerati finora, prevedo che questo 3D avrà vita molto lunga. :D
 
Files del TS_Four_Signals

Allego i file :

- Indicatore_Four_Signals.mq4
- Indicatore_Four_Signals.ex4

- TS_Four_Signals.mq4
- TS_Four_Signals.ex4

I file con estensione .mq4 sono i sorgenti, i file con estensione .ex4 sono gli eseguibili.
Chi lavora con MT4 sa come usarli.
Chi volesse convertirli su altre piattaforme, puo' scrivermi sulla casella privata per stabilire un contatto.
Per tutti, metto qui alcune spiegazioni.
Sia l'indicatore che il TS (expert advisor) hanno i seguenti parametri di input, con i relativi valori default :

AppliedPrice = 1; (prezzo usato nei calcoli - usare 1=Open oppure 0=Close)

Shaff_TF = 1440; (TimeFrame usato nel calcolo dell'oscillatore Shaff, espresso in minuti)
Shaff_Limit = 3.0; (minima variazione di momentum dell'oscillatore per attivare la transizione del segnale - espresso in % )

Hull_TF = 240; (TimeFrame usato nel calcolo della media di Hull, espresso in minuti)
HullPeriod = 5; (numero di barre usate per la media di Hull)
Hull_Limit = 0.0005; (minima variazione di momentum della media per attivare la transizione del segnale - espresso in unità di prezzo)

TEMAPeriod = 11; (numero di barre usate per la media TEMA)
TEMA_Limit = 0.0003; (minima variazione di momentum della media per attivare la transizione del segnale - espresso in unità di prezzo)

T3Period = 5; (numero di barre usate per la media T3)
T3_Limit = 0.0; (minima variazione di momentum della media per attivare la transizione del segnale - espresso in unità di prezzo)

I valori default sono relativi ad una configurazione valida per EurUsd con timeframe H4.

Il TS ha i seguenti ulteriori parametri, relativi alla gestione dell'ordine.

MyMagic = 222222; (numero usato dal TS per gestire i propri ordini)
MyLts = 0.1; (numero di lotti)
MaxDelay = 1; (numero di barre di stand-by, dopo ogni entrata o uscita dal trade)
IniStplss = 1999; (valore dello stoploss - un valore alto disabilita lo stoploss)
ProfTrgt = 1999; (valore del target di profitto - un valore alto disabilita il trailing stop)
ProfFctr = 1.0; (frazione del target di profitto al di sotto della quale si chiude la posizione)

Nel seguente grafico si riporta, a puro titolo di esempio, l'equity ottenuta negli ultimi 7 mesi circa, con EurUsd H4, usando il set di parametri di default.

Questo set di parametri l'ho scelto provvisoriamente, tra le centinaia di set ottenuti dalla ottimizzazione, in quanto denotava il minore drawdown.

Non ho comunque avuto il tempo di valutare altre combinazione, molte delle quali producevano un gain anche maggiore di quello mostrato dall'equity, ma con drawdown maggiori.

Il TS non e' ancora stato testato su periodi piu' lunghi.
Praticamente il lavoro di valutazione comincia da qui.
 

Allegati

Piano (personale) di lavoro sul TS_Four_Signals.
Da qui in avanti mi propongo di:

- fare dei test preliminari su vari indici, cambi e comodities per saggiare l'applicabilità generale del TS;
- per ogni strumento, testare vari timeframe, al fine di verificare se il TS si possa utilizzare sul medio-lungo, sul breve-medio e sull'intraday;
- dopo le prime due fasi di screening, cominciare la guerra contro l'overfitting, alla ricerca di set di parametri capaci di generalizzare le prestazioni (questa sarà la battaglia piu' dura !);
- sperimentare eventuali varianti nell'algoritmo di combinazione dei segnali.

Ricordando inoltre che questo TS e' nato dall'esigenza di trovare un metodo efficente per evidenziare i cambi di trend, da utilizzare insieme ad altri metodi, proverò a interfacciare il TS con altri TS basati su breakout o pattern pubblicati in passato.

Ogni volta che otterro' risultati significativi, in un senso o nell'altro, vi terrò informati.

Come sempre : ben vengano commenti, osservazioni, critiche ecc.
 
Allora partiamo dall'inizio.
Per T3, TEMA e Hull ho provato a fare un giro in rete e le formule trovate portano leggere differenze. Per Shaff ho trovato solo descrizioni generiche ma dalle quali è possibile dedurre che è possibile ricavarne più versioni leggermente diverse. Servirebbe quindi poterle condividere. Inoltre per confrontare i risultati in simple serve quantomeno un data base comune. Puoi inserire un database sul quale lavorare? Ciao. :)

Ciao joe.
Ora che ho allegato i files sorgenti potrai ricavare e convertire le formule che anch'io ho trovato in rete.

Per quanto riguarda i database, per ora sto usando i dati che mi fornisce il mio broker sui cambi e sui CFD (pseudo futures).
Sulla profondità temporale e sulla qualità di questi dati (causa rollover) non posso darti buone notizie.
Dovremo cercare altrove e in particolare fare riferimento a questo 3D :

http://www.investireoggi.it/forum/storici-solo-indice-italia-e-relativo-future-vt85170.html

Oltre ai dati Ftsemib hanno messo anche altri indici e ci sono molti link a siti esterni.

In ogni caso andro' anch'io alla ulteriore ricerca di dati.
 
Mi spiego meglio:
mi diletto con excel. So che non è il il max. Ritengo che per razionalizzare il tutto serve quantomeno parlare la stessa lingua ossia essere certi di lavorare sulle stesse formule (T3, Hull, TEMA, e Shaff) e sullo stesso data base di dati (in questa fase la correttezza degli stessi non è vincolante) importante che si sia certi di lavorare sugli stessi dati. Quindi suggerisco di definirene un set e condividerli.
Saluti :)

Ciao joe.
Gli algoritmi Hull, TEMA e T3 sono relativamente semplici e penso che riuscirai a implementarli su excel.
Quello di Shaff e' molto piu' indigesto e anch'io mi sono limitato a copiarlo pari-pari da un programma già pronto per MT4; penso comunque che con un po' di tempo e di pazienza riuscirai a convertire anche quello.
Per quanto riguarda la base dati...
Per ora ho lavorato solo su EurUsd con timeframe H4.
Ho a disposizione un database che parte dal 2010, che posso esportare in formato tabella-ascii e allegare qui.
Sugli indici dispongo solo di piccoli database, ma so che in rete si trova molto materiale.
Poiche' anch'io dovrò provare altri strumenti, fammi sapere qual'e' quello che ti interessa di piu' e se hai gia qualcosa di pronto.
 
Ciao Joe,
ti metto il file con i dati EurUsd, timeframe H4, dal 2010.

Se puoi, mandami i dati del nostrano che li provo, anche se, in generale, non mi piace tradare con timeframe giornaliero, e tantomeno col ftsemib, perche' dovrei gestire dei drawdown da non dormire la notte.
Poi, per pricipio, non trado strumenti con la tobintax del menga :D.
 

Allegati

Per chi fosse interessato al FtseMib, lo screening test con timeframe H4 dice che il TS_Four_Signals potrebbe funzionare.
Proveremo dunque anche coi dati giornalieri di joe b.
 

Allegati

  • Ita40Sep15H4.png
    Ita40Sep15H4.png
    58,4 KB · Visite: 512

Users who are viewing this thread

Back
Alto