Home Trading Sistematico Post

MQL5 Wizard: Creazione di Expert Advisor con segnali di trading basati su 'Meeting Lines' e CCI

Allegato
319.zip (6.47 KB, Scarica 0 volte)

Il MQL5 Wizard è uno strumento potente che consente di creare Expert Advisor pronti all'uso, basati sulle classi della libreria standard fornite con il terminale client. Questo strumento ti permette di testare rapidamente le tue idee di trading, tutto ciò che devi fare è 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 è che la classe dei segnali di trading derivi da CExpertSignal. È necessario sovrascrivere i metodi virtuali LongCondition() e ShortCondition() con i propri metodi.

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

Il modo migliore è creare una classe separata, derivata da CExpertSignal per la verifica della 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).

In questa guida, considereremo i segnali basati sui modelli di candele di inversione "Bullish/Bearish Meeting Lines", confermati dall'indicatore CCI (Commodity Channel Index). Il modulo di segnali di trading si basa sulla classe CCandlePattern, un semplice esempio del suo utilizzo per la creazione di segnali di trading con i modelli di candele.


1. Modelli di inversione "Meeting Lines"

1.1. Bullish Meeting Lines

Il modello consiste in due candele (una ribassista e una rialzista) con prezzi di chiusura uguali (o molto vicini). Il corpo delle due candele deve essere maggiore della lunghezza media del corpo.

Il modello "Bullish Meeting Lines" indica la possibile inversione di un trend ribassista.

Fig. 1. modello

Fig. 1. modello "Bullish Meeting Lines"

Il riconoscimento del modello "Bullish Meeting Lines" è implementato nel metodo CheckPatternBullishMeetingLines() della classe CCandlePattern:

//+--------------------------------------------------------------------+
//| Controlla la formazione del modello "Bullish Meeting Lines" |
//+--------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishMeetingLines()
  {
//--- Bullish Meeting Lines
   if((Open(2)-Close(2)>AvgBody(1))              && // candela nera
     ((Close(1)-Open(1))>AvgBody(1))             && // candela bianca
      (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1)))   // chiusura doji
      return(true);
//---
   return(false);
  }

Il metodo CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) della classe CCandlePattern viene utilizzato per controllare la formazione del modello "Bullish Meeting Lines".


1.2. Bearish Meeting Lines

Il modello consiste in due candele (una rialzista e una ribassista) con prezzi di chiusura uguali (o molto vicini). Il corpo delle due candele deve essere maggiore della lunghezza media del corpo.

Il modello "Bearish Meeting Lines" indica la possibile inversione di un trend rialzista.

Fig. 2. modello

Fig. 2. modello "Bearish Meeting Lines"

Il riconoscimento del modello "Bearish Meeting Lines" è implementato nel metodo CheckPatternBearishMeetingLines() della classe CCandlePattern:

//+--------------------------------------------------------------------+
//| Controlla la formazione del modello "Bearish Meeting Lines" |
//+--------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishMeetingLines()
  {
//--- Bearish Meeting Lines
   if((Close(2)-Open(2)>AvgBody(1))             && // candela bianca
     ((Open(1)-Close(1)>AvgBody(1))             && // candela nera
      (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1)))  // chiusura doji
      return(true);
//---
   return(false);
  }

Il metodo CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) della classe CCandlePattern viene utilizzato per controllare la formazione del modello "Bearish Meeting Lines".


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 o inferiore ai livelli critici (-50 per le posizioni long e 50 per le posizioni short).

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

  1. se la linea del CCI ha raggiunto il livello critico opposto (80 per le posizioni long e -80 per le posizioni short)
  2. se il segnale inverso non è confermato (quando il CCI raggiunge i seguenti livelli: -80 per le posizioni long e 80 per le posizioni short)

Fig. 3. modello

Fig. 3. modello "Bullish Meeting Lines", confermato dall'indicatore CCI

  • int CML_CCI::LongCondition() - controlla le condizioni per aprire una posizione long (restituisce 80) e chiudere una posizione short (restituisce 40);
  • int CML_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 Meeting Lines" 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 ha attraversato verso il basso il livello critico 80.

//+------------------------------------------------------------------+
//| Controlla le condizioni per l'ingresso e l'uscita dal mercato |
//| 1) Entrata nel mercato (apri posizione long, risultato=80)|
//| 2) Uscita dal mercato (chiudi posizione short, risultato=40)|
//+------------------------------------------------------------------+
int CML_CCI::LongCondition()
  {
   int result=0;
//--- idx può essere usato per determinare la modalità di lavoro dell'Expert Advisor
//--- 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 durante le barre di notizie
   int idx   =StartIndex();
//--- controllo delle condizioni per aprire una posizione long
//--- formazione del modello Bullish Meeting Lines e CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (CCI(1)<-50))
     result=80;
//--- controllo delle condizioni per chiudere la posizione short
//--- crossover della linea di segnale dei livelli di overbought/oversold (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. Aprire posizione short / Chiudere posizione long

  1. La formazione del modello "Bearish Meeting Lines" deve essere confermata dall'indicatore CCI: CCI(1)>50 (il valore dell'indicatore CCI dell'ultima barra completata deve essere maggiore di 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 l'ingresso e l'uscita dal mercato |
//| 1) Entrata nel mercato (apri posizione short, risultato=80)|
//| 2) Uscita dal mercato (chiudi posizione long, risultato=40)|
//+------------------------------------------------------------------+
int CML_CCI::ShortCondition()
  {
   int result=0;
//--- idx può essere usato per determinare la modalità di lavoro dell'Expert Advisor
//--- 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 durante le barre di notizie
   int idx   =StartIndex();
//--- controllo delle condizioni per aprire una posizione short
//--- formazione del modello Bearish Meeting Lines e CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (CCI(1)>50))
     result=80;
//--- controllo delle condizioni per chiudere la posizione long
//--- crossover della linea di segnale dei livelli di overbought/oversold (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 Expert Advisor utilizzando MQL5 Wizard

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

Per creare un Expert Advisor, avvia 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 dei 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 segnali Basato su Bullish/Bearish Meeting Lines confermati da CCI:

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

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

Modulo di 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 noi 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, 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_AML_CCI.mq5, che sarà salvato in 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 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:

  • 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, consiste di tutti i moduli aggiunti) viene utilizzato, ma i suoi metodi LongCondition() e ShortCondition() restituiscono sempre 0.

I risultati dei voti del modulo principale vengono 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 di 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

Analizziamo il backtesting dell'Expert Advisor sui dati storici (EURUSD H1, periodo di test: 2000.01.01-2011.03.16, PeriodCCI=18, MA_period=3).

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

Fig. 11. Risultati di test dell'Expert Advisor, basato su Bullish/Bearish Meeting Lines + CCI

Fig. 11. Risultati di test dell'Expert Advisor, basato su Bullish/Bearish Meeting Lines + 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_aml_cci.mq5.


Post correlati

Commento (0)