Guida all'Utilizzo del MQL5 Wizard: Trading con Pattern di Candele e Indice CCI

Mike 2011.02.18 21:19 97 0 0
Allegato

Il MQL5 Wizard è uno strumento fantastico che ti permette di creare Expert Advisor (EA) pronti all’uso basati sulle classi della libreria standard fornita con il terminale client (dai un’occhiata a Creazione di Expert Advisor nel MQL5 Wizard per maggiori dettagli). Ti consente di testare rapidamente le tue idee di trading, basta creare la tua classe di segnali di trading. Puoi trovare la struttura di questa classe e un esempio nell'articolo MQL5 Wizard: Come Creare un Modulo di Segnali di Trading.

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

Esiste un libro "Strategie dei migliori trader" (in russo), dove vengono analizzate molte strategie di trading; noi ci concentreremo sui pattern di inversione delle candele, confermati dagli oscillatori Stocastico, CCI, MFI e RSI.

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

In questa guida considereremo i segnali basati sul pattern di inversione delle candele "3 Black Crows/3 White Soldiers", confermati dall'indicatore Commodity Channel Index. Il modulo dei segnali di trading si basa sulla classe CCandlePattern, che offre un semplice esempio di utilizzo per la creazione di segnali di trading con i pattern di candele.


1. I pattern di inversione delle candele "3 Black Crows" e "3 White Soldiers"

1.1. 3 Black Crows

Un pattern di candele ribassista utilizzato per prevedere l'inversione dell'attuale trend rialzista. Questo pattern è composto da tre candele lunghe consecutive che hanno chiuso inferiori alla giornata precedente, con l'apertura di ogni sessione che si verifica all'interno del corpo della candela precedente.

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

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

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

//+------------------------------------------------------------------+
//| Controlla la formazione del pattern di candele "3 Black Crows"      |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeBlackCrows()
  {
//--- 3 Black Crows 
   if((Open(3)-Close(3)>AvgBody(1)) && // (long black)
      (Open(2)-Close(2)>AvgBody(1)) &&
      (Open(1)-Close(1)>AvgBody(1)) &&
      (MidPoint(2)<MidPoint(3))     && // (lower midpoints)
      (MidPoint(1)<MidPoint(2)))       
      return(true);
//---
   return(false);
  }

Il metodo CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) della classe CCandlePattern è utilizzato per controllare la formazione del pattern di candele "3 Black Crows".


1.2. Pattern di candele 3 White Soldiers

Un pattern di candele rialzista che viene utilizzato per prevedere l'inversione dell'attuale trend ribassista. Questo pattern è composto da tre candele lunghe consecutive che hanno chiuso superiori alla giornata precedente, con l'apertura di ogni sessione che si verifica all'interno del corpo della candela precedente.

Il pattern è valido finché la candela del giorno due apre nella metà superiore dell'intervallo del giorno uno. Alla fine del giorno due, essa dovrebbe chiudere vicino al suo massimo, lasciando un'ombra superiore molto piccola o inesistente. Lo stesso pattern si ripete poi nel giorno tre.

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

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

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

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

Il metodo CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) della classe CCandlePattern è utilizzato per controllare la formazione del pattern di candele "3 White Soldiers".


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 della posizione aperta dipende dai valori del CCI. Può avvenire in due casi:

  • se la linea del 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. Pattern '3 Black Crows' confermato dall'indicatore CCI

Fig. 3. Pattern '3 Black Crows' confermato dall'indicatore CCI


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

2.1. Apertura posizione long/Chiusura posizione short

  1. La formazione del pattern "3 Black Crows" 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 superato verso l'alto il livello critico -80 o ha attraversato verso il basso il livello critico 80.

//+------------------------------------------------------------------+
//| Controlla le condizioni per entrare e uscire dal mercato                 |
//| 1) Entrata nel mercato (apri posizione long, risultato=80)                  |
//| 2) Uscita dal mercato (chiudi posizione short, risultato=40)                 |
//+------------------------------------------------------------------+
int CBC_WS_CCI::LongCondition()
  {
   int result=0;
//--- idx può essere usato 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 pattern 3 White Soldiers e CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (CCI(1)<-50))
     result=80;
//--- controllo delle condizioni per chiudere la posizione short
//--- crossover della linea segnale dei livelli di ipercomprato/iper-venduto (verso il basso -80, verso il basso -80)
   if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80)))
     result=40;
//--- ritorna il risultato
   return(result);
  }

2.2. Apertura posizione short/Chiusura posizione long

  1. La formazione del pattern "3 White Soldiers" deve essere confermata dall'indicatore CCI: CCI(1)>50 (il valore del 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 i livelli -80 o 80.

//+------------------------------------------------------------------+
//| Controlla le condizioni per entrare e uscire dal mercato                 |
//| 1) Entrata nel mercato (apri posizione short, risultato=80)                 |
//| 2) Uscita dal mercato (chiudi posizione long, risultato=40)                  |
//+------------------------------------------------------------------+
int CBC_WS_CCI::ShortCondition()
  {
   int result=0;
//--- idx può essere usato 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 pattern 3 Black Crows e CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (CCI(1)>50))
     result=80;
//--- controllo delle condizioni per chiudere la posizione long
//--- crossover della linea 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;
//--- ritorna il risultato
   return(result);
  }


2.3. Creazione di un Expert Advisor utilizzando MQL5 Wizard

La classe CBC_WS_CCI non è inclusa nelle classi della Libreria Standard, per utilizzarla è necessario scaricare il file acbc_ws_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 utilizzarlo nel MQL5 Wizard dopo il riavvio del MetaEditor.

Per creare un Expert Advisor lancia il MQL5 Wizard:

Fig. 4. Creazione di Expert Advisor utilizzando MQL5 Wizard

Fig. 4. Creazione di 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 trading: "Segnali basati su 3 Black Crows/3 White Soldiers confermati da 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 noi 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_ABC_WS_CCI.mq5, che sarà salvato in terminal_data_folder\MQL5\Experts\.

I parametri di input predefiniti dell'Expert Advisor generato:

//--- inputs 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 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:

//--- inputs 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 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 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:

  • Aprire posizione: 80;
  • Chiudere 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, esso consiste in tutti i moduli aggiunti) è anche utilizzato, ma i suoi metodi LongCondition() e ShortCondition() restituiscono sempre 0.

I risultati dei voti del modulo principale sono anche utilizzati nella media 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 soglia. 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

Vediamo il backtesting dell'Expert Advisor su dati storici (EURUSD H1, periodo di test: 2010.01.01-2011.03.16, PeriodCCI=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 è stato utilizzato (Trailing non utilizzato).

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

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


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

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


Elenco
Commento 0