Home Trading Sistematico Post

MQL5 Wizard: Crea il Tuo Expert Advisor con Segnali Bullish e Bearish Harami + CCI

Allegato
311.zip (6.48 KB, Scarica 0 volte)

Il MQL5 Wizard ti consente di creare facilmente Expert Advisor (EA) basati sulle classi della libreria standard fornite con il terminale cliente. Questo strumento è perfetto per 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.

In sostanza, la classe di segnali di trading deriva da CExpertSignal. È necessario sovrascrivere i metodi virtuali LongCondition() e ShortCondition() con i propri metodi.

Un libro interessante è "Strategie dei Migliori Trader" (in russo), che analizza diverse strategie di trading. Noi ci concentreremo sui modelli di candele di inversione, confermati da indicatori come Stochastic, CCI, MFI e RSI.

La soluzione migliore è creare una classe separata, derivata da CExpertSignal, per verificare la formazione dei modelli di candele. Per confermare i segnali di trading generati dai modelli di candele, basta scrivere una classe derivata da CCandlePattern e aggiungere le funzionalità necessarie (ad esempio, conferma tramite oscillatori).

Focalizziamoci sui segnali basati sui modelli di candele di inversione "Bullish Harami" e "Bearish Harami", confermati dall'indicatore CCI. Il modulo di segnali di trading si basa sulla classe CCandlePattern, che offre un esempio semplice di utilizzo per la creazione di segnali di trading con i modelli di candele.

1. Modelli di Candele Bullish Harami e Bearish Harami

1.1. Bullish Harami

Il modello di inversione Bullish Harami si forma in un trend ribassista, quando una grande candela è seguita da una candela più piccola il cui corpo è situato all'interno dell'intervallo verticale del corpo più grande. Questo pattern indica che il trend ribassista potrebbe invertirsi, segnalando che è un buon momento per entrare in posizione long. La seconda candela si apre con un gap in alto. Più piccola è la seconda candela (bianca), maggiore è la probabilità di inversione.

Bullish Harami reversal pattern

Fig. 1. Modello di candela "Bullish Harami"

Il riconoscimento del modello "Bullish Harami" è implementato nel metodo CheckPatternBullishHarami() della classe CCandlePattern:

//+------------------------------------------------------------------+
//| Controlla la formazione del modello di candela "Bullish Harami" |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishHarami()
  {
//--- Bullish Harami
   if((Close(1)>Open(1))              && // l'ultima candela completata è bullish (giornata bianca)
     ((Open(2)-Close(2)>AvgBody(1))  && // la candela precedente è bearish, il suo corpo è maggiore della media (lunga nera)
     ((Close(1)<Open(2))              && // il prezzo di chiusura della candela bullish è inferiore al prezzo di apertura della candela bearish 
      (Open(1)>Close(2)))             && // il prezzo di apertura della candela bullish è superiore al prezzo di chiusura della candela bearish
      (MidPoint(2)<CloseAvg(2)))         // trend ribassista
      return(true);
//---
   return(false);
  }

Il metodo CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) della classe CCandlePattern è utilizzato per verificare la formazione del modello di candela "Bullish Harami".


1.2. Bearish Harami

Il modello di inversione Bearish Harami si forma in un trend rialzista, quando una grande candela è seguita da una candela più piccola il cui corpo è situato all'interno dell'intervallo verticale del corpo più grande. Questo pattern indica che il trend rialzista potrebbe invertirsi, segnalando che è un buon momento per entrare in posizione short. La seconda candela si apre con un gap in basso.

Più piccola è la seconda (nera) candela, maggiore è la probabilità di inversione.

Bearish Harami reversal pattern

Fig. 2. Modello di candela "Bearish Harami"

Il riconoscimento del modello "Bearish Harami" è implementato nel metodo CheckPatternBearishHarami() della classe CCandlePattern:

//+------------------------------------------------------------------+
//| Controlla la formazione del modello di candela "Bearish Harami" |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishHarami()
  {
//--- Bearish Harami
   if((Close(1)<Open(1))              && // l'ultima candela completata è bearish (giornata nera)
     ((Close(2)-Open(2)>AvgBody(1))  && // la candela precedente è bullish, il suo corpo è maggiore della media (lunga bianca)
     ((Close(1)>Open(2))              && // il prezzo di chiusura della candela bearish è superiore al prezzo di apertura della candela bullish 
      (Open(1)<Close(2)))             && // il prezzo di apertura della candela bearish è inferiore al prezzo di chiusura della candela bullish
      (MidPoint(2)>CloseAvg(2)))         // trend rialzista
      return(true);
//---
   return(false);
  }

Il metodo CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) della classe CCandlePattern è utilizzato per verificare la formazione del modello di candela "Bearish Harami".


2. Segnali di Trading Confermati dall'Indicatore CCI

I segnali di trading per aprire posizioni long o short devono essere confermati dall'indicatore CCI. Il valore del CCI deve essere maggiore/minore dei livelli critici (-50 per la posizione long e 50 per la posizione short).

La chiusura della posizione aperta dipende dai valori del CCI. Può avvenire in 2 casi:

  • se la linea CCI ha raggiunto il livello critico opposto (80 per la posizione long e -80 per la posizione short)
  • se il segnale inverso non è confermato (quando il CCI raggiunge i seguenti livelli: -80 per la posizione long e 80 per la posizione short)

Fig. 3.

Fig. 3. Modello "Bullish Harami", confermato dall'indicatore CCI

  • int CBH_BH_CCI::LongCondition() - controlla le condizioni per aprire una posizione long (restituisce 80) e chiudere la posizione short (restituisce 40);
  • int CBH_BH_CCI::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 modello "Bullish Harami" deve essere confermata dall'indicatore CCI: CCI(1)<-50 (il valore del CCI dell'ultima candela completata deve essere inferiore a -50).

  2. La posizione short deve essere chiusa se l'indicatore CCI ha attraversato verso l'alto il livello critico -80 o verso il basso il livello critico 80.

//+------------------------------------------------------------------+
//| Controlla le condizioni per l'ingresso e l'uscita dal mercato |
//| 1) Ingresso nel mercato (apri la posizione long, risultato=80) |
//| 2) Uscita dal mercato (chiudi la posizione short, risultato=40) |
//+------------------------------------------------------------------+
int CBH_BH_CCI::LongCondition()
  {
   int result=0;
//--- idx può essere utilizzato per determinare la modalità di lavoro dell'EA
//--- idx=0 - in questo caso l'EA controlla le condizioni di trading ad ogni tick
//--- idx=1 - in questo caso l'EA controlla le condizioni di trading solo nei nuovi barre
   int idx   =StartIndex();
//--- controllo delle condizioni per aprire una posizione long
//--- formazione del modello Bullish Harami e CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (CCI(1)<-50))
     result=80;
//--- controllo delle condizioni per chiudere la posizione short
//--- crossover della linea del segnale dei livelli di ipercomprato/iper-venduto (verso il basso -80, verso l'alto -80)
   if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>8040;
//--- restituisci il risultato
   return(result);
  }

2.2. Aprire Posizione Short / Chiudere Posizione Long

  1. La formazione del modello "Bearish Harami" deve essere confermata dall'indicatore CCI: CCI(1)>50 (il valore dell'indicatore CCI dell'ultima candela completata deve essere superiore a 50).

  2. La posizione long deve essere chiusa se l'indicatore CCI ha attraversato verso il basso i livelli -80 o 80.

//+------------------------------------------------------------------+
//| Controlla le condizioni per l'ingresso e l'uscita dal mercato |
//| 1) Ingresso nel mercato (apri la posizione short, risultato=80) |
//| 2) Uscita dal mercato (chiudi la posizione long, risultato=40) |
//+------------------------------------------------------------------+
int CBH_BH_CCI::ShortCondition()
  {
   int result=0;
//--- idx può essere utilizzato per determinare la modalità di lavoro dell'EA
//--- idx=0 - in questo caso l'EA controlla le condizioni di trading ad ogni tick
//--- idx=1 - in questo caso l'EA controlla le condizioni di trading solo nei nuovi barre
   int idx   =StartIndex();
//--- controllo delle condizioni per aprire una posizione short
//--- formazione del modello Bearish Harami e CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (CCI(1)>50))
     result=80;
//--- controllo delle condizioni per chiudere la posizione long
//--- crossover della linea del segnale dei livelli di ipercomprato/iper-venduto (verso il basso -80, verso l'alto 80)
   if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))
     result=40;
//--- restituisci il risultato
   return(result);
  }


2.3. Creazione di un Expert Advisor con MQL5 Wizard

La classe CBH_BH_CCI non è inclusa nelle classi della Libreria Standard, per utilizzarla è necessario scaricare il file acbh_bh_cci.mqh (vedi allegati) e salvarlo nella cartella client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Lo stesso deve essere fatto con il file candlepatterns.mqh. Puoi usarlo in MQL5 Wizard dopo aver riavviato MetaEditor.

Per creare un Expert Advisor avvia il MQL5 Wizard:

Fig. 4. Creazione di un Expert Advisor con MQL5 Wizard

Fig. 4. Creazione di un Expert Advisor con 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.

Aggiungiamo il modulo di segnali: Segnali basati su Bullish Harami/Bearish Harami confermati dal CCI:

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 useremo "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, useremo "Trading con volume di scambio 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, situato in Expert_ABH_BH_CCI.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 soglia del segnale per aprire [0...100]
input int            Signal_ThresholdClose  =10;     // Valore soglia del segnale per chiudere [0...100]
input double         Signal_PriceLevel      =0.0;    // Livello di prezzo per eseguire un'operazione
input double         Signal_StopLevel       =50.0;   // Livello di Stop Loss (in punti)
input double         Signal_TakeLevel       =50.0    // Livello di Take Profit (in punti)

dovrà essere sostituito con:

//--- input per il segnale principale
input int            Signal_ThresholdOpen   =40;     // Valore soglia del segnale per aprire [0...100]
input int            Signal_ThresholdClose  =20;     // Valore soglia del segnale per chiudere [0...100]
input double         Signal_PriceLevel      =0.0    // Livello di prezzo per eseguire un'operazione
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 soglia per l'apertura e la chiusura delle posizioni.

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

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

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

I risultati dei voti del modulo principale sono anch'essi utilizzati nella media dei "voti". Nel nostro caso abbiamo: modulo principale + 1 modulo di segnali di trading, quindi dobbiamo tenere conto di questo fattore durante l'impostazione dei valori soglia. A causa di questo, ThresholdOpen e ThresholdClose devono essere impostati a 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

Esaminiamo il backtesting dell'Expert Advisor su dati storici (EURUSD H1, periodo di test: 2010.01.01-2011.03.16, PeriodCCI=11, MA_period=5).

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

Fig. 11. Risultati del test dell'Expert Advisor basato su Bullish Harami/Bearish Harami + CCI

Fig. 11. Risultati del test dell'Expert Advisor basato su Bullish Harami/Bearish Harami + CCI


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

Il codice dell'Expert Advisor, creato da MQL5 Wizard è allegato in expert_abh_bh_cci.mq5.


Post correlati

Commento (0)