Unisciti alla nostra fan page
Procedura guidata MQL5 - Segnali di trading basati su Harami rialzista/Harami ribassista + CCI - sistema esperto per MetaTrader 5
- Visualizzazioni:
- 619
- Valutazioni:
- Pubblicato:
- 2021.11.17 09:51
- Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
La procedura guidata MQL5 consente di creare Expert Advisor già pronti basati sulle classi della libreria Standard fornite insieme al terminale client (vedere Creazione di Expert Advisor già pronti in Procedura guidata MQL5 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 nell'articolo MQL5 Wizard: How to Create a Module of Trading Signals .
L'idea generica è la seguente: la classe dei segnali di trading è derivata da CExpertSignal , la successiva, è necessario sovrascrivere i metodi virtuali LongCondition() e ShortCondition() con i propri metodi.
C'è un libro "Strategie dei migliori trader " (in russo), ci sono molte strategie di trading che sono considerate lì, ci concentreremo sui modelli di candele di inversione, confermati dagli oscillatori Stochastic , CCI , MFI e RSI .
Il modo migliore è creare la classe separata, derivata da CExpertSignal per il controllo della formazione di pattern di candele. Per la conferma dei segnali di trading, generati da pattern candlestick, è sufficiente scrivere la classe, derivata da CCandlePattern e aggiungere lì le caratteristiche necessarie (ad esempio, conferma da oscillatori).
Qui considereremo i segnali, basati sul pattern di candele di inversione "Bullish Harami/Bearish Harami", 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 a candele.
1. Modelli di candele di inversione "Bullish Harami e "Bearish Harami"
1.1. Harami rialzista
Il pattern di inversione Bullish Harami si forma in una tendenza al ribasso quando una candela grande è seguita da una candela più piccola il cui corpo si trova all'interno dell'intervallo verticale del corpo più grande. Questo pattern indica che la tendenza al ribasso (trend in discesa) potrebbe essere invertita, segnala che è un buon momento per entrare in una posizione lunga. La seconda candela viene aperta con un gap up. Più piccola è la seconda candela (bianca), più è probabile l'inversione.
Fig. 1. Pattern di candele "Bullish Harami"
Il riconoscimento del pattern "Bullish Harami" è implementato nel metodo CheckPatternBullishHarami() della classe CCandlePattern :
//+------------------------------------------------------------------+ //| Checks formation of "Bullish Harami" candlestick pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami() { //--- Bullish Harami if((Close(1)>Open(1)) && // the last completed bar is bullish (white day) ((Open(2)-Close(2))>AvgBody(1)) && // the previous candle is bearish, its body is greater than average (long black) ((Close(1)<Open(2)) && // close price of the bullish candle is lower than open price of the bearish candle (Open(1)>Close(2))) && // open price of the bullish candle is higher than close price of the bearish candle (MidPoint(2)<CloseAvg(2))) // down trend return(true); //--- return(false); }
Il metodo CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) della classe CCandlePattern viene utilizzato per verificare la formazione del pattern candlestick "Bullish Harami".
1.2. Harami ribassista
Il pattern di inversione Bearish Harami si forma in una tendenza al rialzo quando una candela grande è seguita da una candela più piccola il cui corpo si trova all'interno dell'intervallo verticale del corpo più grande. Questo pattern indica che la tendenza al rialzo (trend in salita) potrebbe essere invertita, segnala che è un buon momento per entrare in una posizione corta. La seconda candela viene aperta con un gap down.
Più piccola è la seconda candela (nera), più è probabile l'inversione.
Fig. 2. Pattern di candele "Bearish Harami"
Il riconoscimento del pattern "Bearish Harami" è implementato nel metodo CheckPatternBearishHarami() della classe CCandlePattern :
//+------------------------------------------------------------------+ //| Checks formation of "Bearish Harami" candlestick pattern | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami() { //--- Bearish Harami if((Close(1)<Open(1)) && // last completed bar is bearish (black day) ((Close(2)-Open(2))>AvgBody(1)) && // the previous candle is bullish, its body is greater than average (long white) ((Close(1)>Open(2)) && // close price of the bearish candle is higher than open price of the bullish candle (Open(1)<Close(2))) && // open price of the bearish candle is lower than close price of the bullish candle (MidPoint(2)>CloseAvg(2))) // up trend return(true); //--- return(false); }
Il metodo CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) della classe CCandlePattern viene utilizzato per verificare la formazione del pattern candlestick "Bearish Harami".
2. Segnali di trading, confermati dall'indicatore CCI
I segnali di trading per aprire posizioni lunghe o corte devono essere confermati dall'indicatore CCI . Il valore del CCI deve essere maggiore/inferiore ai livelli critici (-50 per la posizione lunga e 50 per la posizione corta).
La chiusura della posizione aperta dipende dai valori di CCI. Si può fare in 2 casi:
- se la linea CCI ha raggiunto il livello critico opposto (80 per la posizione lunga e -80 per la posizione corta)
- se il segnale inverso non è confermato (quando il CCI raggiunge i seguenti livelli: -80 per posizione lunga e 80 per posizione corta)
Fig. 3. Il patern "Bullish Harami", confermato dall'indicatore CCI
- int CBH_BH_CCI::LongCondition() - verifica le condizioni per aprire la posizione lunga (restituisce 80) e chiudere la posizione corta (restituisce 40);
- int CBH_BH_CCI::ShortCondition() - controlla le condizioni per aprire la posizione corta (restituisce 80) e chiudere la posizione lunga (restituisce 40).
2.1. Apri posizione lunga/Chiudi posizione corta
La formazione del pattern "Bullish Harami" deve essere confermata dall'indicatore CCI : CCI(1)<-50 (il valore del CCI dell'ultima barra completata deve essere inferiore a -50).
La posizione corta deve essere chiusa se l' indicatore CCI ha superato al rialzo il livello critico -80 o 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 CBH_BH_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 Bullish Harami pattern and CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (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. Aprire una posizione corta/Chiudere una posizione lunga
La formazione del pattern "Bearish Harami" deve essere confermata dall'indicatore CCI : CCI(1)>50 (il valore dell'indicatore CCI dell'ultima barra completata deve essere maggiore di 50).
La posizione lunga 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 CBH_BH_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 Bearish Harami pattern and CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (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 di Expert Advisor utilizzando MQL5 Wizard
La classe CBH_BH_CCI non è inclusa nelle classi della Standard Library, per utilizzarla è necessario scaricare il file acbh_bh_cci.mqh (vedi allegati) e salvarlo nella cartella client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. Lo stesso dovrebbe essere fatto con il file candlepatterns.mqh. Puoi usarlo nella procedura guidata MQL5 dopo il riavvio del MetaEditor.
Per creare un Expert Advisor, avvia la procedura guidata MQL5 :
Fig. 4. Creazione di Expert Advisor utilizzando la procedura guidata MQL5
Specifichiamo il nome dell'Expert Advisor:
Fig. 5. Proprietà generali dell'Expert Advisor
Dopodiché dobbiamo selezionare i moduli dei segnali di trading utilizzati.
Fig. 6. Proprietà del segnale dell'Expert Advisor
Nel nostro caso utilizziamo solo un modulo di segnali di trading.
Aggiungendo il modulo " Segnali basati su Bullish Harami/Bearish Harami confermato da CCI " dei segnali di trading:
Fig. 7. Proprietà del segnale dell'Expert Advisor
Modulo di segnali di trading aggiunto:
Fig. 8. Proprietà del segnale dell'Expert Advisor
Puoi selezionare qualsiasi proprietà di trascinamento, ma utilizzeremo "Trailing Stop non utilizzato":
Fig. 9. Proprietà di trascinamento dell'Expert Advisor
Per quanto riguarda le proprietà di gestione del capitale, utilizzeremo "Trading con volume di scambi fisso":
Fig. 10. Proprietà di gestione del capitale dell'Expert Advisor
Premendo il pulsante "Fine", otterremo il codice dell'Expert Advisor generato, che si trova in Expert_ABH_BH_CCI.mq5, verrà 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 ingresso 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 trade signal abbiamo specificato i valori fissi della soglia:
- Posizione aperta: 80;
- Posizione di chiusura: 40.
L'Expert Advisor, generato dal Wizard MQL5, apre e chiude la posizione utilizzando i "voti" dei moduli dei segnali di trading. Viene utilizzato anche il voto del modulo principale (come contenitore, costituito da tutti i moduli aggiunti), ma i suoi metodi 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 di segnali di trading, 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.
Il valore dei parametri di ingresso Signal_StopLevel e Signal_TakeLevel è impostato a 0, significa che la chiusura delle posizioni verrà eseguita solo quando le condizioni di chiusura saranno vere.
2.4. Risultati del backtest su dati storici
Si consideri 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 di Expert Advisor abbiamo utilizzato il volume fisso ( Trading Fixed Lot , 0.1), non viene utilizzato l'algoritmo Trailing Stop ( Trailing non utilizzato ).
Fig. 11. Risultati dei test dell'Expert Advisor, basati su Bullish Harami/Bearish Harami + CCI
Il miglior set di parametri di input può essere trovato utilizzando lo Strategy Tester del terminale client MetaTrader 5.
Il codice dell'Expert Advisor, creato da MQL5 Wizard è allegato in expert_abh_bh_cci.mq5.
Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/311
Vengono considerati i segnali di trading basati sul pattern di candele "Bullish Harami/Bearish Harami", confermato dall'indicatore stocastico. Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando il Wizard MQL5.
MQL5 Wizard - Trade Signals Based on Bullish Engulfing/Bearish Engulfing + StochasticProcedura guidata MQL5 - Segnali di trading basati su Engulfing rialzista/Engulfing ribassista + Stocastico
Vengono presi in considerazione i segnali di trading basati sul pattern di candele "Bullish Harami/Bearish Harami", confermato dall'indicatore Market Facilitation Index (MFI). Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando il Wizard MQL5.
MQL5 Wizard - Trade Signals Based on Bullish Harami/Bearish Harami + RSIVengono presi in considerazione i segnali di trading basati sul pattern di candele "Bullish Harami/Bearish Harami", confermato dall'indicatore Relative Strength Index (RSI). Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando il Wizard MQL5.