Home Trading Sistematico Post

MQL5 Wizard: Crea segnali di trading con Bullish e Bearish Engulfing + CCI

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

Il MQL5 Wizard è uno strumento fantastico per creare Expert Advisor pronti all'uso, utilizzando le classi della libreria standard fornite con il terminale client (per ulteriori dettagli, puoi dare un'occhiata a Creare Expert Advisors in MQL5 Wizard). Con questo strumento, puoi testare rapidamente le tue idee di trading, creando una classe di segnali di trading personalizzati. La struttura di questa classe e un esempio sono disponibili nell'articolo MQL5 Wizard: Come Creare un Modulo di Segnali di Trading.

L'idea di base è semplice: la classe dei segnali di trading deriva da CExpertSignal. Dovrai sovrascrivere i metodi virtuali LongCondition() e ShortCondition() con i tuoi metodi.

Esiste un libro intitolato "Strategie dei migliori trader" (in russo), che analizza molte strategie di trading. Qui ci concentreremo sui modelli di candela di inversione, confermati da Stochastic, CCI, MFI e RSI.

Il miglior approccio è creare una classe separata, derivata da CExpertSignal, per verificare la formazione dei modelli di candela. Per confermare i segnali di trading generati dai modelli di candela, è sufficiente scrivere una classe, derivata da CCandlePattern, e aggiungere le caratteristiche necessarie (ad esempio, conferma tramite oscillatori).

Qui considereremo i segnali basati sui modelli di candela di inversione "Bullish Engulfing/Bearish Engulfing", confermati dall'indicatore CCI. Il modulo dei segnali di trading si basa sulla classe CCandlePattern, un semplice esempio del suo utilizzo per la creazione di segnali di trading con modelli di candela.

1. Modelli di candela di inversione: "Bullish Engulfing" e "Bearish Engulfing"

1.1. Bullish Engulfing

Il modello di inversione "Bullish Engulfing" si forma in un trend ribassista quando una piccola candela nera è seguita da una grande candela bianca che la copre completamente. Le ombre della piccola candela sono corte, permettendo al corpo della grande candela di coprire completamente la candela del giorno precedente.

Fig. 1.

Fig. 1. Modello di candela "Bullish Engulfing"

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

//+------------------------------------------------------------------+
//| Controlla la formazione del modello di candela "Bullish Engulfing" |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishEngulfing()
  {
//--- Bullish Engulfing
   if((Open(2)>Close(2))             &&  // la candela precedente è ribassista
      (Close(1)-Open(1)>AvgBody(1))  &&  // il corpo della candela rialzista è superiore alla media
      (Close(1)>Open(2))             &&  // il prezzo di chiusura della candela rialzista è superiore al prezzo di apertura della candela ribassista
      (MidOpenClose(2)<CloseAvg(2))  &&  // trend ribassista
      (Open(1)<Close(2)))                // il prezzo di apertura della candela rialzista è inferiore al prezzo di chiusura della candela ribassista
      return(true);
//---
   return(false);
  }

Il metodo CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) della classe CCandlePattern viene utilizzato per controllare la formazione del modello "Bullish Engulfing".


1.2. Bearish Engulfing

Il modello "Bearish Engulfing" si forma in un trend rialzista quando una piccola candela bianca è seguita da una grande candela nera che la copre completamente. Anche in questo caso, le ombre della piccola candela sono corte, permettendo al corpo della grande candela di coprire completamente la candela del giorno precedente.

Fig. 2.

Fig. 2. Modello di candela "Bearish Engulfing"

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

//+------------------------------------------------------------------+
//| Controlla la formazione del modello di candela "Bearish Engulfing" |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishEngulfing()
  {
//--- Bearish Engulfing
   if((Open(2)<Close(2))            &&  // la candela precedente è rialzista
      (Open(1)-Close(1)>AvgBody(1)) &&  // il corpo della candela è superiore alla media
      (Close(1)<Open(2))            &&  // il prezzo di chiusura della candela ribassista è inferiore al prezzo di apertura della candela rialzista
      (MidOpenClose(2)>CloseAvg(2)) &&  // trend rialzista
      (Open(1)>Close(2)))               // il prezzo di apertura della candela ribassista è superiore al prezzo di chiusura della candela rialzista
      return(true);
//---
   return(false);
  }

Il metodo CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) della classe CCandlePattern viene utilizzato per controllare la formazione del modello "Bearish Engulfing".


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 superiore/inferiore ai livelli critici (-50 per la posizione long e 50 per la posizione short).

La chiusura delle posizioni aperte dipende dai valori del CCI. Può avvenire in 2 casi:

  1. se la linea CCI ha raggiunto il livello critico opposto (80 per la posizione long e -80 per la posizione short)
  2. 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 Engulfing", confermato dall'indicatore CCI


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

2.1. Aprire posizione long/Chiudere posizione short

  1. La formazione del modello "Bullish Engulfing" deve essere confermata dall'indicatore CCI: CCI(1)<-50 (il valore del CCI dell'ultima barra 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 di ingresso e uscita dal mercato |
//| 1) Entrata nel mercato (apri posizione long, risultato=80) |
//| 2) Uscita dal mercato (chiudi posizione short, risultato=40) |
//+------------------------------------------------------------------+
int CBE_BE_CCI::LongCondition()
  {
   int result=0;
//--- idx può essere utilizzato per determinare la modalità di lavoro dell'Expert Advisor
//--- idx=0 - in questo caso EA controlla le condizioni di trading ad ogni tick
//--- idx=1 - in questo caso EA controlla le condizioni di trading solo alle barre di notizie
   int idx   =StartIndex();
//--- controllo delle condizioni per aprire una posizione long
//--- formazione del modello Bullish Engulfing e CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (CCI(1)<-50))
     result=80;
//--- controllo delle condizioni per chiudere la posizione short
//--- crossover della linea del segnale dei livelli di ipercomprato/ipersoldato (verso il basso -80, verso il basso -80)
   if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80)))
     result=40;
//--- restituisce il risultato
   return(result);
  }

2.2. Aprire posizione short/Chiudere posizione long

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

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

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


2.3. Creare un Expert Advisor usando MQL5 Wizard

La classe CBE_BE_CCI non è inclusa nelle classi della libreria standard, per utilizzarla, è necessario scaricare il file acbe_be_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 il MetaEditor.

Per creare un Expert Advisor, lancia il MQL5 Wizard:

Fig. 4. Creazione Expert Advisor usando MQL5 Wizard

Fig. 4. Creazione Expert Advisor usando MQL5 Wizard

Specifichiamo il nome dell'Expert Advisor:

Fig. 5. Proprietà generali dell'Expert Advisor

Fig. 5. Proprietà generali dell'Expert Advisor

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

Fig. 6. Proprietà dei segnali dell'Expert Advisor

Fig. 6. Proprietà dei segnali dell'Expert Advisor

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

Aggiungiamo il modulo di trading: Segnali basati su Bullish Engulfing/Bearish Engulfing confermati da CCI:

Fig. 7. Proprietà dei segnali dell'Expert Advisor

Fig. 7. Proprietà dei segnali dell'Expert Advisor

Modulo dei segnali di trading aggiunto:

Fig. 8. Proprietà dei segnali dell'Expert Advisor

Fig. 8. Proprietà dei segnali 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, situato in Expert_ABE_BE_CCI.mq5, che sarà salvato nel 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 segnale per aprire [0...100]
input int            Signal_ThresholdClose  =10;     // Valore soglia 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)

devono essere sostituiti con:

//--- input per il segnale principale
input int            Signal_ThresholdOpen   =40;     // Valore soglia segnale per aprire [0...100]
input int            Signal_ThresholdClose  =20;     // Valore soglia 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 dei segnali di trading abbiamo specificato i valori fissi della soglia:

  • Posizione aperta: 80;
  • Chiusura della posizione: 40.

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

I risultati dei voti del modulo principale sono utilizzati anche nella media dei "voti". Nel nostro caso abbiamo: modulo principale + 1 modulo di segnali di trading, quindi dobbiamo tener conto di questo fatto quando impostiamo i valori soglia. A causa di questo fatto, i ThresholdOpen e ThresholdClose devono essere impostati rispettivamente 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

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

Nel creare l'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 su Bullish Engulfing/Bearish Engulfing + CCI

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


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

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


Post correlati

Commento (0)