Unisciti alla nostra fan page

MQL5 Wizard - Segnali di Trade Basati su Morning/Evening Stars + CCI - sistema esperto per MetaTrader 5
- Visualizzazioni:
- 258
- Valutazioni:
- Pubblicato:
- 2021.10.22 15:46
- Aggiornato:
- 2021.10.22 16:49
-
Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
L' MQL5 Wizard permette di creare Expert Advisor già pronti basati sulle classi di Librerie Standard fornite insieme al terminale client (vedere Creazione di Expert Advisor Già Pronti con MQL5 Wizard per i dettagli). Consente di verificare rapidamente le tue idee di trading, tutto ciò di cui hai bisogno è creare la tua classe di segnali di trading. La struttura di questa classe ed esempio può essere trovata in questo articolo MQL5 Wizard: Come Creare un Modulo di Segnali Trading..
L'idea generica è la seguente: la classe dei segnali di trading è derivata da CExpertSignal,dopodichè, è necessario sovrascrivere i processi virtuali LongCondition() e ShortCondition() con i propri processi.
C'è un libro "Strategies of best traders" (in Russo), ci sono molte strategie di trading prese in considerazione li, noi ci concentreremo sui patterns di candele di inversione confermati dagli oscillatori Stochastic, CCI, MFI e RSI.
Il modo migliore è creare la classe separata, derivata da CExpertSignal per verificare la formazione dei patterns di candele. Per la conferma dei segnali di trading, generati dai patterns di candele, è sufficente scrivere la classe, derivata da CCandlePattern e aggiungere le funzionalità necessarie (per esempio, conferma tramite oscillatori) là.
Qui considereremo i segnali, basati sui pattern di candele di inversione "Morning Star/Evening Star" (Morning Doji Star/Evening Doji Star), 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 pattern di candele.
1."Morning Star" e "Evening Star" pattern di candele di inversione
1.1. Morning Star
Questo pattern indica l'inversione di un trend ribassista, consiste in tre candele (Fig. 1). Dopo una lunga candele nera c'è una candela (il colore non è importante) con un corpo piccolo, che si trova al di fuori del corpo della candela nera. Il corpo piccolo di una candela significa che la forza dei rialzisti e degli orsi sono uguali e il mercato è pronto a cambiare il trend.
La terza candel del pattern e la candela rialzista, il suo corpo non è sovrapposto al corpo della seconda candela e il prezzo di chiusura si trova all'interno del corpo della prima candela (ribassista). Anche la candela risultante dal modello è tracciata nella Figura 1.
Se per caso la seconda candela è doji-like-candle, il modello è chiamato "Morning Doji Star".
Fig. 1. "Morning Star" e "Morning Doji Star" pattern di candele
Il riconoscimento del pattern "Morning Star" è implementato nei processi CheckPatternMorningStar() e CheckPatternMorningDoji() della classe CCandlePattern:
//+------------------------------------------------------------------+ //| Check formation of the "Morning Star" pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternMorningStar() { //--- Morning Star if((Open(3)-Close(3)>AvgBody(1)) && // bearish candle, its body greater than average candle body (MathAbs(Close(2)-Open(2))<AvgBody(1)*0.5) && // second candle has small body (lower than half of the average body) (Close(2)<Close(3)) && // close of the second candle is lower than close of the first (Open(2)<Open(3)) && // open of the second canlde is lower than open of the first (Close(1)>MidOpenClose(3))) // close of the last completed candle is higher than center of the first return(true); //--- return(false); } //+------------------------------------------------------------------+ //| Check formation of the "Morning Doji Star" pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternMorningDoji() { //--- Morning Doji Star if((Open(3)-Close(3)>AvgBody(1)) && // bearish candle with body greater than average candle body (AvgBody(2)<AvgBody(1)*0.1) && // the second candle has a very small body (doji) (Close(2)<Close(3)) && // close of the second candle is lower than close of the first (Open(2)<Open(3)) && // open of the second candle is lower than open of the first (Open(1)>Close(2)) && // up gap at the last completed candle (Close(1)>Close(2))) // close of the last completed candle is higher than close of the second return(true); //--- return(false); }
I processi CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) e CheckCandlestickPattern(CANDLE_PATTERN_MORNING_DOJI) della classe CCandlePattern sono utilizzati per verificare la formazione dei pattern di candele "Morning Star" e "Morning Doji Star".
1.2. Evening Star
Quest pattern indica l'inversione di un trend rialzista, consiste di tre candele (Fig. 2). Dopo una lunga candele bianca c'è una candela (il colore non è importante) con un corpo piccolo, che si trova al di fuori del corpo della candela bianca. Il corpo piccolo di una candela significa che la forza dei rialzisti e degli orsi sono uguali e il mercato è pronto a cambiare il trend.
La terza candel del pattern e la candela ribassista, il suo corpo non è sovrapposto al corpo della seconda candela e il prezzo di chiusura si trova all'interno del corpo della prima candela (rialzista). Anche la candela risultante dal modello è tracciata nella Figura 2.
Se per caso la seconda candela è doji-like-candle, il modello è chiamato "Evening Doji Star".
Fig. 2. Pattern di candele "Evening Star" e "Evening Doji Star"
Qui ci sono i processi per l'identificazione dei patterns "Evening Star" e "Evening Doji Star":
//+------------------------------------------------------------------+ //| Check formation of the "Evening Star" pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternEveningStar() { //--- Evening Star if((Close(3)-Open(3)>AvgBody(1)) && // bullish candle with body higher than average body (MathAbs(Close(2)-Open(2))<AvgBody(1)*0.5) && // second candle has a small body (less than half of the average) (Close(2)>Close(3)) && // close of the second candle is higher than close of the first (Open(2)>Open(3)) && // open of the second candle is higher than open of the first (Close(1)<MidOpenClose(3))) // close of the last completed candle is lower than center of the first return(true); //--- return(false); } //+------------------------------------------------------------------+ //| Check formation of the "Evening Doji Star" pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternEveningDoji() { //--- Evening Doji Star if((Close(3)-Open(3)>AvgBody(1)) && // bullish candle with body higher than average (AvgBody(2)<AvgBody(1)*0.1) && // second candle has a very small body (doji) (Close(2)>Close(3)) && // close of the second candle is higher than close of the first (Open(2)>Open(3)) && // opend of the second candle is higher than open of the first (Open(1)<Close(2)) && // down gap at the last completed candle (Close(1)<Close(2))) // close of the last completed candle is lower than close of the second return(true); //--- return(false); }
I processi CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) e CheckCandlestickPattern(CANDLE_PATTERN_EVENING_DOJI) della classe CCandlePattern sono utilizzati per verificare la formazione dei pattern di candele "Evening Star" and "Evening Doji Star" .
2. Segnali di Trade, confermati dall'indicatore CCI
I segnali di trading per aprire una posizione 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 di CCI. Può eseere fatta in 2 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 di inversione non è confermato (quando CCI raggiunge i seguenti livelli: -80 per la posizione long e 80 per la posizione short)
Fig. 3. Il pattern "Evening Star", confermato dall'indicatore CCI
- int CMS_ES_CCI::LongCondition() - verifica le condizioni per aprire una posizione long (restituisce 80) e chiudere la posizione short (restituisce 40);
- int CMS_ES_CCI::ShortCondition() - verifica le condizioni per aprire una posizione short (restituisce 80) e chiudere la posizione long (restituisce 40).
2.1. Apertura posizione long/Chiusura posizione short
La formazione del pattern "Morning Star" deve essere confermato dall'indicatore CCI: CCI(1)<-50 (il valore del CCI dell'ultima barra completata deve essere meno di -50).
La posizione short deve essere chiusa se l'indicatore CCI ha attraversato al rialzo il livello critico -80 o attraversato al ribasso il livello critico 80.
//+------------------------------------------------------------------+ //| Checks conditions for entry and exit from market | //| 1) Market entry (open long position, result=80) | //| 2) Market exit (close short position, result=40) | //+------------------------------------------------------------------+ int CMS_ES_CCI::LongCondition() { int result=0; //--- idx can be used to determine Expert Advisor work mode //--- idx=0 - in this case EA checks trade conditions at each tick //--- idx=1 - in this case EA checks trade consition only at news bars int idx =StartIndex(); //--- checking of conditions to open long position //--- formation of Morning Star pattern and CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) && (CCI(1)<-50)) result=80; //--- checking of conditions to close short position //--- signal line crossover of overbought/oversold levels (downward -80, downward -80) if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80))) result=40; //--- return result return(result); }
2.2. Apertura posizione short/Chiusura posizione long
La formazione del pattern "Evening Star" deve essere confermato dall'indicatore CCI: CCI(1)>50 (il valore del CCI dell'ultima barra completata deve essere maggiore di 50).
La posizione long deve essere chiusa se l'indicatore CCI ha attraversato al ribasso i livelli -80 o 80.
//+------------------------------------------------------------------+ //| Checks conditions for entry and exit from market | //| 1) Market entry (open short position, result=80) | //| 2) Market exit (close long position, result=40) | //+------------------------------------------------------------------+ int CMS_ES_CCI::ShortCondition() { int result=0; //--- idx can be used to determine Expert Advisor work mode //--- idx=0 - in this case EA checks trade conditions at each tick //--- idx=1 - in this case EA checks trade consition only at news bars int idx =StartIndex(); //--- checking of conditions to open short position //--- formation of Evening Star pattern and CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) && (CCI(1)>50)) result=80; //--- checking of conditions to close long position //--- signal line crossover of overbought/oversold levels (downward -80, downward 80) if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) result=40; //--- return result return(result); }
2.3. Creazione dell' Expert Advisor usando MQL5 Wizard
La classe CMS_ES_CCI non è inclusa nelle classi di Libreria Standard, per usarla, è necessario scaricare il file acms_es_cci.mqh (vedi allegati) e salvarlo in client_terminal_data_folder\MQL5\Include\Expert\Signal\MySignals. Lo stesso dovrebbe essere fatto con il file candlepatterns.mqh. Puoi usarlo nel MQL5 Wizard dopo il riavvio del MetaEditor.
Per creare un Expert Advisor avvia MQL5 Wizard:
Fig. 4. Creazione dell' Expert Advisor usando MQL5 Wizard
Specifichiamo il nome dell'Expert Advisor:
Fig. 5. Proprietà generali dell'Expert Advisor
Dopodiché dobbiamo selezionare i moduli dei segnali di trade utilizzati.
Fig. 6. Proprietà del segnale dell'Expert Advisor
Nel nostro caso usiamo solo un modulo di segnali di trade.
Aggiungendo il modulo dei segnali di trading "Segnali basati su Morning/Evening Stars confermati dal CCI" :
Fig. 7. Proprietà del segnale dell'Expert Advisor
Modulo dei segnali di trade aggiunto:
Fig. 8. Proprietà del segnale dell'Expert Advisor
Puoi selezionare qualsiasi proprietà per il trailing, ma noi utilizzeremo "Trailing Stop non utilizzato":
Fig. 9. Proprietà del trailing dell'Expert Advisor
Per quanto concerne le proprietà del money management, useremo "Trading con volume fisso":
Fig. 10. Proprietà del money management dell' Expert Advisor
Premendo il pulsante "Fine", avremo il codice dell'Expert Advisor generato, situato in Expert_AMS_ES_CCI.mq5, sarà salvato in terminal_data_folder\MQL5\Experts\.
I parametri di input predefiniti dell'Expert Advisor generato:
//--- inputs for main signal input int Signal_ThresholdOpen =10; // Signal threshold value to open [0...100] input int Signal_ThresholdClose =10; // Signal threshold value to close [0...100] input double Signal_PriceLevel =0.0; // Price level to execute a deal input double Signal_StopLevel =50.0; // Stop Loss level (in points) input double Signal_TakeLevel =50.0; // Take Profit level (in points)
Devono essere sostituiti con:
//--- inputs for main signal input int Signal_ThresholdOpen =40; // Signal threshold value to open [0...100] input int Signal_ThresholdClose =20; // Signal threshold value to close [0...100] input double Signal_PriceLevel =0.0; // Price level to execute a deal input double Signal_StopLevel =0.0; // Stop Loss level (in points) input double Signal_TakeLevel =0.0; // Take Profit level (in points)
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 processi LongCondition() and ShortCondition() della classe dei segnali di trade abbiamo specificato valori di soglia fissi:
- Aprire posizione: 80;
- Chiudere posizione 40.
L' Expert Advisor, generato con MQL5 Wizard apre e chiude la posizione usando i "voti" dei moduli dei segnali di trade. E' anche usato il voto del modulo principale (come contenitore, costituito da tutti i moduli aggiunti), ma i suoi processi di LongCondition() e ShortCondition() restituiscono sempre 0.
I risultati del voto del modulo principale vengono utilizzati anche nella media dei "voti". Nel nostro caso abbiamo: modulo principale + 1 modulo dei segnali di trade, quindi dobbiamo tener conto di questo fatto quando si impostano i valori di soglia. Per questo motivo 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 su 0, significa che la chiusura delle posizioni sarà fatta solo quando le condizioni di chiusura saranno vere.
2.4. Risultati del backtesting storico
Si consideri il backtesting dell'Expert Advisor su dati storici (EURUSD H1, testing period: 2009.01.01-2011.03.16, PeriodCCI=25, MA_period=5).
Alla creazione dell'Expert Advisor abbiamo usato il volume fisso (Trading con Lotto Fisso, 0.1), algoritmo del Trailing Stop non utilizzato (Trailing non utilizzato).
Fig. 11. Risultato del test dell' Expert Advisor, basato su Morning/Evening Stars + CCI
Il miglior settaggio dei parametri di input può essere trovato utilizzando lo Strategy Tester del terminale della MetaTrader 5.
Il codice dell'Expert Advisor, creato con MQL5 Wizard è allegato all'expert_ams_es_cci.mq5.
Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/322

Vengono presi in considerazione i segnali di trade basati sul pattern di candele "Bullish/Bearish Meeting Lines", confermati dall'indicatore RSI (Relative Strength Index). Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando l' MQL5 Wizard.

Vengono presi in considerazione i segnali di trade basati sul pattern di candele "Bullish/Bearish Meeting Lines", confermato dall'indicatore Market Facilitation Index (MFI). Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando l' MQL5 Wizard.

Vengono presi in considerazione i segnali di trade basati sul pattern di candele "Morning Star/Evening Star", confermati dall'indicatore Market Facilitation Index (MFI). Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando l' MQL5 Wizard.

Vengono presi in considerazione i segnali di trade basati sul pattern di candele "Morning Star/Evening Star", confermati dall'indicatore Relative Strength Index (RSI). Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando l' MQL5 Wizard.