Unisciti alla nostra fan page
MQL5 Wizard - Trade Signals Based on 3 Black Crows/3 White Soldiers + Stochastic - sistema esperto per MetaTrader 5
- Visualizzazioni:
- 189
- Valutazioni:
- Pubblicato:
- 2021.11.15 09:22
- Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
La MQL5 Wizzard consente di creare Expert Advisor già pronti sulla base delle classi della libreria Standard fornite insieme al terminale client (vedere Creazione di Expert Advisor già pronti nella MQL5 Wizzard 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 dai pattern candlestick, è sufficiente scrivere la classe, derivata da CCandlePattern e aggiungere lì le caratteristiche necessarie (ad esempio, conferma da oscillatori).
Qui prenderemo in considerazione i segnali, basati sul pattern di candele di inversione "3 Black Crows/3 White Soldiers", confermati dall'indicatore stocastico . 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 "3 Black Crows" e "3 White Soldiers"
1.1. Modello 3 Black Crows
Un pattern a candele ribassista utilizzato per prevedere l'inversione dell'attuale trend rialzista. Questo modello consiste in tre candele consecutive a corpo lungo che si sono chiuse più in basso rispetto al giorno precedente con l'apertura di ogni sessione che si è verificata all'interno del corpo della candela precedente.
Figura 1. Modello a candele "3 Black Crows"
Il riconoscimento del pattern "3 Black Crows" è implementato nel metodo CheckPatternThreeBlackCrows della classe CCandlePattern :
//+------------------------------------------------------------------+ //| Checks formation of "3 Black Crows" candlestick pattern | //+------------------------------------------------------------------+ 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 viene utilizzato per verificare la formazione del pattern candlestick "3 Black Crows".
1.2. Modello 3 White Soldiers
Un pattern candlestick rialzista che viene utilizzato per prevedere l'inversione dell'attuale trend ribassista. Questo modello è costituito da tre candele consecutive a corpo lungo che si sono chiuse più in alto rispetto al giorno precedente, con l'apertura di ogni sessione che si verifica all'interno del corpo della candela precedente.
Il modello è valido finché la candela del secondo giorno si apre nella metà superiore dell'intervallo del primo giorno. Entro la fine del secondo giorno, dovrebbe chiudersi vicino al suo massimo, lasciando un'ombra superiore molto piccola o inesistente. Lo stesso schema viene poi ripetuto il terzo giorno.
Figura 2. Modello a candele "3 White Soldiers"
Ecco il metodo per il riconoscimento del pattern "3 White Soldiers":
//+------------------------------------------------------------------+ //| Checks formation of "3 White Soldiers" candlestick pattern | //+------------------------------------------------------------------+ 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 viene utilizzato per controllare la formazione del pattern candlestick "3 White Soldiers".
2. Segnali di trading, confermati dall'indicatore stocastico
I segnali di trading per aprire posizioni long o short devono essere confermati dall'oscillatore stocastico . La linea del segnale %D deve essere maggiore/inferiore del corrispondente livello critico (30 o 70).
La chiusura della posizione aperta dipende dai valori dell'indicatore %D. Si può fare in 2 casi:
- se la linea %D ha raggiunto il livello critico opposto (80 per posizione long e 20 per posizione short)
- se il segnale inverso non è confermato (quando la linea %D raggiunge i seguenti livelli: 20 per posizione long e 80 per posizione short)
Fig. 3. Modello "3 White Soldiers", confermato dall'indicatore stocastico
Il controllo delle condizioni commerciali per l'ingresso e l'uscita è implementato in due metodi:
- int CBC_WS_Stoch::LongCondition() - verifica le condizioni per aprire la posizione long (restituisce 80) e chiudere la posizione short (restituisce 40);
- int CBC_WS_Stoch::ShortCondition() - controlla le condizioni per aprire la posizione short (restituisce 80) e chiudere la posizione long (restituisce 40).
2.1. Apri posizione long/Chiudi posizione short
La formazione del pattern "3 White Soldiers" deve essere confermata dall'Indicatore Stocastico : StochSignal(1)<30 (il valore della linea di segnale dell'Indicatore Stocastico dell'ultima barra completata deve essere inferiore a 30).
-
La posizione short deve essere chiusa se la linea di segnale dell'indicatore stocastico ha attraversato verso l'alto i livelli 20 o 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 CBC_WS_Stoch::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 3 White Soldiers pattern and signal line<30 if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (StochSignal(1)<30)) result=80; //--- checking of conditions to close short position //--- signal line crossover of overbought/oversold levels (downward 20, upward 80) if((((StochSignal(1)>20) && (StochSignal(2)<20)) || ((StochSignal(1)>80) && (StochSignal(2)<80)))) result=40; //--- return result return(result); }
2.2. Aprire una posizione short/Chiudere una posizione long
La formazione del pattern "3 Black Crows" deve essere confermata dall'Indicatore Stocastico : StochSignal(1)>70 (il valore della linea di segnale dell'Indicatore Stocastico dell'ultima barra completata deve essere maggiore di 70).
La posizione long deve essere chiusa se la linea di segnale dell'indicatore stocastico ha attraversato verso il basso i livelli 80 o 20.
//+------------------------------------------------------------------+ //| 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 CBC_WS_Stoch::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 3 Black Crows pattern and signal line>70 if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (StochSignal(1)>70)) result=80; //--- checking of conditions to close long position //--- signal line crossover of overbought/oversold levels (downward 80, upward 20) if((((StochSignal(1)<80) && (StochSignal(2)>80)) || ((StochSignal(1)<20) && (StochSignal(2)>20)))) result=40; //--- return result return(result); }
2.3. Creazione di Expert Advisor utilizzando MQL5 Wizard
La classe CBC_WS_Stoch non è inclusa nelle classi della Standard Library, per utilizzarla è necessario scaricare il file acbc_ws_stoch.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 MQL5 Wizzard dopo il riavvio del MetaEditor.
Per creare un Expert Advisor, avvia la MQL5 Wizzard :
Fig. 4. Creazione di Expert Advisor utilizzando la MQL5 Wizzard
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 " Signals based on 3 Black Crows/3 White Soldiers confirmed by Stochastic " 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 not used":
Fig. 9. Proprietà di trascinamento dell'Expert Advisor
Per quanto riguarda le proprietà di gestione del capitale, utilizzeremo "Trading with fixed trade volume":
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_ABC_WS_Stoch.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)
must be replaced to:
//--- 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
Consideriamo il backtesting dell'Expert Advisor su dati storici (EURUSD H1, periodo di test: 01.01.2010-02.2011.02, PeriodK=47, PeriodD=9, PeriodSlow=13, 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 3 Black Crows/3 White Soldiers + Stocastico"
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_abc_ws_stoch.mq5.
Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/283
Vengono presi in considerazione i segnali di trading basati su modelli di candele di inversione. Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando il Wizard MQL5.
MQL5 Wizard - Segnali di trading basati sul crossover delle linee dell'indicatore AlligatorVengono considerati i segnali di trading basati sul crossover delle linee dell'indicatore tecnico Alligator. Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando il Wizard MQL5.
Vengono presi in considerazione i segnali di trading basati sul pattern di candele "3 Black Crows/3 White Soldiers", confermato dall'indicatore Commodity Channel Index (CCI). Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando il Wizard MQL5.
MQL5 Wizzard - Segnali di trading basati su 3 Black Crows/3 White Soldiers + MFIVengono presi in considerazione i segnali di trading basati sul pattern di candele "3 Black Crows/3 White Soldiers", confermato dall'indicatore Market Facilitation Index (MFI). Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando il Wizard MQL5.