domenica 3 aprile 2011

Key Level Stop & Reverse EA versione 5: aggiunta del trailing level

In questo articolo vado a presentare le novità introdotte nella quinta versione dell'expert advisor Key Level Stop & Reverse.

Francesco ha pensato che, per poter sfruttare i backtest di metatrader, poteva essere interessante rendere il livello dinamico spostandolo ad una certa distanza dal prezzo una volta che questo si trova in gain di un determinato numero di pips.

Abbiamo inserito quindi una specie di trailing stop che in realtà non va a modificare lo stoploss dell'ordine aperto ma modifica il livello chiave impostato manualmente nelle variabili esterne dell'ea:

extern   double   e_TrailingLevel            = 30;

Dopo alcune prove però ho osservato che con questo meccanismo, in caso di trailing non molto elevato, si introducevano delle situazioni anomale. A volte il livello modificato si veniva a trovare tra il prezzo e la media mobile e scombinava quindi il normale funzionamento.
La soluzione che ho adottato è stata quella di utilizzare come riferimento per il trailing level la media mobile veloce al posto del prezzo.

Se intendete continuare ad utilizzare invece l'ea nella vecchia modalità sarà sufficiente impostare a false la seguente variabile esterna:

extern   bool     e_TrailingLevelEnable      = true;

Passiamo ora alla realizzazione pratica in mql della funzione che implementa il trailing level, si tratta davvero di poche righe di codice:

void TrailingLevel(double v_MA_1){
   if (OrderType() == OP_BUY)
    if ((v_MA_1 - e_KeyLevel) > (e_TrailingLevel * Point)){
      e_KeyLevel = v_MA_1 - (e_TrailingLevel * Point);
      return(0);
    }
    
  if (OrderType() == OP_SELL)
    if ((e_KeyLevel - v_MA_1) > (e_TrailingLevel * Point)){
      e_KeyLevel = v_MA_1 + (e_TrailingLevel * Point);
      return(0);
    }
}

Alla funzione TrailingLevel viene passato in ingresso un parametro inizializzato all'interno dello start, in questo specifico caso si tratta del valore della nostra media mobile veloce.
Le operazioni successive vengono fatte in base al fatto che ci troviamo di fronte ad un long o ad uno short:
  • BUY: il prezzo del cross è maggiore a quello della media più il numero di pips del trailng level? Se si sposto il key level di tot pips sotto la media
  • SELL: il prezzo del cross è inferiore a quello della media meno il numero di pips del trailng level? Se si sposto il key level di tot pips sopra la media

Ho effettuato dei test veloci e mi sembra che l'ea si comporti come richiesto:
Sorgente: Key_Level_Stop_Reverse_EA_v5.mq4
Eseguibile: Key_Level_Stop_Reverse_EA_v5.ex4
 

0 commenti:

Posta un commento