Home Trading Sistematico Post

Guida all'Utilizzo di MQL5 Wizard per i Segnali di Trading: 3 Black Crows/3 White Soldiers + MFI

Allegato
287.zip (6.5 KB, Scarica 0 volte)

Il MQL5 Wizard è uno strumento fantastico che consente di creare Expert Advisor (EA) pronti all’uso basati sulle classi della libreria standard fornita con il terminale client di MetaTrader 5. Questo strumento permette di testare rapidamente le tue idee di trading, basta creare la tua classe di segnali di trading. La struttura di questa classe e un esempio possono essere trovati nell'articolo MQL5 Wizard: Come Creare un Modulo di Segnali di Trading.

L'idea di base è la seguente: la classe di segnali di trading è derivata da CExpertSignal. Successivamente, è necessario sovrascrivere i metodi virtuali LongCondition() e ShortCondition() con i tuoi metodi personalizzati.

Esiste un libro intitolato "Strategie dei migliori trader" (in russo) che tratta di molte strategie di trading. In questo articolo, ci concentreremo sui pattern di candlestick di inversione, confermati dagli oscillatori Stochastic, CCI, MFI e RSI.

Il metodo migliore è creare una classe separata, derivata da CExpertSignal, per verificare la formazione dei pattern di candlestick. Per confermare i segnali di trading generati dai pattern di candlestick, è sufficiente scrivere una classe derivata da CCandlePattern e aggiungere le funzionalità necessarie (ad esempio, la conferma da parte degli oscillatori).

In questo articolo, considereremo i segnali basati sul pattern di candlestick di inversione "3 Black Crows/3 White Soldiers", confermati dall'indicatore Market Facilitation Index (MFI). Il modulo di segnali di trading è basato sulla classe CCandlePattern, un semplice esempio del suo utilizzo per la creazione di segnali di trading con pattern di candlestick.


1. Pattern di candlestick "3 Black Crows" e "3 White Soldiers"

1.1. 3 Black Crows

Il pattern di candlestick ribassista "3 Black Crows" viene utilizzato per prevedere l'inversione dell'attuale trend rialzista. Questo pattern è composto da tre candlestick consecutive con corpo lungo che si sono chiuse al di sotto del giorno precedente, con l'apertura di ogni sessione che avviene all'interno del corpo della candela precedente.

Fig. 1. Pattern di candlestick '3 Black Crows'

Fig. 1. Pattern di candlestick "3 Black Crows"

Il riconoscimento del pattern "3 Black Crows" è implementato nel metodo CheckPatternThreeBlackCrows della classe CCandlePattern:

//+------------------------------------------------------------------+ //| Controlla la formazione del pattern di candlestick '3 Black Crows' | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows() { //--- 3 Black Crows  if((Open(3)-Close(3)>AvgBody(1)) && // (long black)   return(true); //--- return(false); }

Il metodo CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) della classe CCandlePattern viene utilizzato per verificare la formazione del pattern "3 Black Crows".


1.2. Pattern di candlestick "3 White Soldiers"

Il pattern di candlestick rialzista "3 White Soldiers" viene utilizzato per prevedere l'inversione dell'attuale trend ribassista. Questo pattern è composto da tre candlestick consecutive con corpo lungo che si sono chiuse al di sopra del giorno precedente, con l'apertura di ogni sessione che avviene all'interno del corpo della candela precedente.

Il pattern è valido finché la candela del giorno due si apre nella metà superiore dell'intervallo del giorno uno. Alla fine del giorno due, deve chiudere vicino al suo massimo, lasciando una piccola o inesistente ombra superiore. Lo stesso pattern viene ripetuto nel giorno tre.

Fig. 2. Pattern di candlestick '3 White Soldiers'

Fig. 2. Pattern di candlestick "3 White Soldiers"

Ecco il metodo per il riconoscimento del pattern "3 White Soldiers":

//+------------------------------------------------------------------+ //| Controlla la formazione del pattern di candlestick '3 White Soldiers' | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers() { //--- 3 White Soldiers if((Close(3)-Open(3)>AvgBody(1)) && // long white   return(true); //--- return(false); }

Il metodo CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) della classe CCandlePattern viene utilizzato per verificare la formazione del pattern "3 White Soldiers".


2. Segnali di trading confermati dall'indicatore MFI

I segnali di trading per aprire posizioni long o short devono essere confermati dall'indicatore MFI. Il valore dell'indicatore MFI deve essere inferiore a 40 (per posizioni long) o superiore a 60 (per posizioni short).

La chiusura della posizione aperta dipende dai valori dell'indicatore MFI. Ciò può avvenire in 2 casi:

  1. se l'MFI ha raggiunto il livello critico opposto (70 per posizione long e 30 per posizione short)
  2. se il segnale inverso non è confermato (quando l'indicatore MFI raggiunge i seguenti livelli: 30 per posizione long e 70 per posizione short)

Fig. 3. Pattern '3 Black Crows', confermato dall'indicatore MFI

Fig. 3. Pattern "3 Black Crows", confermato dall'indicatore MFI


  • int CBC_WS_MFI::LongCondition() - controlla le condizioni per aprire una posizione long (restituisce 80) e chiudere la posizione short (restituisce 40);
  • int CBC_WS_MFI::ShortCondition() - controlla le condizioni per aprire una posizione short (restituisce 80) e chiudere la posizione long (restituisce 40).

2.1. Aprire posizione long/Chiudere posizione short

  1. La formazione del pattern "3 White Soldiers" deve essere confermata dall'indicatore MFI: MFi(1)<40 (il valore dell'indicatore MFI dell'ultima barra completata deve essere inferiore a 40).

  2. La posizione short deve essere chiusa se l'indicatore MFI ha superato verso l'alto i livelli critici (70 o 30).

//+------------------------------------------------------------------+ //| Controlla le condizioni per l'entrata e l'uscita dal mercato | //| 1) Entrata nel mercato (apri posizione long, risultato=80) | //| 2) Uscita dal mercato (chiudi posizione short, risultato=40) | //+------------------------------------------------------------------+ int CBC_WS_MFI::LongCondition() { int result=0; //--- idx può essere usato per determinare la modalità di lavoro dell'EA //--- idx=0 - in questo caso l'EA controlla le condizioni di trading a ogni tick //--- idx=1 - in questo caso l'EA controlla le condizioni di trading solo ai bar di notizie int idx   =StartIndex(); //--- controllo delle condizioni per aprire posizione long //--- formazione del pattern 3 White Soldiers e MFI<40 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (MFI(1)<40)) result=80; //--- controllo delle condizioni per chiudere posizione short //--- crossover della linea segnale dei livelli overbought/oversold (verso l'alto 30, verso l'alto 70) if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70))) result=40; //--- ritorna il risultato return(result); }


2.2. Aprire posizione short/Chiudere posizione long

  1. La formazione del pattern "3 Black Crows" deve essere confermata dall'indicatore MFI: MFI(1)>60 (il valore dell'indicatore MFI dell'ultima barra completata deve essere superiore a 60).

  2. La posizione long deve essere chiusa se l'indicatore MFI ha superato verso l'alto i livelli critici (70 o 30).

//+------------------------------------------------------------------+ //| Controlla le condizioni per l'entrata e l'uscita dal mercato | //| 1) Entrata nel mercato (apri posizione short, risultato=80) | //| 2) Uscita dal mercato (chiudi posizione long, risultato=40) | //+------------------------------------------------------------------+ int CBC_WS_MFI::ShortCondition() { int result=0; //--- idx può essere usato per determinare la modalità di lavoro dell'EA //--- idx=0 - in questo caso l'EA controlla le condizioni di trading a ogni tick //--- idx=1 - in questo caso l'EA controlla le condizioni di trading solo ai bar di notizie int idx   =StartIndex(); //--- controllo delle condizioni per aprire posizione short //--- formazione del pattern 3 Black Crows e MFI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (MFI(1)>60)) result=80; //--- controllo delle condizioni per chiudere posizione long //--- crossover della linea segnale dei livelli overbought/oversold (verso l'alto 70, verso il basso 30) if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30))) result=40; //--- ritorna il risultato return(result); }


2.3. Creare un Expert Advisor utilizzando MQL5 Wizard

La classe CBC_WS_MFI non è inclusa nelle classi della libreria standard, per utilizzarla è necessario scaricare il file abc_ws_mfi.mqh (vedi allegati) e salvarlo nella cartella client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Lo stesso dovrebbe essere fatto con il file acandlepatterns.mqh. Puoi utilizzarlo nel MQL5 Wizard dopo aver riavviato il MetaEditor.

Per creare un Expert Advisor, avvia il MQL5 Wizard:

Fig. 4. Creazione Expert Advisor utilizzando MQL5 Wizard

Fig. 4. Creazione Expert Advisor utilizzando MQL5 Wizard

Specifichiamo il nome dell'Expert Advisor:

Fig. 5. Proprietà generali dell'Expert Advisor

Fig. 5. Proprietà generali dell'Expert Advisor

Dopo di che, dobbiamo selezionare i moduli di segnali di trading utilizzati.

Fig. 6. Proprietà del segnale dell'Expert Advisor

Fig. 6. Proprietà del segnale dell'Expert Advisor

Nel nostro caso utilizziamo solo un modulo di segnali di trading.

Aggiungendo il modulo di segnali "Segnali basati su 3 Black Crows/3 White Soldiers confermati da MFI":

Fig. 7. Proprietà del segnale dell'Expert Advisor

Fig. 7. Proprietà del segnale dell'Expert Advisor

Modulo di segnali di trading aggiunto:

Fig. 8. Proprietà del segnale dell'Expert Advisor

Fig. 8. Proprietà del segnale dell'Expert Advisor

Puoi selezionare qualsiasi proprietà di trailing, ma utilizzeremo "Trailing Stop non utilizzato":

Fig. 9. Proprietà di trailing dell'Expert Advisor

Fig. 9. Proprietà di trailing dell'Expert Advisor

Per quanto riguarda le proprietà di gestione del denaro, utilizzeremo "Trading con volume fisso":

Fig. 10. Proprietà di gestione del denaro dell'Expert Advisor

Fig. 10. Proprietà di gestione del denaro dell'Expert Advisor

Premendo il pulsante "Fine", otterremo il codice dell'Expert Advisor generato, posizionato in Expert_ABC_WS_MFI.mq5, che sarà salvato nella cartella terminal_data_folder\MQL5\Experts\.

I parametri di input predefiniti dell'Expert Advisor generato:

//--- input per il segnale principale input int            Signal_ThresholdOpen   =10;     // Valore di soglia del segnale per aprire [0...100] input int            Signal_ThresholdClose  =10;     // Valore di soglia del segnale per chiudere [0...100] input double         Signal_PriceLevel      =0.0;    // Livello di prezzo per eseguire un affare input double         Signal_StopLevel       =50.0;   // Livello di Stop Loss (in punti) input double         Signal_TakeLevel       =50.0// Livello di Take Profit (in punti)

deve essere sostituito con:

//--- input per il segnale principale input int            Signal_ThresholdOpen   =40;     // Valore di soglia del segnale per aprire [0...100] input int            Signal_ThresholdClose  =20;     // Valore di soglia del segnale per chiudere [0...100] input double         Signal_PriceLevel      =0.0;    // Livello di prezzo per eseguire un affare input double         Signal_StopLevel       =0.0;    // Livello di Stop Loss (in punti) input double         Signal_TakeLevel       =0.0    // Livello di Take Profit (in punti)

I parametri di input Signal_ThresholdOpen/Signal_ThresholdClose consentono di specificare i livelli di soglia per l'apertura e la chiusura delle posizioni.

Nel codice dei metodi LongCondition() e ShortCondition() della classe di segnali di trading abbiamo specificato i valori fissi della soglia:

  • Apertura posizione: 80;
  • Chiusura posizione: 40.

L'Expert Advisor, generato dal MQL5 Wizard, apre e chiude posizioni utilizzando i "voti" dai moduli di segnali di trading. Il voto del modulo principale (come contenitore, consiste di tutti i moduli aggiunti) viene utilizzato anche, ma i suoi metodi LongCondition() e ShortCondition() restituiscono sempre 0.

I risultati dei voti del modulo principale sono utilizzati anche nell'"averaging" dei voti. Nel nostro caso abbiamo: modulo principale + 1 modulo di segnali di trading, quindi dobbiamo tenere conto di questo fatto quando impostiamo i valori delle soglie. A causa di questo fatto, ThresholdOpen e ThresholdClose devono essere impostati come 40=(0+80)/2 e 20=(0+40)/2.

I valori dei parametri di input Signal_StopLevel e Signal_TakeLevel sono impostati a 0, il che significa che la chiusura delle posizioni avverrà solo quando le condizioni di chiusura saranno vere.


2.4. Risultati del backtesting storico

Consideriamo il backtesting dell'Expert Advisor su dati storici (EURUSD H1, periodo di test: 2010.01.01-2011.03.16, PeriodMFI=37, MA_period=13).

Nella creazione dell'Expert Advisor abbiamo utilizzato il volume fisso (Trading Fixed Lot, 0.1), l'algoritmo di Trailing Stop non è utilizzato (Trailing non utilizzato).

Fig. 11. Risultati del test dell'Expert Advisor, basato sui 3 Black Crows/3 White Soldiers + MFI

Fig. 11. Risultati del test dell'Expert Advisor, basato sui 3 Black Crows/3 White Soldiers + MFI


Il miglior set di parametri di input può essere trovato utilizzando il Strategy Tester del terminale client di MetaTrader 5.

Il codice dell'Expert Advisor, creato dal MQL5 Wizard, è allegato in expert_abc_ws_mfi.mq5.


Post correlati

Commento (0)