Unisciti alla nostra fan page

Procedura guidata MQL5 - Segnali di trading basati su modelli di candele di inversione - sistema esperto per MetaTrader 5
- Visualizzazioni:
- 461
- Valutazioni:
- Pubblicato:
- 2021.11.15 09:19
-
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 Advisor (vedi MQL5 Wizard: Creazione di Expert Advisor senza programmazione ).
La classe CSignalCandles fornisce segnali di trading, basati su modelli di candele di inversione. La strategia chiamata "Signals based on reversal candlestick patterns" (quando si crea automaticamente EA nella procedura guidata MQL5).
L'idea del sistema è identificare i modelli di inversione utilizzando il calcolo della candela composita. Il pattern di inversione è simile ai pattern "Hammer" e "Hanging Man" nell'analisi delle candele giapponesi. Ma usa la candela composita invece della candela singola e non ha bisogno del piccolo corpo della candela composita per confermare l'inversione.
Parametri di ingresso:
- Range - numero massimo di barre, utilizzato nel calcolo della candela composita.
- Minimum - dimensione minima della candela composita (nei punti convenzionali).
- ShadowBig e ShadowSmall - ombre (in unità di candele composite).
- Limit, StopLoss e TakeProfit - prezzo di apertura, livelli SL e TP, i valori definiti rispetto al prezzo di chiusura della candela composita (unità di candela composita).
- Expiration - tempo di scadenza dell'ordine (in barre), utilizzato nel trading con ordini in pending (Limite!=0.0).
I modelli di candele di inversione sono determinati come segue.
Calcola i parametri della candela composita a partire dalla barra completata di recente (con indice 1) fino al numero di barre, definito dal parametro di input Range. Se la dimensione della candela composita è maggiore del valore, specificato dal parametro di input Minimo, verifica le condizioni di inversione della candela composita mediante l'analisi delle sue ombre.
Il potere ribassista è caratterizzato dalla dimensione dell'ombra superiore della candela composita, il potere rialzista è caratterizzato dalla dimensione dell'ombra inferiore.
- Per confermare l'inversione del trend ribassista (e l'inizio del rialzista) è necessario quanto segue: la dimensione dell'ombra inferiore (bulls power) deve essere maggiore del valore, definito dal parametro di input ShadowBig. La dimensione dell'ombra superiore (bears power) deve essere inferiore al valore, definito dal parametro di input ShadowSmall.
- Per confermare l'inversione del trend rialzista (e l'inizio del ribassista) è necessario quanto segue: la dimensione dell'ombra superiore (bears power) deve essere maggiore del valore, definito dal parametro di input ShadowBig. La dimensione dell'ombra inferiore (bulls power) deve essere inferiore al valore, definito dal parametro di input ShadowSmall.
Oltre alla strategia di inversione, è possibile utilizzare le strategie di breakdown specificando il valore negativo del parametro di input Limit (vedi Wizard MQL5 - Segnali di trading basati su Crossover di due EMA con filtro orario intraday ).
A seconda del Limite, vengono utilizzate tre diverse modalità di ingresso nel mercato:
- Limite>0. Entrerà in un movimento all'indietro sul prezzo, migliore del prezzo di mercato (gli ordini in pending Buy Limit o Sell Limit verranno piazzati a seconda del segnale di trading)
- Limite<0. Entrerà nella direzione del movimento del prezzo (gli ordini in pending Buy Stop o Sell Stop verranno utilizzati a seconda del segnale di trading).
- Limite=0. Si scambierà utilizzando i prezzi di mercato.
Questa strategia è implementata nella classe CSignalCandles.
Figura 1. Segnali di trading, basati su modelli di candele di inversione
Segnali di trading
I segnali di trading sono implementati nella classe CSignalCandles, c'è una funzione Candle(), utilizzata per l'analisi:
int Candle(int ind); // Returns the positive/negative number depending on type of the composite candle // the returned value is the number of bars (candles) in the composite candle (starting from ind)
Diverse candele (bar) possono essere utilizzate nella costruzione della candela composita. Il numero minimo di barre è definito dal parametro Range. In alcuni casi, la candela composita può essere formata con candele, inferiori a Range (quando le condizioni di dimensione/ombre sono soddisfatte). La funzione Candle restituisce 0 se non è possibile formare la candela composita.
1. Apri una posizione long
Per aprire una posizione long, è necessaria una candela composita rialzista. La funzione lo controlla e ritorna se la candela composita non è ancora formata o se la candela composita è ribassista. Altrimenti, calcola la dimensione composita della candela (necessaria per il calcolo dei livelli di prezzo, SL e TP) e calcola i livelli di prezzo per l'ordine pendente.
Si noti che il tipo di ordine pendente (Buy Limit o Buy Stop) dipende dal segno del parametro di input Limit (se Limit=0 o |price-ask|<stops level, piazzerà un ordine di acquisto a mercato, se Limit>0, piazzerà l'ordine pendente Buy Limit, se Limit<0, l'ordine pendente Buy Stop sarà piazzato).
//+------------------------------------------------------------------+ //| Checks conditions to open long position (buy) | //+------------------------------------------------------------------+ bool CSignalCandles::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { //--- check the fact of the bullish composite candle formation if(Candle(1)<=0) return(false); //--- get the size of the composite candle double size=m_high_composite-m_low_composite; //--- calculate the price of pending order price=m_symbol.NormalizePrice(m_symbol.Ask()-m_limit*size); //--- calculate Stop Loss price sl =m_symbol.NormalizePrice(price-m_stop_loss*size); //--- calculate Take Profit price tp =m_symbol.NormalizePrice(price+m_take_profit*size); //--- set order expiration time expiration+=m_expiration*PeriodSeconds(m_period); //--- the conditions are satisfied, return true return(true); }
2. Chiude posizione long
Se la candela composita ribassista si è formata, la posizione lunga viene chiusa.
//+------------------------------------------------------------------+ //| Checks conditions to close long position | //+------------------------------------------------------------------+ bool CSignalCandles::CheckCloseLong(double& price) { //--- check the fact of the bearish composite candle formation if(Candle(1)>=0) return(false); //--- price=0.0; //--- the conditions are satisfied, return true return(true); }
3. Apri posizione short
La candela composita ribassista deve essere formata per aprire una posizione corta. Se la candela composita non è formata, o non è ribassista, ritorna. Inoltre determiniamo la sua dimensione e calcoliamo i livelli di prezzo dell'ordine pendente
(il tipo di ordine dipende dal segno del parametro di ingresso Limit, see "Open long position").
//+------------------------------------------------------------------+ //| Checks conditions to open short position (sell) | //+------------------------------------------------------------------+ bool CSignalCandles::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { //--- check the fact of the bearish composite candle formation if(Candle(1)>=0) return(false); //--- get the size of the composite candle double size=m_high_composite-m_low_composite; //--- calculate the price of pending order price=m_symbol.NormalizePrice(m_symbol.Bid()+m_limit*size); //--- calculate Stop Loss price sl =m_symbol.NormalizePrice(price+m_stop_loss*size); //--- calculate Take Profit price tp =m_symbol.NormalizePrice(price-m_take_profit*size); //--- set order expiration time expiration+=m_expiration*PeriodSeconds(m_period); //--- the conditions are satisfied, return true return(true); }
4. Chiude posizione short
Se la candela composita rialzista si è formata, la posizione corta è chiusa.
//+------------------------------------------------------------------+ //| Checks conditions to close short position | //+------------------------------------------------------------------+ bool CSignalCandles::CheckCloseShort(double& price) { //--- check the fact of the bullish composite candle formation if(Candle(1)<=0) return(false); //--- price=0.0; //--- the conditions are satisfied, return true return(true); }
Creating Expert Advisor using MQL5 Wizard
Per creare un robot di trading basato sulla strategia è necessario scegliere le proprietà del segnale come " Signals based on reversal candlestick patterns " nell'opzione "Creazione di Expert Advisor pronti" della procedura guidata MQL5 :
Figura 2. Selezionare "Segnali basati su modelli di candele di inversione nella procedura guidata MQL5
Successivamente devi specificare l' algoritmo di trailing stop necessario e il sistema di gestione del denaro e del rischio . Il codice di Expert Advisor verrà creato automaticamente, puoi compilarlo e testarlo in Strategy Tester del terminale client MetaTrader 5.
Risultati dei test
Consideriamo il backtesting dell'Expert Advisor su dati storici (EURUSD M15, periodo di test: 1.1.2010-05.01.2011, Range=3, Minimum=50, ShadowBig=0.5, ShadowSmall=0.2, Limit=0, StopLoss=2.0, TakeProfit =1.0, Scadenza=4).
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 ).
Figura 3. Risultati dei test dell'Expert Advisor con segnali di trading, basati su modelli di candele di inversione
Allegati: la classe SignalCandles.mqh con CSignalCandles deve essere posizionata nella cartella terminal_data_folder\MQL5\Include\Expert\Signal.
Le candele_esperte.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/268

Vengono 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 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.

Vengono 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.

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.