Unisciti alla nostra fan page
MQL5 Wizard - Segnali di trading basati sul crossover delle linee dell'indicatore Alligator - sistema esperto per MetaTrader 5
- Visualizzazioni:
- 285
- Valutazioni:
- Pubblicato:
- 2021.11.11 16:20
- Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
MQL5 Wizard fornisce la creazione automatica di Expert Advisors (vediMQL5 Wizard: Creating Expert Advisors without Programming).
È il momento di considerare i segnali di trading, basati sull'indicatore tecnico Alligator, presentati da B.Williams in "Trading Chaos". La strategia si chiama "Signals based on the Alligator" (quando si crea EA automaticamente in MQL5 Wizard).
Il sistema si basa su tre medie mobili (linee Lips, Teeth e Jaw), e oscillatori, calcolati utilizzando la differenza tra loro. I segnali di trading sono generati dopo il crossover delle linee dell'Alligatore, a seconda del trend, determinato dall'ordine di queste linee. In caso di trend al rialzo la linea Lips (con periodo minimo) è la più alta, la successiva è la linea Teeth, e la più bassa è la linea Jaw. Il caso simile ma opposto nel caso del trend al ribasso.
Segnali di trading:
- Aprire una posizione long: incrocio delle linee dell'Alligatore e aumento della distanza tra di esse nel caso della tendenza al rialzo;
- Chiudere la posizione long: incrocio verso l'alto della linea Lips con la linea Jaw;
- Aprire una posizione short: incrocio delle linee dell'Alligatore e aumento della distanza tra di esse in caso di trend al ribasso;
- Chiudere la posizione short: crossover verso il basso della linea Lips con la linea Jaw;
Questa strategia è implementata nella classe CSignalAlligator.
Figura 1. Segnali di trading, basati sull'indicatore tecnico Alligator
Segnali di trading
La strategia di trading è implementata in CSignalAlligator, ha alcuni metodi protetti per semplificare l'accesso ai valori degli indicatori:
double Jaw(int ind) // restituisce il valore di Jaw line della barra double Teeth(int ind) // restituisce il valore della linea Teeth della barra double Lips(int ind) // restituisce il valore della linea Lips della barra double LipsTeethDiff(int ind) // restituisce la differenza tra le linee Lips e Teeth double TeethJawDiff(int ind) // restituisce la differenza tra le linee Teeth e Jaw double LipsJawDiff(int ind) // restituisce la differenza tra le linee Lips e Jaw bool CheckCross(); // usato per controllare il crossover delle linee Alligator
1. Aprire una posizione long
Il controllo delle condizioni di trading ha alcune caratteristiche, causate dallo spostamento delle linee Lips, Teeth e Jaw.
Condizioni per aprire una posizione long:
- CheckCross è usato per determinare il crossover e l'ulteriore aumento della differenza tra le linee;
- LipsTeethDiff(-2)>=LipsTeethDiff(-1) and LipsTeethDiff(-1)>=LipsTeethDiff(0); controllare l'aumento della differenza tra le linee Lips e Teeth;
- LipsTeethDiff(0)>=0.0; la linea Lips è più alta della linea Teeth;
- TeethJawDiff(-2) >=TeethJawDiff(-1) and TeethJawDiff(-1) >=TeethJawDiff(0) ; controlla l'aumento della differenza tra le linee Teeth e Jaw;
- TeethJawDiff(0) >=0.0;la linea Teeth è più alta della linea Jaw.
//+------------------------------------------------------------------+ //| Checks conditions to open long position (buy) | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { if(CheckCross()) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- if(LipsTeethDiff(-2)>=LipsTeethDiff(-1) && LipsTeethDiff(-1)>=LipsTeethDiff(0) && LipsTeethDiff(0)>=0.0 && TeethJawDiff(-2) >=TeethJawDiff(-1) && TeethJawDiff(-1) >=TeethJawDiff(0) && TeethJawDiff(0) >=0.0) m_crossed=true; //--- return(m_crossed); }
2. Chiudere la posizione long
Condizioni per chiudere la posizione di long (notare lo spostamento delle linee)
- LipsTeethDiff(-1)<0; la linea Lips della barra successiva (a causa dello spostamento) è più bassa della linea Teeth;
- LipsTeethDiff(0)>=0;la linea Lips della barra corrente è superiore/uguale alla linea Teeth;
- LipsTeethDiff(1)>0; la linea Lips della barra precedente (completata) è più alta della linea Teeth.
//+------------------------------------------------------------------+ //| Checks conditions to close long position | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckCloseLong(double& price) { price=0.0; //--- return(LipsTeethDiff(-1)<0 && LipsTeethDiff(0)>=0 && LipsTeethDiff(1)>0); }
3. Aprire una posizione short
Condizioni per aprire una posizione corta:
- CheckCross è usato per determinare il crossover e l'ulteriore aumento della differenza tra le linee;
- LipsTeethDiff(-2)<=LipsTeethDiff(-1) and LipsTeethDiff(-1)<=LipsTeethDiff(0); controllare l'aumento della differenza tra le linee Lips e Teeth;
- LipsTeethDiff(0)<=0.0; la linea Lips della barra corrente è più bassa della linea Teeth;
- TeethJawDiff(-2)<=TeethJawDiff(-1) and TeethJawDiff(-1)<=TeethJawDiff(0); controllare l'aumento della differenza tra le linee Teeth e Jaw;
- TeethJawDiff(0) <=0.0; la linea Teeth della barra corrente è inferiore alla linea Jaw;
//+------------------------------------------------------------------+ //| Checks conditions to open short position (sell) | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { if(CheckCross()) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- if(LipsTeethDiff(-2)<=LipsTeethDiff(-1) && LipsTeethDiff(-1)<=LipsTeethDiff(0) && LipsTeethDiff(0)<=0.0 && TeethJawDiff(-2) <=TeethJawDiff(-1) && TeethJawDiff(-1) <=TeethJawDiff(0) && TeethJawDiff(0) <=0.0) m_crossed=true; //--- return(m_crossed); }
4. Chiudere la posizione short
Condizioni per chiudere la posizione short:
- LipsTeethDiff(-1)>0; la linea Lips della barra successiva (a causa dello spostamento) è più alta della linea Teeth;
- LipsTeethDiff(0)<=0; la linea Lips della barra corrente è inferiore/uguale alla linea Teeth;
- LipsTeethDiff(1)<0; la linea Lips della barra precedente (completata) è più bassa della linea Teeth.
//+------------------------------------------------------------------+ //| Checks conditions to close short position | //+------------------------------------------------------------------+ bool CSignalAlligator::CheckCloseShort(double& price) { price=0.0; //--- return(LipsTeethDiff(-1)>0 && LipsTeethDiff(0)<=0 && LipsTeethDiff(1)<0); }
Creating Expert Advisor using MQL5 Wizard
To create a trading robot based on the strategy you need to choose the signal properties as "Signals based on the Alligator" in "Creating Ready-Made Expert Advisors" option of MQL5 Wizard:
Figura 2. Selezionare "Segnali basati sull'Alligatore" in MQL5 Wizard
Successivamente dovrete specificare l'algoritmo di trailing stop necessario ed il sistema di money and risk management. Il codice di Expert Advisor sarà creato automaticamente, puoi compilarlo e testarlo in Strategy Tester del terminale MetaTrader 5.
Risultati dei test
Consideriamo il backtesting dell'Expert Advisor su dati storici (EURUSD H1, periodo di test: 1.1.2010-05.01.2011, JawPeriod=13, JawShift=8, TeethPeriod=8, TeethShift=5, LipsPeriod=5, LipsShift=3, MaMethod=2, Applied=5, CrossMeasure=5).
Nella creazione di Expert Advisor abbiamo usato il lotto fisso (Trading Fixed Lot, 0.1), l'algoritmo Trailing Stop non viene usato (Trailing not used).
Figura 3. Risultati dei test dell'Expert Advisor con segnali di trading, basati sul Alligator indicator
Il profitto può essere aumentato se userete il filtraggio dell'operazione di trading e prenderete in considerazione le caratteristiche del mercato, a seconda del tempo. La classe CSignalITF vi permetterà di aggiungere il filtro temporale intraday. I migliori risultati si possono trovare usando Strategy Tester del terminale MetaTrader 5. Vedi l'esempio in MQL5 Wizard - Trade Signals Based on Crossover of Two EMA with intraday time filter.
Allegati: Il file SignalAlligator.mqh con la classe CSignalAlligator deve essere messo nella cartella terminal_data_folder\MQL5\Include\Expert\Signal .
Il file expert_alligator.mq5 contiene il codice dell'Expert Advisor, creato utilizzando MQL5 Wizard.
Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/267
Vengono considerati i segnali di trading basati sull'incrocio dei prezzi di due medie mobili lisciate esponenzialmente con filtro intraday. 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 principali e di segnale dell'indicatore MACDSi considerano i segnali di trading basati sull'incrocio delle linee principali e di segnale dell'indicatore MACD (CSignalMACD da MQL5 Standard Library). 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 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 - Trade Signals Based on 3 Black Crows/3 White Soldiers + StochasticVengono considerati i segnali di trading basati sul pattern di candele "3 Black Crows/3 White Soldiers", confermato dall'indicatore stocastico. Il codice dell'Expert Advisor basato su questa strategia può essere generato automaticamente utilizzando il Wizard MQL5.