Mira cómo descargar robots gratis
¡Búscanos en Telegram!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Asesores Expertos

Asistente MQL5 - señales de trade basadas en patrones de velas invertidas - Asesor Experto para MetaTrader 5

Visualizaciones:
3290
Ranking:
(45)
Publicado:
2014.01.07 11:06
Actualizado:
2016.11.22 07:33
\MQL5\Include\Expert\Signal\
signalcandles.mqh (39.69 KB) ver
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

El asistente MQL5 proporciona creación automática de EAs (ver asistente MQL5: crear EAs sin necesidad de programación).

La clase CSignalCandles proporciona señales de trade basadas en patrones de velas de reversión. La estrategia llamada "Señales basadas en patrones de velas de reversión" (cuando el EA se crea automáticamente del asistente MQL5).

La idea del sistema es identificar los patrones de inversión mediante el cálculo de la vela compuesta. Los patrones de inversión son similares a los patrones "Hammer" (martillo) y "Handing Man" (hombre colgado) en el análisis de velas japonesas. Pero se usa la vela compuesta en lugar de la vela sola y no necesita del pequeño cuerpo de la vela compuesta para confirmar el cambio.

Parámetros de entrada:

  • Gama - número máximo de barras, utilizado en el cálculo de velas compuestas.
  • Mínimo - tamaño mínimo de velas compuestas (en los puntos convencionales).
  • ShadowBig y ShadowSmall - sombras (en unidades de velas compuestas).
  • Límite, StopLoss y TakeProfit - precio de apertura, los niveles de SL y TP, los valores definidos con relación al precio de cierre de la vela compuesta (unidades de velas compuestas).
  • Vencimiento - pedir hora de caducidad (en barras), utilizado en el trading con las órdenes pendientes (límit! = 0.0).

Los patrones de velas de reversión se determinan como sigue.

Calcula los parámetros de velas compuestas a partir de la barra completa reciente (con índice 1) para el número de barras, definido por el parámetro de entrada de rango (véase cálculo de vela compuesta). Si el tamaño de la vela compuesta es mayor que el valor especificado por el parámetro de entrada mínimo, comprueba las condiciones de inversión de la vela compuesta por el análisis de sus sombras.

La fuerza de los osos se caracteriza por el tamaño de la sombra superior de la vela compuesta, la fuerza de los toros se caracteriza por el tamaño de la sombra inferior.

  • Para confirmar la reversión de la tendencia bajista (y comienzo de la alcista) es necesario lo siguiente: el tamaño de la sombra inferior (fuerza de los toros) debe ser mayor que el valor definido por el parámetro de entrada ShadowBig. El tamaño de la sombra superior (fuerza de los osos) debe ser menor que el valor definido por el parámetro de entrada ShadowSmall.
  • Para confirmar la reversión de la tendencia alcista (y comienzo de los bajistas) es necesario lo siguiente: el tamaño de la sombra superior (fuerza de los osos) debe ser mayor que el valor definido por el parámetro de entrada ShadowBig. El tamaño de la sombra inferior (fuerza de los toros) debe ser menor que el valor definido por el parámetro de entrada ShadowSmall.

Además de la estrategia de inversión, es posible utilizar las estrategias de desglose especificando el valor negativo del parámetro de entrada de límite (véase Asistente MQL5 - Trade de señales basado en el cruce de dos EMA con el filtro de tiempo intradía).

Función de límite, se utilizan tres maneras diferentes de entrada en el mercado:

  1. Limite>0. Entrará en el posterior movimiento del precio, mejor precio del mercado (las órdenes pendientes Buy Limit o Sell Limit se colocarán en función de laseñal de trade)
  2. Limite<0. Entrará en la dirección de movimiento de precio (las órdenes pendientes de Buy Stop o Sell Stop se utilizarán en función de la señal de trade).
  3. Limite=0. Se negociará con los precios de mercado.

Esta estrategia se implementa en la clase CSignalCandles.

Figure 1. Señales de trade, basadas en patrones de velas invertidas

Figure 1. Señales de trade, basadas en patrones de velas invertidas


Señales de Trade

Las señales de comercio se implementan en la clase CSignalCandles, hay una función Candle(), utilizada para el análisis:

int  Candle(int ind); // Devuelve el número positivo/negativo dependiendo del tipo de vela compuesta
                        // el valor devuelto es el número de barras (velas) en la vela compuesta ( a partir del ind)

Varias velas (barras) pueden utilizarse en la construcción de la vela compuesta. El número mínimo de barras está definido por el parámetro Rango. En algunos casos, se puede formar la vela compuesta con velas, menor rango (cuando se cumplen las condiciones de tamaño/sombras). La función Candle (vela) devuelve 0 si la vela compuesta no puede ser formada.


1. Apertura de posición larga

Para abrir la posición larga, es necesaria la vela compuesta alcista. La función comprueba y retorna si la vela compuesta no está formada aún o la vela compuesta es bajista. Overwise, calcula el tamaño de la vela compuesta (necesario para el cálculo del precio y niveles SL y TP) y calcula los niveles de precios para ordenes pendientes.

Nota, el tipo de ordenes pendientes (Buy Limit o Buy Stop) dependen del signo del parámetro de entrada Limit (si Límit = 0 o |price-ask| < stops level, situarán ordenes buy de mercado, si Límit>0, colocará la orden pendiente Buy Limit, si Límit<0, la orden pendiente Buy Stop se colocará).

//+-------------------------------------------------------------------+
//| Comprueba las condiciones para apertura de posiciones largas (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. Cierre de posición largan

If the bearish composite candle has formed, the long position is closed.

//+------------------------------------------------------------------+
//| 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. Apertura de posición corta

La vela bajista compuesta debe ser formada para abrir posición corta. Si la vela compuesta no se forma, o no es bajista, devolver. Overwise determina su tamaño y calcula los niveles de precios de la orden pendiente

(el tipo de orden depende del signo del parámetro de entrada Limit, consultar "Apertura de posición larga").

//+-------------------------------------------------------------------+
//| Comprobar las condiciones de paertura de posiciones cortas (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. Cierre de posición corta

If the bullish composite candle has formed, the short position is closed.

//+------------------------------------------------------------------+
//| 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);
  }

Creación de EA utilizando el Asistente MQL5

Para crear un robot comercial basado en una estrategia tienes que elegir en las propiedades de la señal como "señales basadas en patrones de velas de reversión" en la opción "Crear EAs ready-made" del Asistente MQL5:

Figure 2. Seleccionar "Señales basadas en patrones de velas invertidas en asistente MQL5

Figure 2. Seleccionar "Señales basadas en patrones de velas ide reversión en asistente MQL5

Seguidamente hay que especificar el sistema necesario de algoritmo de trailing stop y money y risk management. El código del EA será creado automáticamente, se puede compilar y probar en el Probador de estrategias del terminal de cliente MetaTrader 5.


Resultados de la prueba

Consideremos backtesting del EA en los datos históricos (EURUSD M15, testing period: 1.1.2010-05.01.2011, Range=3, Minimum=50, ShadowBig=0.5, ShadowSmall=0.2, Limit=0, StopLoss=2.0, TakeProfit=1.0, Expiration=4).

En la creación del EA utilizamos volumen fijo (Trading Fixed Lot, 0.1), Trailing Stop algorithm is not used (Trailing not used).

Figura 3. Resultados del EA con el trading de señales, basados en patrones de velas invertidas

Figura 3. Resultados del EA con el trading de señales, basados en patrones de velas inversas


Archivos adjuntos: The SignalAlligator.mqh con la clase CSignalCandles está situado en la carpeta terminal_data_folder\MQL5\Include\Expert\Signal.

expert_candles.mq5 contiene el código del EA, creado mediante el Asistente MQL5.


Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/268

Parabolic SAR Parabolic SAR

El indicador Parabolic SAR (SAR Parabólico) se ha desarrollado para analizar la tendencia del mercado.

Moving Average of Oscillator (OsMA) Moving Average of Oscillator (OsMA)

El Moving Average of Oscillator (OsMA, Media Móvil del Oscilador) es la diferencia entre el oscilador y su valor suavizado.

Price Channel Price Channel

El Price Channel dibuja el canal del precio, los precios máximos y mínimos de un período dado determinan los límites superior e inferior de este indicador.

Price and Volume Trend (PVT) Price and Volume Trend (PVT)

El indicador Price and Volume Trend (PVT, Tendencia del Precio Volumen), al igual que el On Balance Volume (OBV, Balance de Volúmenes), representa la suma acumulada de los volúmenes de trading calculados teniendo en cuenta los cambios en el precio.