Descargar MetaTrader 5

Análisis de los patrones de velas

25 febrero 2014, 10:09
Dmitry Voronkov
0
1 935


"Estudiando lo pasado, se aprende lo nuevo"

Introducción

El trazado de gráficos de velas y el análisis de los patrones de velas es una línea fascinante del análisis técnico. La ventaja de las velas es que representan los datos de una forma que permite observar las dinámicas a través de los datos.

Las velas proporcionan una imagen mental vívida del trading. Después de leer y practicar un poco, las velas van a formar parte de sus recursos analíticos. Los gráficos de velas japonesas pueden ayudarle a penetrar "dentro" de los mercados financieros, algo muy difícil de lograr mediante otros métodos gráficos. Además son apropiados para todos los mercados.

1. Tipos de velas

Uno de los primeros analistas que comenzaron a predecir los movimientos de los precios futuros, basándose en precios pasados, fue el legendario japonés Munehisa Homma. Los principios de comercio aplicados por Homma en las operaciones comerciales en el mercado del arroz representan el inicio de la técnica de las velas japonesa, que se utiliza ampliamente en Japón y en otros lugares del mundo.

Estructura de una vela

Figura 1. Estructura de una vela

Analicemos la estructura de una vela (Fig. 1). El rectángulo representa la diferencia entre los precios de apertura y cierre, y se le llama cuerpo de la vela. La altura del cuerpo representa el rango entre los precios de apertura y cierre del período de trading. Cuando el precio de cierre es superior al precio de apertura, el cuerpo de la vela es blanco (Fig. 1 a). Si el cuerpo es de color negro (Fig. 1 b), entonces el precio de cierre fue inferior al precio de apertura.

Las velas pueden tener sombras -superior e inferior, la longitud de las sombras depende de la distancia entre los precios de cierre/apertura y los precios mínimos/máximos.

Se representan las velas en el gráfico una por una, formando distintos patrones. De acuerdo con la teoría, algunos patrones pueden indicar con cierta probabilidad que la tendencia está cambiando, o confirmar la tendencia, o demostrar que el mercado está indeciso.

Como regla general, los cuerpos largos de las velas nos indican presiones por parte de los compradores o vendedores (dependiendo del color de la vela). Un cuerpo de vela corto indica poca actividad tanto alcista como bajista.

 Velas Descripción
 

"Velas largas". Las referencias hacia las velas largas están muy difundidas en la bibliografía sobre las velas japonesas.
El término "largas" se refiere a la longitud del cuerpo de la vela, que es la diferencia entre el precio de apertura y el precio de cierre.
Es mejor tener en cuenta los movimientos más recientes de los precios para determinar lo que es largo y lo que no lo es.
Los cinco o diez días anteriores -es un intervalo de tiempo suficiente para llegar a una conclusión correcta.
 

 "Velas cortas". La determinación de las velas cortas se puede basar en el mismo procedimiento utilizado en el caso de las velas largas, con resultados similares.
Además, existe una gran cantidad de velas que no pertenecen a ninguna de estas dos categorías.
"Marubozu". En japonés "Marubozu" significa casi rapado.
En cualquier caso, el significado del término refleja el hecho de que el cuerpo de la vela no tiene ninguna sombra superior y/o inferior, o que son muy pequeñas.

Marubozu negro -un cuerpo negro y largo sin sombra en unos de sus extremos. A menudo aparece como parte de un patrón de continuación bajista o de un patrón de inversión alcista, aparece sobre todo durante una tendencia bajista. Una gran vela negra indica una importante tendencia alcista; por eso aparece a menudo el primer día en muchos patrones de inversión de carácter alcista.

Marubozu blanco -un cuerpo blanco y largo sin sombra en unos de sus extremos. Es una vela muy fuerte. A diferencia del Marubozu Negro, a menudo tiende a ser parte de un patrón de continuación alcista o de un patrón de inversión bajista.
"Doji". Si el cuerpo de la vela es tan pequeño, y que los precios de cierre y apertura son iguales, se trata de Doji.
El requisito de que los precios de cierre y apertura sean exactamente iguales, impone unas restricciones de datos muy estrictas y el Doji aparecería muy pocas veces.
Si la diferencia entre los precios de apertura y cierre no supera algunos ticks (los incrementos mínimos del mercado), esto es más que suficiente.
"Las peonzas" (Spinning Tops o Koma) son velas cortas con sombra superior y/o inferior más larga que el cuerpo.
Se les denomina a veces como Doji "blanco" y "negro". La peonza indica una indecisión entre los toros (alcistas) y osos (bajistas).
El color del cuerpo de la peonza, además de la longitud de su sombra, no es importante. Lo que define la peonza es el pequeño cuerpo respecto a las sombras.
 

"El hombre colgado" y "El martillo". y Son velas con unas sombras inferiores largas y cuerpos cortos. Los cuerpos están en el máximo del rango de precios.
La característica sorprendente de estas velas es que pueden ser alcistas y bajistas, dependiendo de la fase de las tendencias en las que aparecen.
La aparición de estas velas en una tendencia bajista es una señal de que su dominio en el mercado está llegando a su fin, en este caso la vela se le llama "el martillo".
Si la vela aparece durante una tendencia alcista, esto indica su posible final, y la vela tiene un nombre siniestro -"el hombre colgado".
"Una estrella" (Star) aparece siempre que un cuerpo pequeño, vela corta, deje un hueco por encima o por debajo de una vela larga del día anterior, el color del cuerpo no es relevante.
Idealmente, el hueco debe abarcar también las sombras, pero esto no es del todo necesario. La Estrella indica que algo de incertidumbre está prevaleciendo en el mercado.
Las Estrellas forman parte de muchos patrones de velas, en su mayoría de los de inversión (cambio de tendencia).

 Tabla 1. Tipos de velas

Las velas separadas son extremadamente importantes para el análisis de sus combinaciones. Cuando un analista las utiliza por separado y luego en combinación con otras velas, se revela el estado psicológico del mercado.

2. Identificación de los tipos básicos de velas

2.1. Estructuras necesarias

Los patrones de velas pueden componerse de velas separadas o de una combinación de las mismas. Para los patrones de velas, existen ciertas reglas de reconocimiento.

Ejemplo: Estrella del atardecer (patrón bajista). La tendencia es alcista. La primera y tercera vela son "largas". Las sombras de las estrellas son cortas, el color no importa. El patrón clásico: separación de la estrella del cierre de la primera vela, en el mercado de divisas (Forex) e intradía: El cierre de la primera vela y la apertura de la estrella son iguales. La tercera vela se cierra dentro del cuerpo de la primera.

Así que en primer lugar vamos a aprender a reconocer los tipos de velas. Por ello, vamos a escribir la función RecognizeCandle, que va a reconocer el tipo de velas y devolver la información necesaria.

//+------------------------------------------------------------------+
//|   Function of candlestick type recognition                       |
//+------------------------------------------------------------------+
bool RecognizeCandle(string symbol,ENUM_TIMEFRAMES period, datetime time,int aver_period,CANDLE_STRUCTURE &res)
donde:
  • symbol es el nombre del símbolo.
  • period es elperíodo del gráfico.
  • time es el tiempo de apertura de la vela.
  • aver_period es el período de promediado.
  • res es una estructura en la cual se devuelve el resultado.

Vamos a definir los resultados que necesitamos, en base a las reglas de reconocimiento de los patrones de velas:

  • abrir (open), cerrar (close), máximo (high) y mínimo (low);
  • tiempo de apertura de la vela;
  • dirección de la tendencia;
  • vela alcista o bajista;
  • tamaño del cuerpo de la vela -en valor absoluto;
  • tipo de vela (de la tabla 1).

Vamos a crear una estructura:

//+------------------------------------------------------------------+
//| Structure CANDLE_STRUCTURE                                       |
//+------------------------------------------------------------------+
struct CANDLE_STRUCTURE
  {
   double            open,high,low,close; // OHLC
   datetime          time;     //Time
   TYPE_TREND       trend;    //Trend
   bool              bull;     //Bull candlestick
   double            bodysize; //Body size
   TYPE_CANDLESTICK  type;    //Type of candlestick
  };

donde las variables de la tendencia (trend) y el tipo (type) son enumeraciones:

//+------------------------------------------------------------------+
//|   ENUM TYPE CANDLESTICK                                          |
//+------------------------------------------------------------------+
enum TYPE_CANDLESTICK
  {
   CAND_NONE,          //Unrecognized
   CAND_MARIBOZU,       //Marubozu
   CAND_MARIBOZU_LONG, //Marubozu long
   CAND_DOJI,           //Doji
   CAND_SPIN_TOP,       //Spinning Tops
   CAND_HAMMER,         //Hammer
   CAND_INVERT_HAMMER, //Reverse hammer
   CAND_LONG,           //Long
   CAND_SHORT,          //Short
   CAND_STAR            //Star
  };
//+------------------------------------------------------------------+
//|   TYPE_TREND                                                     |
//+------------------------------------------------------------------+
enum TYPE_TREND
  {
   UPPER,   //Upward
   DOWN,    //Downward
   LATERAL  //Lateral
  }; 

Vamos a considerar la función RecognizeCandle.

2.2. Reconocimiento del tipo de vela

//+------------------------------------------------------------------+
//| Function of recognition of candlestick type                      |
//+------------------------------------------------------------------+
bool RecognizeCandle(string symbol,ENUM_TIMEFRAMES period, datetime time,int aver_period,CANDLE_STRUCTURE &res)
  {
   MqlRates rt[];
//--- Get data of previous candlesticks
   if(CopyRates(symbol,period,time,aver_period+1,rt)<aver_period)
     {
      return(false);
     }

Primero, mediante la función CopyRates se obtienen los datos de las velas aver_period+1 anteriores. Hay que tener en cuenta el orden en el cual se almacenan los datos en la matriz obtenida.

Si se reciben los datos sin errores, empezamos a rellenar nuestra estructura de retorno CANDLE_STRUCTURE con datos.

   res.open=rt[aver_period].open;
   res.high=rt[aver_period].high;
   res.low=rt[aver_period].low;
   res.close=rt[aver_period].close;
   res.time=rt[aver_period].time;

Definición de la tendencia. ¿Qué es una tendencia? Si esta pregunta tuviera una respuesta bastante completa, ya se hubieran descubierto los secretos del mercado. En este artículo usaremos un método para determinar la tendencia mediante el promedio móvil.

MA=(C1+C2+…+Cn)/N,
donde C – precios de cierre, N – número de barras.

L. Morris en su libro "Candlestick Charting Explained. Timeless techniques for Trading Stocks and Futures" utiliza un promedio móvil con un período de diez para identificar la tendencia a corto plazo; si el precio de cierre está por encima del promedio -la tendencia es alcista, si es inferior -es bajista.

Sería así:

//--- Define the trend direction
   double aver=0;
   for(int i=0;i<aver_period;i++)
   {
      aver+=rt[i].close;
   }
   aver=aver/aver_period;
   
   if(aver<res.close) res.trend=UPPER;
   if(aver>res.close) res.trend=DOWN;
   if(aver==res.close) res.trend=LATERAL;

A continuación, determinamos si nuestra vela es bajista o alcista, calculamos el valor absoluto del cuerpo de la vela, el tamaño de las sombras, el tamaño promedio del cuerpo de la vela durante aver_period y otros datos intermedios necesarios.

//--- Define of it bullish or bearish
   res.bull=res.open<res.close;
//--- Get the absolute value of the candlestick body size
   res.bodysize=MathAbs(res.open-res.close);
//--- Get the size of shadows
   double shade_low=res.close-res.low;
   double shade_high=res.high-res.open;
   if(res.bull)
     {
      shade_low=res.open-res.low;
      shade_high=res.high-res.close;
     }
   double HL=res.high-res.low;
//--- Calculate the average body size of previous candlesticks
   double sum=0;
   for(int i=1; i<=aver_period; i++)
      sum=sum+MathAbs(rt[i].open-rt[i].close);
   sum=sum/aver_period;

Vamos a analizar ahora la identificación de los tipos de velas.

2.3. Reglas de identificación de los tipos de velas

Velas "Largas". Para definir las velas "largas", comparamos el valor de la vela actual con el valor promedio de las velas anteriores aver_period.

(Cuerpo) > (cuerpo promedio de los últimos cinco días) *1.3

//--- long 
   if(res.bodysize>sum*1.3) res.type=CAND_LONG;

Velas "Cortas". Para definir las velas "cortas", aplicamos el mismo principio que se ha utilizado con las "largas", pero cambiando la condición.

(Cuerpo) > (cuerpo promedio de los últimos X días) *0.5

//--- short 
   if(res.bodysize<sum*0.5) res.type=CAND_SHORT;

Doji. Se produce un Doji cuando el precio de la apertura y del cierre son iguales. Es una regla muy estricta. Para la mayoría de los tipos de datos, podemos tolerar cierta desviación para encontrar patrones. La fórmula permite encontrar la diferencia porcentual entre dos precios dentro de unos límites aceptables.

(Cuerpo Dodji) < (rango desde los precios más altos hasta los precios más bajos) * 0.03

//--- doji
   if(res.bodysize<HL*0.03) res.type=CAND_DOJI;

"Marubozu". Se trata de una vela sin sombras en sus extremos, o son muy pequeñas

(sombra inferior) < (cuerpo) * 0.03 o (sombra superior) < (cuerpo) * 0.03

//--- maribozu
   if((shade_low<res.bodysize*0.01 || shade_high<res.bodysize*0.01) && res.bodysize>0)
     {
      if(res.type==CAND_LONG)
         res.type=CAND_MARIBOZU_LONG;
      else
         res.type=CAND_MARIBOZU;
     }

Al escribir el indicador para este artículo, era necesario distinguir el "Maribozu" "largo", para el cual he tenido que añadir la condición de comprobación velas "largas".

"Martillo" y "Hombre colgado".  El cuerpo se encuentra en la parte superior del rango diario y la sombra inferior es mucho más larga que el cuerpo. Hay que tener en cuenta también la longitud de la sombra superior, si hay alguna. Se define la relación entre el cuerpo y la sombra inferior como la relación entre la longitud del cuerpo y la longitud de la sombra inferior.

(sombra inferior) > (cuerpo) * 2 y (sombra superior) < (cuerpo) * 0.1

//--- hammer
   if(shade_low>res.bodysize*2 && shade_high<res.bodysize*0.1) res.type=CAND_HAMMER;

"Estrella fugaz" y "Martillo invertido" son parecidos a "Martillo", pero con la condición opuesta:

(sombra inferior) < (cuerpo) * 0,1 y (sombra superior) > (cuerpo) * 2

//--- invert hammer
   if(shade_low<res.bodysize*0.1 && shade_high>res.bodysize*2) res.type=CAND_INVERT_HAMMER;

"Peonzas". Hay velas "cortas" con sombras más largas que el cuerpo:

(sombra inferior) > (cuerpo) y (sombra superior) > (cuerpo)

//--- spinning top
   if(res.type==CAND_SHORT && shade_low>res.bodysize && shade_high>res.bodysize) res.type=CAND_SPIN_TOP;

El código de la función y las descripciones de la estructura están en el archivo adjunto CandlestickType.mqh. 

En el artículo, se adjunta también el indicador Candlestick Type Color.mq5, que pinta las velas en el gráfico en función del tipo de las mismas.


 Figura 2. Ejemplo de Candlestick Type Color.mq5

Por lo tanto, hemos creado una función que devuelve todos los datos necesarios.

Ahora podemos proceder a la creación de un indicador que reconoce los patrones de velas.

3. Los patrones de velas y los algoritmos para su identificación

Un patrón de velas puede estar compuesto de una sola o de varias velas, rara vez más de cinco o seis. En la literatura japonesa, se refieren a veces a patrones compuestos de un mayor número de velas. El orden en el cual vamos a examinar los patrones, no corresponde a su importancia ni a sus capacidades predictivas. 

Los patrones de velas se dividen en dos tipos -patrones de inversión y patrones de continuidad.

Comenzaremos con patrones sencillos (una vela), y después veremos los complejos (varias velas). La figura que contiene el patrón comenzará con dos pequeñas líneas verticales. Estas líneas indican sencillamente la dirección anterior de la tendencia del mercado, y no se deben utilizar como una indicación directa de las relaciones entre los patrones.

Se representan los patrones en una tabla, en la primera línea -patrón alcista, en la segunda -el patrón bajista contrario, si lo hay.

3.1. PATRONES DE INVERSIÓN DE LAS VELAS

3.1.1. Patrones compuestos de una sola vela

Obtenemos los datos para una sola vela:

//--- calculation of candlestick patterns
   for(int i=limit;i<rates_total-1;i++)
     {
      CANDLE_STRUCTURE cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i],InpPeriodSMA,cand1))
         continue;
/* Checking patterns with one candlestick */

y reconocemos los patrones.

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Martillo
invertido
(alcista)

Comprar

 Tendencia bajista.
La sombra superior no puede ser 2 veces inferior ni 3 veces superior al cuerpo.
No hay sombra inferior, o es muy pequeña (no más del 10% del rango de las velas).
El color del cuerpo no es importantes en las posiciones largas, en las cortas -el martillo blanco es más fuerte que el negro.
Se recomienda una confirmación.

Hombre colgado
(bajista)

Vender

 Tendencia alcista.
La sombra inferior no puede ser 2 veces inferior ni 3 veces superior al cuerpo.
No hay sombra superior, o es muy pequeña (no más del 10 % del rango de las velas).
El color del cuerpo no es importantes en las posiciones largas, en las cortas -el hombre colgado negro es más fuerte que el blanco.
Se recomienda una confirmación.

      //------      
      // Inverted Hammer the bull model 
      if(cand1.trend==DOWN && // check the trend direction
         cand1.type==CAND_INVERT_HAMMER) // check the "inverted hammer"
        {
         comment=_language?"Inverted hammer";
         DrawSignal(prefix+"Inverted Hammer the bull model"+string(objcount++),cand1,InpColorBull,comment);
        }
      // Handing Man the bear model 
      if(cand1.trend==UPPER && // check the trend direction
         cand1.type==CAND_HAMMER) // check "hammer"
        {
         comment=_language?"Hanging Man";
         DrawSignal(prefix+"Hanging Man the bear model"+string(objcount++),cand1,InpColorBear,comment);
        }

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Martillo
(alcista)

Comprar

 Tendencia bajista.
La sombra inferior no puede ser 2 veces inferior ni 3 veces superior al cuerpo.
No hay sombra superior, o es muy pequeña (no más del 10 % del rango de las velas).
El color del cuerpo no es importantes en las posiciones largas, en las cortas -el martillo blanco es más fuerte que el negro.
Se recomienda una confirmación.
Estrella fugaz
(bajista)

Vender

 Tendencia alcista.
La sombra superior no puede ser 3 veces superior al cuerpo.
No hay sombra inferior, o es muy pequeña (no más del 10 % del rango de las velas).
La diferencia de precio entre la estrella y la vela anterior.
 Forex: el precio de cierre de la vela anterior y de apertura de la estrella son iguales.
El color del cuerpo no importa.
Se recomienda una confirmación.

      //------      
      // Hammer the bull model 
      if(cand1.trend==DOWN && //check the trend direction
         cand1.type==CAND_HAMMER) // check the hammer
        {
         comment=_language?"Hammer";
         DrawSignal(prefix+"Hammer the bull model"+string(objcount++),cand1,InpColorBull,comment);
        }
      //------      
      // Shooting Star the bear model 
      if(cand1.trend==UPPER && cand2.trend==UPPER && //check the trend direction
         cand2.type==CAND_INVERT_HAMMER) // check the inverted hammer
        {
         comment=_language?"Shooting Star";
         if(_forex)// if forex
           {
            if(cand1.close<=cand2.open) // close 1 less equal open 1
              {
               DrawSignal(prefix+"Shooting Star the bear model"+string(objcount++),cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close) // 2 candlestick detached from 1
              {
               DrawSignal(prefix+"Shooting Star the bear model"+string(objcount++),cand2,InpColorBear,comment);
              }
           }
        }

Me gustaría llamar su atención sobre el hecho de que en el caso de la "Estrella fugaz" necesitamos en realidad dos velas, ya que se tienen en cuenta las reglas de reconocimiento del día anterior.

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Belt Hold
(alcista)



Comprar

El patrón
no está
implementado
 Tendencia bajista.
Apertura de una vela con un gran hueco en la dirección de la tendencia.
 Vela blanca —«marubozu» «largo».
 El cuerpo de la vela blanca es mucho más grande que el cuerpo de la vela anterior.
Se recomienda una confirmación.
Belt Hold
(bajista)


Vender

El patrón
no está
implementado
 Tendencia alcista.
Apertura de una vela con un gran hueco en la dirección de la tendencia.
Vela negra —«marubozu» «largo».
 El cuerpo de la vela negra es mucho más grande que el cuerpo de la vela anterior.
Se recomienda una confirmación.

      //------      
      // Belt Hold the bull model 
      if(cand2.trend==DOWN && cand2.bull && !cand1.bull &&// check the trend direction and direction of the candlestick
         cand2.type==CAND_MARIBOZU_LONG && // check the "long" marubozu
         cand1.bodysize<cand2.bodysize && cand2.close<cand1.close) // the body of the first candlestick is smaller than the body of the second one, close of the second one is below the close of the first
        {
         comment=_language?"Belt Hold";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Belt Hold the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }
      // Belt Hold the bear model
      if(cand2.trend==UPPER && !cand2.bull && cand1.bull && // check the trend direction and direction of the candlestick
         cand2.type==CAND_MARIBOZU_LONG && // check the "long" marubozu
         cand1.bodysize<cand2.bodysize && cand2.close>cand1.close) // the body of the first candlestick is smaller than the body of the second one, close of the second one is above the close of the first
        {
         comment=_language?"Belt Hold";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Belt Hold the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
           }
        }

Igual que en el caso de la "Estrella fugaz", se usan dos velas, ya que se tiene en cuenta el cuerpo del día anterior para el reconocimiento del patrón.

3.1.2. Patrones compuestos de dos velas

Añadimos otra vela:

/* Checking patterns with two candlesticks */
      CANDLE_STRUCTURE cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-1],InpPeriodSMA,cand1))
         continue;

y reconocemos los patrones:

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Envolvente
(alcista)

Comprar

 Tendencia bajista.
El cuerpo de la segunda vela cubre el cuerpo de la primera por completo.
 Forex: El cierre de la vela negra coincide con la apertura de la blanca.
No importan las sombras.
Se recomienda una confirmación.

Envolvente
(bajista)

Vender

 Tendencia alcista.
El cuerpo de la segunda vela cubre el cuerpo de la primera por completo.
 Forex: El cierre de la vela blanca coincide con la apertura de la negra.
No importan las sombras.
Se recomienda una confirmación.

      //------      
      // Engulfing the bull model
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && cand2.bull && // check the trend direction and direction of the candlestick
         cand1.bodysize<cand2.bodysize) // the body of the second candlestick is larger than that of the first
        {
         comment=_language?"Engulfing";
         if(_forex)// if forex
           {
            if(cand1.close>=cand2.open && cand1.open<cand2.close) // the body of the first candlestick is inside the body of the second
              {
               DrawSignal(prefix+"Engulfing the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.open<cand2.close) // the body of the first candlestick is inside the body of the second
              {
               DrawSignal(prefix+"Engulfing the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
        }
      // Engulfing the bear model
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && // check the trend direction and direction of the candlestick
         cand1.bodysize<cand2.bodysize) // the body of the second candlestick is larger than that of the first
        {
         comment=_language?"Engulfing";
         if(_forex)// if forex
           {
            if(cand1.close<=cand2.open && cand1.open>cand2.close) //the body of the first candlestick is inside the body of the second
              {
               DrawSignal(prefix+"Engulfing the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.open>cand2.close) // close 1 less equal to open 2 or open 1 larger equal to close 2
              {
               DrawSignal(prefix+"Engulfing the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
        }

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Harami Cross (alcista)

Comprar

 Tendencia bajista.
La primera vela del patrón es larga y negra.
Doji está dentro del rango de la primera vela, incluyendo las sombras.
 Forex: Doji está en el nivel de cierre de la primera vela. Si la sombra de Doji es corta, se trata de un patrón Estrella Doji para Forex.
Se recomienda una confirmación.

Harami Cross
(bajista)

Vender

 Tendencia alcista.
La primera vela del patrón es larga y blanca.
Doji está dentro del rango de la primera vela, incluyendo las sombras.
 Forex: Doji está en el nivel de cierre de la primera vela. Si la sombra de Doji es corta, se trata de un patrón Estrella Doji para Forex.
Se recomienda una confirmación.

      //------      
      // Harami Cross the bull model
      if(cand1.trend==DOWN && !cand1.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) // checking the "long" first candlestick and doji
        {
         comment=_language?""Harami Cross";
         if(_forex)// if forex
           {
            if(cand1.close<=cand2.open && cand1.close<=cand2.close && cand1.open>cand2.close) // doji inside the body of the first candlestick
              {
               DrawSignal(prefix+"Harami Cross the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close && cand1.open>cand2.close) // doji inside the body of the first candlestick
              {
               DrawSignal(prefix+"Harami Cross the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
        }
      // Harami Cross the bear model
      if(cand1.trend==UPPER && cand1.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) //  checking the "long" candlestick and doji
        {
         comment=_language?"Harami Cross";
         if(_forex)// if forex
           {
            if(cand1.close>=cand2.open && cand1.close>=cand2.close && cand1.close>=cand2.close) //  doji inside the body of the first candlestick
              {
               DrawSignal(prefix+"Harami Cross the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close && cand1.open<cand2.close) //  doji inside the body of the first candlestick
              {
               DrawSignal(prefix+"Harami Cross the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
        }

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Harami
(alcista)

Comprar

 Tendencia bajista.
 El cuerpo de la primera vela "larga" cubre el cuerpo de la segunda por completo.
No importan las sombras.
Forex: El cierre de la vela negra coincide con la apertura de la blanca.
Se recomienda una confirmación.

Harami
(bajista)

Vender

 Tendencia alcista.
 El cuerpo de la primera vela "larga" cubre el cuerpo de la segunda por completo.
No importan las sombras.
Forex: El cierre de la vela blanca coincide con la apertura de la negra.
Se recomienda una confirmación.

      //------      
      // Harami the bull model
      if(cand1.trend==DOWN && !cand1.bull && cand2.bull &&// check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  // checking the "long"first candlestick
          cand2.type!=CAND_DOJI && cand1.bodysize>cand2.bodysize) // the second candlestick is not doji and the body of the first is larger than the body of the second
        {
         comment=_language?"Harami";
         if(_forex)// if forex
           {
            if(cand1.close<=cand2.open && cand1.close<=cand2.close && cand1.open>cand2.close) // body of the second candlestick is inside the body of the first
              {
               DrawSignal(prefix+"Harami the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close && cand1.open>cand2.close) // body of the second candlestick is inside the body of the first
              {
               DrawSignal(prefix+"Harami the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
        }
      // Harami the bear model
      if(cand1.trend==UPPER && cand1.bull && !cand2.bull &&// check the trend direction and direction of candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  // checking the "long" first candlestick
          cand2.type!=CAND_DOJI && cand1.bodysize>cand2.bodysize) // the second candlestick is not doji and body of the first candlestick is larger than that of the second
        {
         comment=_language?"Harami";
         if(_forex)// if forex
           {
            if(cand1.close>=cand2.open && cand1.close>=cand2.close && cand1.close>=cand2.close) // doji is inside the body of the first candlestick
              {
               DrawSignal(prefix+"Harami the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close && cand1.open<cand2.close) //doji is inside the body of the first candlestick
              {
               DrawSignal(prefix+"Harami the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
        }

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Estrella Doji
(alcista)

Comprar

 Tendencia bajista.
 La primera vela del patrón es larga y negra.
 La segunda sesión -Doji con una cambio en la dirección de la tendencia.
Forex: sin cambio.
Las sombras de Doji son cortas.
Se recomienda una confirmación.

Estrella Doji
(bajista)

Vender

 Tendencia alcista.
La primera vela del patrón es larga y blanca.
 La segunda sesión -Doji con una cambio en la dirección de la tendencia.
Forex: sin cambio.
Las sombras de Doji son cortas.
Se recomienda una confirmación.

      //------      
      // Doji Star the bull model 
      if(cand1.trend==DOWN && !cand1.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) // checking 1 "long" candlestick and 2 doji
        {
         comment=_language?"Doji Star";
         if(_forex)// if forex
           {
            if(cand1.close>=cand2.open) // open of doji is below or equal to close of the first candlestick
              {
               DrawSignal(prefix+"Doji Star the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);

              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close) // the body of doji is alienated from the body of the first candlestick
              {
               DrawSignal(prefix+"Doji Star the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);

              }
           }
        }
      // Doji Star the bear model 
      if(cand1.trend==UPPER && cand1.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) // checking 1 "long" candlestick and 2 doji
        {
         comment=_language?"Doji Star";
         if(_forex)// if forex
           {
            if(cand1.close<=cand2.open) // // open of doji is above or equal to close of the first candlestick
              {
               DrawSignal(prefix+"Doji Star the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);

              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close) // // the body of doji is alienated from the body of the first candlestick
              {
               DrawSignal(prefix+"Doji Star the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);

              }
           }
        }

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Patrón penetrante
(alcista)

Comprar

 Tendencia bajista.
 Ambas velas son largas.
La apertura de la vela blanca está por debajo del Mínimo de la vela negra.
 Forex: El cierre de la vela negra y la apertura de la blanca son iguales.
La vela blanca se cierra dentro de la negra y cubre más del 50% del cuerpo. (Para los mercados bursátiles: a diferencia de la Cubierta de nube oscura 'Dark-cloud cover', este requisito no tiene excepciones.)
La confirmación no es necesaria para el modelo clásico, pero sí que lo es para Forex.
Cubierta de nube oscura (bajista)

Vender

 Tendencia alcista.
 Ambas velas son largas.
 La apertura de la vela negra está por encima del Máximo de la vela blanca.
 Forex: El cierre de la vela blanca y la apertura de la negra son iguales.
La vela negra se cierra dentro de la blanca y cubre más del 50% del cuerpo.
La confirmación no es necesaria para el modelo clásico, pero si lo es para Forex.

            //------      
            // Piercing line the bull model 
            if(cand1.trend==DOWN  &&  !cand1.bull  &&  cand2.trend==DOWN  &&  cand2.bull && // check the trend direction and direction of the candlestick
               (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
               cand2.close>(cand1.close+cand1.open)/2)// close of the second is above the middle of the first
              {
               comment=_language?"Piercing Line";
               if(_forex)// if forex
                 {
                  if(cand1.close>=cand2.open && cand2.close<=cand1.open)
                    {
                     DrawSignal(prefix+"Gleam in clouds"+string(objcount++),cand1,cand2,InpColorBull,comment);
                    }
                 }
               else
                 {
                  if(cand2.open<cand1.low && cand2.close<=cand1.open) // open of the second candlestick is below LOW of the first, 
                    {
                     DrawSignal(prefix+"Piercing Line"+string(objcount++),cand1,cand2,InpColorBull,comment);
                    }
                 }
              }
            // Dark Cloud Cover the bear model 
            if(cand1.trend==UPPER  &&  cand1.bull  &&  cand2.trend==UPPER && !cand2.bull && // check the trend direction and direction of the candlestick
               (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
               cand2.close<(cand1.close+cand1.open)/2)// close 2 is below the middle of the body of 1
              {
               comment=_language?"Dark Cloud Cover";
               if(_forex)// if forex
                 {
                  if(cand1.close<=cand2.open && cand2.close>=cand1.open)
                    {
                     DrawSignal(prefix+"Dark Cloud Cover"+string(objcount++),cand1,cand2,InpColorBear,comment);
                     
                    }
                 }
               else
                 {
                  if(cand1.high<cand2.open && cand2.close>=cand1.open)
                    {
                     DrawSignal(prefix+"Dark Cloud Cover"+string(objcount++),cand1,cand2,InpColorBear,comment);
                     
                    }
                 }
              }

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Líneas encontradas
(alcista)

Comprar

El patrón
no está
implementado
 Tendencia bajista.
 La primera vela del patrón es larga y negra.
 La apertura de la vela blanca tiene un hueco grande y está por debajo del Mínimo de la vela negra.
 Los precios de cierre de ambas velas son iguales.
 El cuerpo de la vela blanca es más grande que el cuerpo de la vela negra.
Se recomienda una confirmación.
Líneas encontradas
(bajistas)

Vender

El patrón
no está
implementado
 Tendencia alcista.
La primera vela del patrón es larga y blanca.
 La apertura de la vela negra tiene un hueco grande y está por encima del Máximo de la vela blanca.
 Los precios de cierre de ambas velas son iguales.
 El cuerpo de la vela negra es más grande que el cuerpo de la vela blanca.
Se recomienda una confirmación.

      // Meeting Lines the bull model
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && cand2.bull && // check the trend direction and the candlestick direction
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand1.close==cand2.close && cand1.bodysize<cand2.bodysize && cand1.low>cand2.open) // close prices are equal, size of the first one is less than of the second one, open of the second is below Low of the first
        {
         comment=_language?"Meeting Lines";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Meeting Lines the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }
      // Meeting Lines the bear model 
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && // check the trend direction and the candlestick direction
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand1.close==cand2.close && cand1.bodysize<cand2.bodysize && cand1.high<cand2.open) // // close prices are equal, size of first is less than of second, open of the second is above High of the first
        {
         comment=_language?"Meeting Lines";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Meeting Lines the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
           }
        }

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Mínimos coincidentes
(alcista)

Comprar

El patrón
no está
implementado
 Tendencia bajista.
 La primera vela del patrón no debe ser necesariamente larga.
 La apertura de la segunda vela está dentro del cuerpo de la primera.
Los precios de cierre de ambas velas son iguales.
No hay sombras inferiores o son muy pequeñas.
Se recomienda una confirmación.

      //------      
      // Matching Low the bull model 
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && !cand2.bull && // check the trend direction and the candlestick direction
         cand1.close==cand2.close && cand1.bodysize>cand2.bodysize) // close prices are equal, size of the first one is larger than of the second
        {
         comment=_language?"Matching Low";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Matching Low the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Paloma mensajera<br1(alcista)

Comprar

El patrón
no está
implementado
 Tendencia bajista.
 La primera vela del patrón no debe ser necesariamente larga.
 La apertura de la segunda vela está dentro del cuerpo de la primera.
Los precios de cierre de ambas velas son iguales.
No hay sombras inferiores o son muy pequeñas.
Se recomienda una confirmación.

      //------      
      // Homing Pigeon the bull model
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && !cand2.bull && // check the trend direction and the candlestick direction
        (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  // checking the "long" candlestick
         cand1.close<cand2.close && cand1.open>cand2.open) // body of the second is inside that of the first candlestick
        {
         comment=_language?"Homing Pigeon";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Homing Pigeon the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);   
           }
        }

 3.1.3. Patrones compuestos de tres velas

/* Checking patterns with three candlesticks */
      CANDLE_STRUCTURE cand3;
      cand3=cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-2],InpPeriodSMA,cand1))
         continue;
Nombre del patrón  Orden  Patrón clásico Forex Reconocimiento del patrón
Bebé abandonado
(alcista)

 

Comprar

El patrón
no está
implementado

 Este patrón es poco frecuente pero importante.
Tendencia bajista.
 La primera vela del patrón es larga y negra.
 La segunda vela es Doji con hueco, y el hueco no está únicamente entre los cuerpos de las velas, sino también entre las sombras.
La tercera es una vela blanca "larga" con el mismo hueco entre las sombras y se Cierra dentro del cuerpo de la primera vela.

  Bebé abandonado
(bajista)

 

Vender

  El patrón
no está
implementado

 Este patrón es poco frecuente pero importante.
Tendencia alcista.
 La primera vela del patrón es larga y blanca.
 La segunda vela es Doji con hueco, y el hueco no está únicamente entre los cuerpos de las velas, sino también entre las sombras.
La tercera es una vela negra "larga" con el mismo hueco entre las sombras y se Cierra dentro del cuerpo de la primera vela.

      //------      
      // The Abandoned Baby, the bullish model
      if(cand1.trend==DOWN && !cand1.bull && cand3.trend==DOWN && cand3.bull && // check direction of trend and direction of candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // check of "long" candlestick
         cand2.type==CAND_DOJI && // check if the second candlestick is Doji
         cand3.close<cand1.open && cand3.close>cand1.close) // the third one is closed inside of body of the first one
        {
         comment=_language?"Abandoned Baby (Bull)":"Abandoned Baby";
         if(!_forex)// if it's not forex
           {
            if(cand1.low>cand2.high && cand3.low>cand2.high) // gap between candlesticks
              {
               DrawSignal(prefix+"Abandoned Baby the bull model"+string(objcount++),cand1,cand1,cand3,InpColorBull,comment);
              }
           }
        }
      // The Abandoned Baby, the bearish model
      if(cand1.trend==UPPER && cand1.bull && cand3.trend==UPPER && !cand3.bull && // check direction of trend and direction of candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // check of "long" candlestick
         cand2.type==CAND_DOJI && // check if the second candlestick is Doji
         cand3.close>cand1.open && cand3.close<cand1.close) // // the third one is closed inside of body of the second one
        {
         comment=_language?"Abandoned Baby (Bear)":"Abandoned Baby";
         if(!_forex)// if it's not forex
           {
            if(cand1.high<cand2.low && cand3.high<cand2.low) // gap between candlesticks
              {
               DrawSignal(prefix+"Abandoned Baby the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }
Nombre del patrón  Orden Patrón clásico Forex Reconocimiento del patrón
Estrella de la mañana
(alcista)

Comprar


 Tendencia bajista.
 La primera y tercera sesión son velas "largas".
Las sombras de las estrellas son cortas, el color no importa.
La separación entre la estrella y el cierre de la primera vela.
Forex: El cierre de la primera vela y la apertura de la estrella son iguales.
La tercera vela se cierra dentro del cuerpo de la primera.
 Estrella del atardecer
(bajista
)

 

Vender

 

 

 Tendencia alcista.
 La primera y tercera sesión son velas "largas".
Las sombras de las estrellas son cortas, el color no importa.
La separación entre la estrella y el cierre de la primera vela.
Forex: El cierre de la primera vela y la apertura de la estrella son iguales.
La tercera vela se cierra dentro del cuerpo de la primera.
      // Morning star the bull model
      if(cand1.trend==DOWN && !cand1.bull && cand3.trend==DOWN && cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand2.type==CAND_SHORT && // checking "short"
         cand3.close>cand1.close && cand3.close<cand1.open) // the third candlestick is closed inside the body of the first one
        {
         comment=_language?"Morning star";
         if(_forex)// if forex
           {
            if(cand2.open<=cand1.close) // open of the second candlestick is below or equal to close of the first one
              {
               DrawSignal(prefix+"Morning star the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else // another market
           {
            if(cand2.open<cand1.close && cand2.close<cand1.close) // separation of the second candlestick from the first one
              {
               DrawSignal(prefix+"Morning star the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Evening star the bear model
      if(cand1.trend==UPPER && cand1.bull && cand3.trend==UPPER && !cand3.bull && //check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand2.type==CAND_SHORT && // checking "short"
         cand3.close<cand1.close && cand3.close>cand1.open) // the third candlestick is closed inside the body of the first one
        {
         comment=_language?"Evening star";
         if(_forex)// if forex
           {
            if(cand2.open>=cand1.close) // open of the second is above or equal to close of the first one
              {
               DrawSignal(prefix+"Evening star the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else // another market
           {
            if(cand2.open>cand1.close && cand2.close>cand1.close) //  separation of the second candlestick from the first one
              {
               DrawSignal(prefix+"Evening star the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }
Nombre del patrón  Orden Patrón clásico Forex Reconocimiento del patrón
Estrella Doji de la mañana
(alcista)

Comprar



 Tendencia bajista.
 La primera vela del patrón es larga y negra.
 La segunda sesión -Doji con una cambio en la dirección de la tendencia.
Forex: sin cambio.
Las sombras de Doji son cortas.
La tercera vela se cierra dentro del cuerpo de la primera.
Estrella Doji del atardecer
(bajista)


Vender



 Tendencia alcista.
La primera vela del patrón es larga y blanca.
 La segunda sesión -Doji con una cambio en la dirección de la tendencia.
Forex: sin cambio.
Las sombras de Doji son cortas.
Se recomienda una confirmación.
      //------      
      // Morning Doji Star the bull model 
      if(cand1.trend==DOWN && !cand1.bull && cand3.trend==DOWN && cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand2.type==CAND_DOJI && // checking "doji"
         cand3.close>cand1.close && cand3.close<cand1.open) // third cand. is closed inside body of first
        {
         comment=_language?"Morning Doji Star";
         if(_forex)// if forex
           {
            if(cand2.open<=cand1.close) // open of doji is below or equal to close of the first
              {
               DrawSignal(prefix+"Morning Doji Star the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else // another market
           {
            if(cand2.open<cand1.close) // separation of doji from the first
              {
               DrawSignal(prefix+"Morning Doji Star the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Evening Doji Star the bear model
      if(cand1.trend==UPPER && cand1.bull && cand3.trend==UPPER && !cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand2.type==CAND_DOJI && // checking "doji"
         cand3.close<cand1.close && cand3.close>cand1.open) // third cand. is closed inside body of first
        {
         comment=_language?"Evening Doji Star";
         if(_forex)// if forex
           {
            if(cand2.open>=cand1.close) // open of doji is above or equal to close of the first
              {
               DrawSignal(prefix+"Evening Doji Star the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else // another market
           {
            if(cand2.open>cand1.close) // separation of doji from the first
               // check close 2 and open 3
              {
               DrawSignal(prefix+"Evening Doji Star the bear model"+string(objcount++),cand1,cand3,cand3,InpColorBear,comment);
              }
           }
        }
Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Dos cuervos tras un hueco al alza

Vender


El patrón
no está
implementado
 Tendencia alcista.
La primera vela es larga y blanca.
Un hueco entre la vela blanca y negra.
La tercera vela abre por encima de la segunda y la envuelve.
Se recomienda una confirmación.
 El significado del patrón: si no se pueden subir los precios durante la cuarta sesión, debemos esperar que los precios bajen.
Dos cuervos
(bajista)

Vender


El patrón
no está
implementado
 Tendencia alcista.
La primera vela del patrón es larga y blanca.
El hueco entre las vela blanca y la primera negra.
La tercera vela es negra y necesariamente larga"; abre dentro o por encima de la segunda y cierra dentro o por debajo de la vela blanca, cubriendo el hueco.
Se recomienda una confirmación.
Si el segundo cuervo (la tercera vela) envuelve una vela blanca, la confirmación ya no es necesaria.
      //------      
      // Upside Gap Two Crows the bear model
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && cand3.trend==UPPER && !cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand1.close<cand2.close && cand1.close<cand3.close && // separation of the second and third from the first one
         cand2.open<cand3.open && cand2.close>cand3.close) // the third candlestick engulfs second
        {
         comment=_language?"Upside Gap Two Crows";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Upside Gap Two Crows the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }
      //------      
      // Two Crows the bear model
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && cand3.trend==UPPER && !cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG|| cand1.type==CAND_MARIBOZU_LONG) &&(cand3.type==CAND_LONG|| cand3.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand1.close<cand2.close && // separation of the second from the first one
         cand3.open>cand2.close && // third one opens higher than close of the second
         cand3.close<cand1.close) // third one closes than close of the first
        {
         comment=_language?"Two Crows";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Two Crows the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }

Nombre del patrón  Orden Patrón clásico Forex Reconocimiento del patrón
Tres estrella en el sur
(alcista)

Comprar



 Tendencia bajista.
La primera vela es negra y larga, con una sombra inferior larga.
La segunda vela es más corta que la primera, su Mínimo está por encima del Mínimo de la primera vela.
La tercera vela es un pequeño Marubozu negro o estrella, dentro del rango de la segunda sesión.
Se recomienda una confirmación.
Deliberación
(bajista)

Vender



 Tendencia alcista.
Tres velas blancos con precios de cierre más altos. Las dos primeras velas son largas.
El precio de apertura de cada vela está dentro del cuerpo de la anterior.
 Forex: los precios de cierre/apertura de las velas blancas son iguales.
 La tercera vela abre cerca del nivel de cierre de la segunda vela.
 La tercera vela es una estrella o una peonza.
Se recomienda una confirmación.

      //------      
      // Three Star in the South the bull model

      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand3.bull && //check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_MARIBOZU || cand3.type==CAND_SHORT) && // checking the "long" candlestick and marubozu
         cand1.bodysize>cand2.bodysize && cand1.low<cand2.low && cand3.low>cand2.low && cand3.high<cand2.high)
        {
         comment=_language?"Three Star in the South";
         if(_forex)// if forex
           {
            DrawSignal(prefix+"Three Star in the South the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
         else // another market
           {
            if(cand1.close<cand2.open && cand2.close<cand3.open) // open is inside the previous candlestick
              {
               DrawSignal(prefix+"Three Star in the South the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Deliberation the bear model
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         (cand3.type==CAND_SPIN_TOP || cand3.type==CAND_SHORT)) // the third candlestick is a star or spinning top
        {
         comment=_language?"Deliberation";
         if(_forex)// if forex
           {
            DrawSignal(prefix+"Deliberation the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
         else // another market
           {
            if(cand1.close>cand2.open && cand2.close<=cand3.open) // open is inside the previous candlestick
               // check close 2 and open 3
              {
               DrawSignal(prefix+"Deliberation the bear model"+string(objcount++),cand1,cand3,cand3,InpColorBear,comment);
              }
           }
        }

Nombre del patrón  Orden Patrón clásico Forex Reconocimiento del patrón
Tres soldados blancos
(alcista)

Comprar



 Tendencia bajista.
 Tres velas blancas largas seguidas, el precio de cierre de cada una es superior al de la vela anterior.
 El precio de apertura de cada soldado está dentro del cuerpo de la vela anterior.
 Forex: Los precios de cierre de ambas velas son iguales.
 Las sombras superiores de los soldados son cortas.
No hace falta una confirmación.
Tres cuervos negros
(bajista)

Vender


El patrón
no está
implementado
 Tendencia alcista.
 Tres velas negras largas seguidas, el precio de cierre de cada una es inferior al de la vela anterior.
 El precio de apertura de cada cuervo está dentro del cuerpo de la vela anterior.
 Forex: corresponde al mismo patrón que tres cuervos.
 Las sombras inferiores de los cuervos son cortas.
No hace falta una confirmación.

      //------      
      // Three White Soldiers the bull model
      if(cand1.trend==DOWN && cand1.bull && cand2.bull && cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick and marubozu
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG)) // checking the "long" candlestick and marubozu
        {
         comment=_language?"Three White Soldiers";
         if(_forex)// if forex
           {
            DrawSignal(prefix+"Three White Soldiers the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
         else // another market
           {
            if(cand1.close>cand2.open && cand2.close>cand3.open) // open inside the previous candlestick
              {
               DrawSignal(prefix+"Three White Soldiers the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Three Black Crows the bear model
      if(cand1.trend==UPPER && !cand1.bull && !cand2.bull && !cand3.bull && //check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick and marubozu
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick and marubozu
         cand1.close<cand2.open && cand2.close<cand3.open)
        {
         comment=_language?"Three Black Crows";
         if(!_forex) // non-forex
           {
               DrawSignal(prefix+"Three Black Crows the bear model"+string(objcount++),cand1,cand3,cand3,InpColorBear,comment);
           }
        }

Nombre del patrón  Orden Patrón clásico Forex Reconocimiento del patrón
Tres velas exteriores alcistas
(alcista)

Comprar



 Tendencia bajista.
 Se forma primero una envolvente (alcista): el cuerpo de la segunda vela cubre completamente el cuerpo de la primera.
 Forex: El cierre de la vela negra y la apertura de la blanca son iguales.
No importan las sombras.
 Luego, en la tercera vela hay un cierre más alto.
La confirmación no es necesaria: el mismo patrón es una confirmación de la Envolvente alcista.
Tres velas exteriores bajistas
(bajista)

Vender



 Tendencia alcista.
 Se forma primero una envolvente (bajista): el cuerpo de la segunda vela cubre completamente el cuerpo de la primera.
 Forex: El cierre de la vela blanca coincide con la apertura de la primera negra.
No importan las sombras.
 Luego, en la tercera vela hay un cierre más bajo.
La confirmación no es necesaria: el mismo patrón es una confirmación de la Envolvente bajista.

      //------      
      // Three Outside Up the bull model
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && cand2.bull && cand3.bull && // check the trend direction and direction of the candlestick
         cand2.bodysize>cand1.bodysize && // the body of the second candlestick is larger than that of the first
         cand3.close>cand2.close) // the third day is closed higher than the second
        {
         comment=_language?"Three Outside Up";
         if(_forex)// if forex
           {
            if(cand1.close>=cand2.open && cand1.open<cand2.close) // the body of the first candlestick is inside the body of the second
              {
               DrawSignal(prefix+"Three Outside Up the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.open<cand2.close) // the body of the first candlestick is inside the body of the second
              {
               DrawSignal(prefix+"Three Outside Up the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Three Outside Down the bear model
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && !cand3.bull && // check the trend direction and direction of the candlestick
         cand2.bodysize>cand1.bodysize && // the body of the second candlestick is larger than that of the first
         cand3.close<cand2.close) // the third day is closed lower than the second
        {
         comment=_language?"Three Outside Down";
         if(_forex)// if forex
           {
            if(cand1.close<=cand2.open && cand1.open>cand2.close) // the body of the first candlestick is inside the body of the second
              {
               DrawSignal(prefix+"Three Outside Down the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.open>cand2.close) // the body of the first candlestick is inside the body of the second
              {
               DrawSignal(prefix+"Three Outside Down the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }

Nombre del patrón  Orden Patrón clásico Forex Reconocimiento del patrón
Tres velas interiores alcistas
(alcista)

Comprar



 Tendencia bajista.
 En la primera vela se forma el patrón Harami (alcista): un pequeño cuerpo blanco está envuelto por un cuerpo largo negro.
 El cierre de la tercera vela es superior al Máximo de las dos primeras velas.
La confirmación no es necesaria: el mismo patrón es una confirmación del Harami alcista.
Tres velas interiores bajistas
(bajista)

Vender



 Tendencia alcista.
 En la primera vela se forma el patrón Harami (bajista): un pequeño cuerpo negro está envuelto por un cuerpo largo blanco.
 El cierre de la tercera vela es inferior al Mínimo de las dos primeras velas.
La confirmación no es necesaria: el mismo patrón es una confirmación del Harami bajista.

      //------      
      // Three Inside Up the bull model
      if(cand1.trend==DOWN  &&  !cand1.bull  &&  cand2.bull && cand3.bull && //check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  //checking the "long" candlestick 
         cand1.bodysize>cand2.bodysize && // the body of the first candlestick is larger than that of the second one
         cand3.close>cand2.close) // the third day closes higher than the second
        {
         comment=_language?"Three Inside Up";
         if(_forex)// if forex
           {
            if(cand1.close<=cand2.open && cand1.close<=cand2.close && cand1.open>cand2.close) // the body of the second candlestick is inside the body of the first one
              {
               DrawSignal(prefix+"Three Inside Up the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close && cand1.open>cand2.close) // the body of the second candlestick is inside the body of the first one
              {
               DrawSignal(prefix+"Three Inside Up the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Three Inside Down the bear model
      if(cand1.trend==UPPER && cand1.bull && !cand2.bull && !cand3.bull &&//check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick 
         cand1.bodysize>cand2.bodysize && // the body of the first candlestick is larger than that of the second one
         cand3.close<cand2.close) // the third day closes lower than the second
        {
         comment=_language?"Three Inside Down";
         if(_forex)// if forex
           {
            if(cand1.close>=cand2.open && cand1.close>=cand2.close && cand1.close>=cand2.close) // inside the body of the first candlestick
              {
               DrawSignal(prefix+"Three Inside Down the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close && cand1.open<cand2.close) // inside the body of the first candlestick
              {
               DrawSignal(prefix+"Three Inside Down the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }

Nombre del patrón  Orden Patrón clásico Forex Reconocimiento del patrón
Tres estrellas
(alcista)

Comprar



 Tendencia bajista.
No hace falta el hueco entre el primer Doji y el anterior.
 Las tres velas son Doji.
 El Doji del medio tiene un hueco arriba o abajo.
 Forex: los tres Doji están en el mismo nivel.
Se recomienda una confirmación.
Tres estrellas
(bajista)

Vender



 Tendencia alcista.
No hace falta el hueco entre el primer Doji y el anterior.
 Las tres velas son Doji.
 El Doji del medio tiene un hueco arriba o abajo.
 Forex: los tres Doji están en el mismo nivel.
Se recomienda una confirmación.

      //------      
      // Three Stars the bull model
      if(cand1.trend==DOWN  && // check the trend direction
         cand1.type==CAND_DOJI && cand2.type==CAND_DOJI && cand3.type==CAND_DOJI) // check doji
        {
         comment=_language?"Bullish Three Stars";
         if(_forex)// if forex
           {
               DrawSignal(prefix+"Three Stars the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
         else
           {
            if(cand2.open!=cand1.close && cand2.close!=cand3.open) // the second candlestick is on a different level
              {
               DrawSignal(prefix+"Three Stars the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Three Stars the bear model
      if(cand1.trend==UPPER && // check the trend direction
         cand1.type==CAND_DOJI && cand2.type==CAND_DOJI && cand3.type==CAND_DOJI) // check doji
        {
         comment=_language?"Bearish Three Stars";
         if(_forex)// if forex
           {
               DrawSignal(prefix+"Three Stars the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
         else
           {
            if(cand2.open!=cand1.close && cand2.close!=cand3.open) //  the second candlestick is on a different level
              {
               DrawSignal(prefix+"Three Stars the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Tres cuervos idénticos
(bajista)

Sell



 Tendencia alcista.
 Tres velas negras largas seguidas, el precio de cierre de cada una es inferior al de la vela anterior.
 El precio de apertura de cada cuervo está aproximadamente igual al precio de Cierre de la vela anterior.
 Las sombras inferiores de los cuervos son cortas.
No hace falta una confirmación.

      // Identical Three Crows the bear model
      if(cand1.trend==UPPER && !cand1.bull && !cand2.bull && !cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick or marubozu
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG)) // checking the "long" candlestick or marubozu
        {
         comment=_language?"Identical Three Crows";
         if(_forex)// if forex
           {
            DrawSignal(prefix+"Identical Three Crows the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
         else // a different market
           {
            if(cand1.close>=cand2.open && cand2.close>=cand3.open) // open is less or equal to close of the preceding candlestick
              {
               DrawSignal(prefix+"Identical Three Crows the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Suelo de tres ríos alcistas
(alcista)

Comprar


El patrón
no está
implementado
 Tendencia bajista.
 La primera vela de este patrón es negra y larga con sombras cortas.
 En la segunda aparece Harami, pero con un cuerpo negro.
 La sombra inferior de la segunda proporciona un nuevo Mínimo.
La tercera es una vela blanca corta inferior a la del medio.
La confirmación no es necesaria, pero deseable.

      // Unique Three River Bottom the bull model
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && cand3.bull && // check the trend direction and the candlestick direction
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand3.type==CAND_SHORT && // check the "long" candlestick or "marubozu" third short day
         cand2.open<cand1.open && cand2.close>cand1.close && cand2.low<cand1.low && // body of the second candlestick is inside the first, Low is lower than the first
         cand3.close<cand2.close) // the third candlestick is below the second
        {
         comment=_language?"Unique Three River Bottom";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Unique Three River Bottom the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
        }

3.1.4. Patrones compuestos de cuatro velas

/* Checking patterns with four candlesticks */      
      CANDLE_STRUCTURE cand4;
      cand4=cand3;
      cand3=cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-3],InpPeriodSMA,cand1))
         continue

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Pequeña golondrina escondida (alcista)


Comprar

El patrón
no está
implementado
 Tendencia bajista.
 Las dos primeras son dos Marubozu.
 La tercera abre con un hueco hacia abajo, pero la transacción se lleva a cabo dentro del cuerpo de la segunda vela, formando una larga sombra superior.
 La cuarta vela negra envuelve completamente la tercera, incluyendo la sombra.
No hace falta una confirmación.

      //------      
      // Concealing Baby Swallow the bull model
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand3.bull && !cand4.bull && // check the trend direction and the candlestick direction
         cand1.type==CAND_MARIBOZU_LONG && cand2.type==CAND_MARIBOZU_LONG && cand3.type==CAND_SHORT && // checking "marubozu"
         cand3.open<cand2.close && cand3.high>cand2.close && // third candlestick with a gap down, High is inside the 2nd candlestick
         cand4.open>cand3.high && cand4.close<cand3.low) // the fourth candlestick completely engulfs the third
        {
         comment=_language?"Concealing Baby Swallow";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Concealing Baby Swallow the bull model"+string(objcount++),cand1,cand2,cand4,InpColorBull,comment);
           }
        }

3.1.5. Patrones compuestos de dos velas

/* Checking patterns with five candlesticks */
      CANDLE_STRUCTURE cand5;
      cand5=cand4;
      cand4=cand3;
      cand3=cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-4],InpPeriodSMA,cand1))
         continue

Nombre del patrón  Orden Patrón clásico Forex Reconocimiento del patrón
Escape
(alcista)

Comprar

El patrón
no está
implementado
 Tendencia bajista.
 Las dos primeras sesiones —una vela negra "larga" y una vela negra "corta" (estrella) con hueco.
 La tercera es "corta", puede ser de cualquier color.
 La cuarta vela es negra "corta".
 La quinta es blanca "larga" con un cierre dentro del hueco.
Se recomienda una confirmación.
Escape
(bajista)

Vender

El patrón
no está
implementado
 Tendencia alcista.
 Las dos primeras sesiones —una vela blanca "larga" y una vela blanca "corta" (estrella) con hueco.
 La tercera es una vela "corta", puede ser de cualquier color.
La cuarta vela es blanca "corta".
 La quinta es negra "larga" con un cierre dentro del hueco.
Se recomienda una confirmación.

      //------      
      // Breakaway the bull model
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand4.bull && cand5.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG|| cand1.type==CAND_MARIBOZU_LONG) &&  //checking the "long" first candlestick
         cand2.type==CAND_SHORT && cand2.open<cand1.close && // the second is "short", separated from the first
         cand3.type==CAND_SHORT && cand4.type==CAND_SHORT && // third and fourth are "short"
         (cand5.type==CAND_LONG || cand5.type==CAND_MARIBOZU_LONG) && cand5.close<cand1.close && cand5.close>cand2.open) // fifth is "long" white with close inside the gap
        {
         comment=_language?"Bullish Breakaway";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Breakaway the bull model"+string(objcount++),cand1,cand2,cand5,InpColorBull,comment);
           }
        }
      // Breakaway the bear model
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && cand4.bull && !cand5.bull && //  check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG|| cand1.type==CAND_MARIBOZU_LONG) &&  // checking the "long" first candlestick
         cand2.type==CAND_SHORT && cand2.open<cand1.close && // the second is "short", separated from the first
         cand3.type==CAND_SHORT && cand4.type==CAND_SHORT && // third and fourth are "short"
         (cand5.type==CAND_LONG || cand5.type==CAND_MARIBOZU_LONG) && cand5.close>cand1.close && cand5.close<cand2.open) // fifth is "long" black with close inside the gap
        {
         comment=_language?"Bearish Breakaway";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Breakaway the bear model"+string(objcount++),cand1,cand2,cand5,InpColorBear,comment);
           }
        }

3.2. PATRONES DE CONTINUIDAD

Los patrones de continuidad corresponden a los períodos de consolidación o descanso del mercado.

Independientemente de cuál es el patrón, es necesario determinar la posición actual, incluso si no cambia nada.

3.2.1. Patrones compuestos de una sola vela

Nombre del patrón  Orden Patrón clásico Forex Reconocimiento del patrón
Patada o Coz
(alcista)

Comprar

El patrón
no está
implementado
 Después del "Marubozu" negro hay un "Marubozu" blanco.
 Hay un hueco entre los cuerpos.
No hace falta una confirmación.
Patada o Coz
(bajista)

Vender

El patrón
no está
implementado
 Después del "Marubozu" blanco hay un "Marubozu" negro.
 Hay un hueco entre los cuerpos.
No hace falta una confirmación.

      //------      
      // Kicking the bull model
      if(!cand1.bull && cand2.bull && // check the trend direction and direction of the candlestick
         cand1.type==CAND_MARIBOZU_LONG && cand2.type==CAND_MARIBOZU_LONG && // two marubozu
         cand1.open<cand2.open) // a gap between them
        {
         comment=_language?"Bullish Kicking";
         if(!_forex)// if non-forex
           {
            DrawSignal(prefix+"Kicking the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }
      // Kicking the bear model
      if(cand1.bull && !cand2.bull && // check the trend direction and direction of the candlestick
         cand1.type==CAND_MARIBOZU_LONG && cand2.type==CAND_MARIBOZU_LONG && // two marubozu
         cand1.open>cand2.open) // a gap between them
        {
         comment=_language?"Bearish Kicking";
         if(!_forex)// if non-forex
           {
            DrawSignal(prefix+"Kicking the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
           }
        }

3.2.2. Patrones compuestos de dos velas

Nombre del patrón  Orden Patrón clásico Forex Reconocimiento del patrón
 Bajista sobre la línea del cuello

 

Vender

   El patrón
no está
implementado
 Tendencia bajista.
La primera vela del patrón es larga y negra.
 La vela blanca abre por debajo del Mínimo de la vela negra y cierra muy cerca del Mínimo de la vela negra.
 La vela blanca -no necesariamente larga.
Se recomienda una confirmación.
En la línea del cuello
(bajista)

Vender

El patrón
no está
implementado
 Tendencia bajista.
La primera vela del patrón es larga y negra.
 La vela blanca abre por debajo del Mínimo de la vela negra y cierra ligeramente por encima del cierre de la vela negra.
 La vela blanca -no necesariamente larga.
 El cuerpo de la vela blanca es más pequeño que el cuerpo de la vela negra.
 La sombra superior de la vela blanca es muy pequeña.
Se recomienda una confirmación.
Línea de empuje
(bajista)

Vender


El patrón
no está
implementado
 Tendencia bajista.
La primera vela del patrón es larga y negra.
 La vela blanca abre por debajo del Mínimo de la negra y cierra por encima del cierre de la vela negra, pero el precio del cierre sigue siendo inferior al medio de la vela negra.
 La vela blanca -no necesariamente larga.
Se recomienda una confirmación.

Hay que tener en cuenta que estos modelos tienen mucho en común, aunque su implementación es algo distinta.

      //------ Check On Neck patterns
      if(cand1.trend==DOWN && !cand1.bull && cand2.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG)) // the first candlestick is "long"
        {
         // On Neck Line the bear model
         if(cand2.open<cand1.low && cand2.close==cand1.low) // the second candlestick opens below 1st and closes at Low of the first
           {
            comment=_language?"On Neck Line Bear";
            if(!_forex)// if not forex
              {
               DrawSignal(prefix+"On Neck Line the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            // In Neck Line the bear model
            if(cand1.trend==DOWN && !cand1.bull && cand2.bull && // check the trend direction and direction of the candlestick
               (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // the first candlestick is "long"
               cand1.bodysize>cand2.bodysize && // body of 2nd candlestick is smaller than that of the 1st one
               cand2.open<cand1.low && cand2.close>=cand1.close && cand2.close<(cand1.close+cand1.bodysize*0.01)) // the second candlestick opens lower than first and closes a little higher than Close of the first
              {
               comment=_language?"In Neck Line Bear";
               if(!_forex)// если не форекс
                 {
                  DrawSignal(prefix+"In Neck Line the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
                 }
              }
            else
              {
               // Thrusting Line the bear model
               if(cand1.trend==DOWN && !cand1.bull && cand2.bull && // check the trend direction and direction of the candlestick
                  (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // the first candlestick is "long"
                  cand2.open<cand1.low && cand2.close>cand1.close && cand2.close<(cand1.open+cand1.close)/2) //  the second candlestick opens lower than first and closes a higher than Close of the first but lower than middle
                 {
                  comment=_language?"Thrusting Line Bea";
                  if(!_forex)// if non-forex
                    {
                     DrawSignal(prefix+"Thrusting Line the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
                    }
                 }
              }
           }
        }

3.2.3. Patrones compuestos de tres velas

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Hueco alcista de triple formación
(alcista)


Comprar


El patrón
no está
implementado
 Tendencia alcista.
 Las dos primeras velas son blancas "largas" con hueco entre ellas.
 La tercera vela se abre en el cuerpo de la segunda y rellana el hueco.
Se recomienda una confirmación.
Hueco alcista de triple formación
(bajista)


Vender


El patrón
no está
implementado
 Tendencia bajista.
 Las dos primeras velas son negras "largas" con hueco entre ellas.
 La tercera vela se abre en el cuerpo de la segunda y rellana el hueco.
Se recomienda una confirmación.

      //------      
      // Upside Gap Three Methods the bull model
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && !cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // the first two candlesticks are "long"
         cand2.open>cand1.close && // a gap between the first and the second
         cand3.open>cand2.open && cand3.open<cand2.close && cand3.close<cand1.close) // the third candlestick opens inside the body of the second and fills in the gap
        {
         comment=_language?"Upside Gap Three Methods";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Upside Gap Three Methods the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
        }
      //------      
      // Downside Gap Three Methods the bull model
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // the first two candlesticks are "long"
         cand2.open<cand1.close && // a gap between the first and the second
         cand3.open<cand2.open && cand3.open>cand2.close && cand3.close>cand1.close) //the third candlestick opens inside the body of the second and fills in the gap
        {
         comment=_language?"Downside Gap Three Methods";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Downside Gap Three Methods the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Hueco alcista Tasuki
(alcista)


Comprar


<
El patrón
no está
implementado
 Tendencia alcista.
El hueco entre dos velas blancas adyacentes. Las velas blancas no son necesariamente "largas".
La tercera vela abre cerca del nivel de cierre de la segunda vela.
La tercera sesión cierra en el hueco, pero el hueco está parcialmente relleno.
Se recomienda una confirmación.
Hueco bajista Tasuki
(bajista)


Vender

El patrón
no está
implementado
 Tendencia bajista.
El hueco entre dos velas negras adyacentes. Las velas negras no son necesariamente "largas".
La tercera vela abre cerca del nivel de cierre de la segunda vela.
La tercera sesión cierra en el hueco, pero el hueco está parcialmente relleno.
Se recomienda una confirmación.

      //------      
      // Upside Tasuki Gap the bull model
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && !cand3.bull && // check the trend direction and direction of the candlestick
         cand1.type!=CAND_DOJI && cand2.type!=CAND_DOJI && // the first two candlesticks are not doji
         cand2.open>cand1.close && // a gap between the first and the second
         cand3.open>cand2.open && cand3.open<cand2.close && cand3.close<cand2.open && cand3.close>cand1.close) // 3rd candlestick opens inside 2nd and closes inside the gap
        {
         comment=_language?"Upside Tasuki Gap";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Upside Tasuki Gap the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
        }
      //------      
      // Downside Tasuki Gap the bull model
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && cand3.bull && // check the trend direction and direction of the candlestick
         cand1.type!=CAND_DOJI && cand2.type!=CAND_DOJI && // the first two candlesticks are not doji
         cand2.open<cand1.close && // a gap between the first and the second
         cand3.open<cand2.open && cand3.open>cand2.close && cand3.close>cand2.open && cand3.close<cand1.close) // 3rd candlestick opens inside 2nd and closes inside the gap
        {
         comment=_language?"Downside Tasuki Gap";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Downside Tasuki Gap the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }

3.2.4. Patrones compuestos de cuatro velas

Nombre del patrón Orden Patrón clásico Forex Reconocimiento del patrón
Triple golpe
(alcista)

Comprar

 La tendencia alcista es continuada con tres velas, al igual que en el patrón Tres soldados blancos: velas blancas largas con sombras cortas.
 Forex: Los precios de cierre/apertura de las velas blancas son iguales.
 La cuarta vela abre con un hueco al alza y cierra por debajo de la apertura de la primera vela blanca.
 Forex: el cierre de la tercera vela y la apertura de la cuarta son iguales.
Se recomienda una confirmación.
Triple golpe(bajista)

Vender

 La tendencia bajista es continuada con tres velas, al igual que en el patrón Tres cuervos negros: velas negras largas con sombras cortas.
 Forex: Los precios de cierre/apertura de las velas negras son iguales (al igual que los Tres cuervos idénticos).
 La cuarta vela abre con un hueco a la baja y cierra por encima de la apertura de la primera vela negra.
 Forex: el cierre de la tercera vela y la apertura de la cuarta son iguales.
Se recomienda una confirmación.

      //------      
      // Three-line strike the bull model
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && cand3.bull && !cand4.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // check the "long: candlestick or "maruozu"
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && //  check the "long: candlestick or "maruozu"
         cand2.close>cand1.close && cand3.close>cand2.close && cand4.close<cand1.open) // close of 2nd is higher than 1st, that of 3rd is higher than 2nd, the fourth candlestick closes lower than the 1st
        {
         comment=_language?"Three-line strike";
         if(_forex)// if forex
           {
            if(cand4.open>=cand3.close) // 4th opens higher than the 3rd
              {
               DrawSignal(prefix+"Three-line strike the bull model"+string(objcount++),cand1,cand3,cand4,InpColorBull,comment);
              }
           }
         else // a different market
           {
            if(cand4.open>cand3.close) // 4th opens higher than th 3rd
              {
               DrawSignal(prefix+"Three-line strike the bull model"+string(objcount++),cand1,cand3,cand4,InpColorBull,comment);
              }
           }
        }
      //------      
      // Three-line strike the bear model 
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand3.bull && cand4.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && //  check the "long: candlestick or "maruozu"
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && //  check the "long: candlestick or "maruozu"
         cand2.close<cand1.close && cand3.close<cand2.close && cand4.close>cand1.open) // close of 2nd is lower than 1st, close of 3rd is lower than 2nd, the fourth candlestick closes higher than 1st
        {
         comment=_language?"Three-line strike";
         if(_forex)// if forex
           {
            if(cand4.open<=cand3.close) // the fourth opens lower than or equal to the third
              {
               DrawSignal(prefix+"Three-line strike the bear model"+string(objcount++),cand1,cand3,cand4,InpColorBear,comment);
              }
           }
         else // a different market
           {
            if(cand4.open<cand3.close) // the fourth opens lower than 3rd
              {
               DrawSignal(prefix+"Three-line strike the bear model"+string(objcount++),cand1,cand3,cand4,InpColorBear,comment);
              }
           }
        }

4. La implementación de los indicadores

Vamos a seleccionar los parámetros de entrada necesarios.

Parámetros de entrada del indicador de los patrones de velas

Figura 3. Parámetros de entrada del indicador de los patrones de velas

El primer parámetro es "Averaging period" (Período de promediado) -Nos hace falta para determinar la dirección de la tendencia, definiendo las velas "long" (largas) y "short" (cortas).

El siguiente parámetro es "Enable signal" (Activar la señal) -responsable de la activación/desactivación de la señal. La señal notifica la aparición de un nuevo patrón.

Señales generadas por el indicador de los patrones de velas

Figura 4. Señales generadas por el indicador de los patrones de velas

Se diseña el parámetro "Number of bars for calculation" (Número de barras para el cálculo) para facilitar el funcionamiento del indicador. Si su valor es inferior o igual a cero se buscan patrones a través de todo el historial disponible, de los contrario se utiliza un conjunto de barras para la búsqueda, lo que facilita considerablemente el funcionamiento del indicador.

Creo que gracias a los colores todo queda muy claro...

"Enable comments" (Activar comentarios) activa/desactiva los nombres de los patrones de velas.

"Font size" (Tamaño de fuente) establece el tamaño de fuente de los comentarios.

La implementación del indicador es muy sencilla.

Espere a que aparezca una nueva barra:

//--- Wait for a new bar
   if(rates_total==prev_calculated)
     {
      return(rates_total);
     }

Luego calculamos el valor inicial del contador para comenzar el bucle.

   int limit;
   if(prev_calculated==0)
     {
      if(InpCountBars<=0 || InpCountBars>=rates_total)
         limit=InpPeriodSMA*2;
      else
         limit=rates_total-InpCountBars;
     }
   else
      limit=prev_calculated-1;

En el bucle comprobamos las combinaciones de las velas y las mostramos en pantalla, tal y como se muestra en la Figura 5:

  • Combinación con una vela: un flecha con el nombre del patrón por encima o por debajo de la vela.
  • Combinación con dos velas: Un rectángulo con borde fino con el nombre del patrón por encima o por debajo de la primera vela.
  • Combinación con tres velas o más: Un rectángulo con borde grueso con el nombre del patrón por encima o por debajo de la última vela.

Ejemplo sobre el funcionamiento del indicador de patrones de velas

Figura 5. Ejemplo sobre el funcionamiento del indicador de patrones de velas

Hay que tener en cuenta que debido a la posibilidad de sobrecarga de la función, la salida de las señales de distintos patrones se hace mediante las funciones con el mismo nombre DrawSignal(), pero con un número de parámetros diferente.

void DrawSignal(string objname,CANDLE_STRUCTURE &cand,color Col,string comment)
void DrawSignal(string objname,CANDLE_STRUCTURE &cand1,CANDLE_STRUCTURE &cand2,color Col,string comment)
void DrawSignal(string objname,CANDLE_STRUCTURE &cand1,CANDLE_STRUCTURE &cand2,CANDLE_STRUCTURE &cand3,color Col,string comment)

El código completo del indicador se encuentra en el archivo Candlestick_Patterns.mq5, adjunto a este artículo.

Conclusión

En este artículo hemos repasado la mayoría de los patrones de velas, los métodos para detectarlos y hemos proporcionado ejemplos de su implementación en el lenguaje de programación MQL5. Los archivos adjuntos al artículo contienen dos indicadores y un archivo de inclusión. Para utilizarlos, se ubican los indicadores en la carpeta \Indicators y el archivo de inclusión en la carpeta \Include, y luego se compilan.

Espero que el análisis de los patrones de velas le ayude a mejorar los resultados de su trabajo.

De cara al futuro, quiero añadir que las velas filtradas proporcionan mejores resultados que la mayoría de los indicadores técnicos, pero trataremos este tema en un próximo artículo, en el cual voy a crear un sistema de trading y un trading de Asesores Expertos mediante los patrones de velas.


Traducción del ruso hecha por MetaQuotes Software Corp.
Artículo original: https://www.mql5.com/ru/articles/101

Archivos adjuntos |
Guía para escribir un DLL para MQL en Delphi Guía para escribir un DLL para MQL en Delphi

En este artículo examinaremos el mecanismo para crear un módulo DLL usando el popular lenguaje de programación de ObjectPascal dentr del entorno de programación de Delphi. Los materiales que se facilitan en este artículo están diseñados para dirigirse a programadores principiantes que trabajan con problemas que superan las barreras del lenguaje de programación incrustado de MQL5 conectando los módulos DLL externos.

Un Ejemplo de Sistema de Trading Basado en un Indicador Heikin-Ashi Un Ejemplo de Sistema de Trading Basado en un Indicador Heikin-Ashi

En este artículo trataremos el uso de un indicador Heikin-Ashi en trading. Basado en este indicador, se considera un sistema de trading simple, y se escribe un Asesor Experto de MQL5. Las operaciones de trading se implementan en las bases de clases de la biblioteca de clase estándar. Los resultados de simulación de la estrategia de trading revisada se basan en el historial, y se obtienen usando el Probador de Estrategias incluido en MetaTrader 5. Podrá encontrarlos en el artículo.

Creación de un Expert Advisor que opera con varios instrumentos Creación de un Expert Advisor que opera con varios instrumentos

El concepto de diversificación de activos en los mercados financieros es bastante antiguo, y siempre ha atraído a los operadores principiantes. En este artículo, el autor propone un enfoque muy simplificado para la implementación de un Expert Advisor multidivisa, para una introducción inicial a este tipo de estrategias de trading.

Pruebas de rendimiento computacional de los promedios móviles en MQL5 Pruebas de rendimiento computacional de los promedios móviles en MQL5

Desde la creación del primer indicador de Promedio móvil, surgieron muchos indicadores. Muchos de ellos utilizan los mismos métodos de suavizado, pero no se han estudiado los rendimientos de los distintos algoritmos de los promedios móviles. En este artículo, vamos a examinar distintas maneras de utilizar los Promedios móviles en MQL5 y comparar su rendimiento.