English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Türkçe
Analizzare i Modelli di Candele

Analizzare i Modelli di Candele

MetaTrader 5Sistemi di trading | 16 dicembre 2021, 10:34
829 0
Dmitry Voronkov
Dmitry Voronkov


"Attraverso la ricerca del vecchio impariamo il nuovo"

Introduzione

Il tracciamento dei grafici a candele e l'analisi dei modelli a candele sono una straordinaria linea di analisi tecnica. Il vantaggio delle candele è che rappresentano i dati in modo che sia possibile vedere lo slancio all'interno degli stessi.

Le candele danno una vivida immagine mentale del trading. Dopo aver letto e un po' di pratica, le candele faranno parte del tuo arsenale analitico. I grafici a candele giapponesi possono aiutarti a penetrare nei mercati finanziari, cosa molto difficile da fare con altri metodi grafici. Sono ugualmente adatti a tutti i mercati.

1. Tipi di Candele

Uno dei primi analisti che ha iniziato a prevedere il movimento dei prezzi in futuro, sulla base dei prezzi passati, è stato il leggendario giapponese Munehisa Homma. I principi di trading applicati da Homma nel commercio sul mercato del riso hanno avviato la tecnica delle candele giapponesi, che è ora ampiamente utilizzata in Giappone e all'estero.

Struttura di un modello di candele

Figura 1. Struttura di un modello di candele

Considera la struttura di un modello di candele (Fig. 1). Il rettangolo che rappresenta la differenza tra i prezzi di apertura e chiusura, è chiamato corpo della candela. L'altezza del corpo rappresenta l'intervallo tra i prezzi di apertura e di chiusura del periodo di negoziazione. Quando il prezzo di chiusura è superiore al prezzo di apertura, il corpo della candela è bianco (Fig. 1 a). Se il corpo è nero (Fig. 1 b), significa che il prezzo di chiusura era inferiore al prezzo di apertura.

Le candele possono avere ombre: superiore e inferiore, la lunghezza delle ombre dipende dalla distanza tra i prezzi di apertura/chiusura e i prezzi minimo/massimo.

Le candele sono tracciate sul grafico uno per uno, formando vari modelli. Secondo la teoria, alcuni pattern possono indicare con una certa probabilità che il trend sta cambiando o confermare il trend, o mostrare che il mercato è indeciso.

I corpi lunghi delle candele, di regola, raccontano la pressione di acquirenti o venditori (a seconda del colore delle candele). Corpi corti indicano che la lotta tra i tori e gli orsi era debole.

 Candele Descrizione
 

“Candele Lunghe” Il collegamento alle candele lunghe è molto diffuso nella letteratura sui modelli di candele giapponesi.
Il termine "lungo" si riferisce alla lunghezza del corpo della candela, la differenza tra il prezzo di apertura e il prezzo di chiusura.
È meglio considerare i movimenti di prezzo più recenti per determinare cosa è lungo e cosa no.
Cinque o dieci giorni prima: è un periodo abbastanza adeguato per arrivare a una conclusione corretta.
 

 "Candelieri corti". La determinazione delle candele corte può essere basata sulla stessa metodologia utilizzata nel caso delle candele lunghe, con risultati simili.
Inoltre, ci sono molte candele che non rientrano in nessuna di queste due categorie.
"Marubozu" . In giapponese "Marubozu" significa quasi audace.
In ogni caso, il significato del termine riflette il fatto che il corpo della candela o non ha affatto ombre in alto e/o in basso, oppure sono molto piccole.

Marubozu nero: un lungo corpo nero senza ombra su uno dei lati. Diventa spesso una parte del modello di continuazione ribassista o del modello di inversione rialzista, specialmente quando appare in una tendenza al ribasso. Una lunga candela nera indica una grande vittoria dei ribassisti, quindi spesso appare il primo giorno di molti modelli di inversione del carattere rialzista.

Marubozu bianco - un lungo corpo bianco senza ombra su uno dei lati. Questa è una candela molto forte. In contrasto con il marubozu nero, spesso risulta essere parte del modello di continuazione rialzista o di un modello di inversione ribassista.
"Doji". Se il corpo della candela è così piccolo che i prezzi di apertura e chiusura sono gli stessi, si chiama Doji.
Il requisito che i prezzi di apertura e di chiusura dovrebbero essere esattamente uguali, impone rigide restrizioni sui dati, e il Doji apparirebbe molto raramente.
Se la differenza di prezzo tra i prezzi di apertura e di chiusura non supera alcuni tick (variazione minima di prezzo), questo è più che sufficiente.
Gli "Spinning Tops" sono candele corte con un'ombra superiore e/o inferiore più lunga del corpo.
A volte sono indicati come Doji "bianco" e "nero". Koma indica l'indecisione di tori e orsi.
Il colore del corpo del Koma, così come la lunghezza della sua ombra, non è importante. Il piccolo corpo rispetto alle ombre è ciò che fa lo spinning top.
 

"Hanging man" e "Hammer". Queste sono candele con ombre inferiori lunghe e corpi corti. I corpi sono al top della gamma di prezzi.
La proprietà sorprendente di queste candele è che possono essere rialziste e ribassiste a seconda della fase dei trend in cui compaiono.
La comparsa di queste candele in una tendenza al ribasso è un segnale che il suo dominio nel mercato sta volgendo al termine, in questo caso la candela è chiamata "l’hammer".
Se il modello a candele appare durante un trend rialzista, indica la sua possibile fine e ha un nome inquietante: "hanging man".
"Un start" appare ogni volta che appare il corpo piccolo ogni volta che un corpo piccolo si apre o si abbassa dal corpo lungo precedente, il colore del corpo non è importante.
Idealmente, il gap deve catturare anche le ombre, ma non è del tutto necessario. La stella indica una certa incertezza prevalente nel mercato.
Le stelle sono incluse in molti modelli di candele, per lo più invertiti.

Tabella 1. Tipi di Candele

Le candele separate sono estremamente importanti per l'analisi delle combinazioni dei modelli di candele. Quando un analista le usa separatamente, e poi in combinazione con altre candele, si rivela lo stato psicologico del mercato.

2. Identificazione dei tipi base di candele

2.1. Strutture necessarie

I modelli di candele possono consistere in candele separate o in alcuni di esse. Per i modelli di candele, ci sono alcune regole di riconoscimento.

Esempio:Stella della sera (modello ribassista). Il trend al rialzo. La prima e la terza candela sono "lunghe". Le ombre delle stelle sono corte, il colore non ha importanza. Il modello classico: separazione della stella dalla Chiusura della prima candela per forex ed entro il giorno: La Chiusura della prima candela e l'Apertura della stella sono uguali. La terza candela è chiusa all'interno del corpo della prima.

Quindi impariamo prima a riconoscere i tipi di candele. A tal fine, scriviamo una funzione RecognizeCandle che riconoscerà il tipo di candele e restituirà le informazioni necessarie.

//+------------------------------------------------------------------+
//|   Function of candlestick type recognition                       |
//+------------------------------------------------------------------+
bool RecognizeCandle(string symbol,ENUM_TIMEFRAMES period, datetime time,int aver_period,CANDLE_STRUCTURE &res)
dove:
  • simbolo - il nome del simbolo
  • periodo – periodo del grafico,
  • tempo – tempo di apertura del modello di candele,
  • aver_period - periodo di media
  • res - una struttura, in cui viene restituito il risultato.

Definiamo di quali risultati abbiamo bisogno, in base alle regole di riconoscimento dei modelli di candele:

  • aprire, chiudere, alto e basso;
  • tempo aperto del modello di candele;
  • direzione di tendenza;
  • candela rialzista o ribassista;
  • dimensione del corpo della candela – un valore assoluto;
  • tipo di modello a candele (dalla tabella 1).

Creiamo una struttura:

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

dove trend e tipo sono variabili di tipo enumerativo:

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

Consideriamo la funzione RecognizeCandle.

2.2. Riconoscimento del tipo di candela

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

Innanzitutto, utilizzando la funzione CopyRates ottieni i dati dai precedenti modelli di candele aver_period +1. Nota l'ordine in cui i dati sono memorizzati nell'array che otteniamo.

Se i dati sono stati ricevuti senza errori, inizia a compilare la nostra struttura di restituzione CANDLE_STRUCTURE con i dati.

   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;

Definizione di trend. Che cos'è un trend? Se questa domanda avesse avuto una risposta abbastanza completa, i segreti del mercato sarebbero stati svelati. In questo articolo utilizzeremo il metodo per determinare il trend utilizzando una media mobile.

MA=(C1+C2+…+Cn)/N,
dove C – prezzi di chiusura, N – numero di barre.

L. Morris nel suo libro "Candlestick Charticng Explained. Tecniche senza tempo per il Trading di Azioni e future" utilizza una media mobile con un periodo di dieci per identificare una tendenza a breve termine; se il prezzo di chiusura è sopra la media - la tendenza è al rialzo, se inferiore - è al ribasso.

Ecco come appare:

//--- 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;

Successivamente definiamo se la nostra candela è rialzista o ribassista, calcoliamo il valore assoluto del corpo della candela, la dimensione delle ombre, la dimensione media del corpo della candela durante il periodo aver_period e altri dati intermedi necessari.

//--- 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;

Ora ci occupiamo dell'identificazione delle tipologie di candele.

2.3. Regole di identificazione dei tipi di candele

Candele "Lunghe" . Per definire le candele "lunghe", controlla il valore della candela corrente rispetto al valore medio delle candele precedenti aver_period.

(Corpo) > (corpo medio degli ultimi cinque giorni) *1.3

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

Candele "Corte". Per definire le candele "corte", usa lo stesso principio di quelle "lunghe", ma con una condizione modificata.

(Corpo) > (corpo medio degli ultimi X giorni) *0.5

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

Doji. Il Doji si verifica quando i prezzi di apertura e chiusura sono uguali. Questa è una regola molto rigida. Nel caso della maggior parte dei tipi di dati, possiamo tollerare alcune deviazioni nella ricerca dei modelli. La formula permette di trovare la differenza percentuale tra i due prezzi entro limiti accettabili.

(corpo Dodji) < (intervallo dal prezzo più alto a quello più basso) * 0,03

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

"Marubozu" . Questa è una candela senza alti o bassi, o sono molto piccoli

(ombra inferiore) < (corpo) * 0,03 o (ombra superiore) < (corpo) * 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;
     }

Durante la scrittura di un indicatore per questo articolo, è stato necessario separare il "Maribozu" "lungo", per il quale ho dovuto aggiungere la condizione per il controllo delle candele "lunghe".

"Hammer" e"Hanging Man".  Il corpo si trova nella parte superiore dell'intervallo giornaliero e l'ombra inferiore è molto più lunga del corpo. È inoltre necessario considerare la lunghezza dell'ombra superiore, se presente. Il rapporto tra il corpo e l'ombra inferiore è definito come il rapporto tra la lunghezza del corpo e la lunghezza dell'ombra inferiore:

(ombra inferiore)>(corpo)*2 e (ombra superiore)< (corpo)*0.1

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

"Shooting Star" e "Inverted Hammer" sono simili all’"Hammer", ma con la condizione opposta:

(ombra inferiore)<(corpo)*0.1 e (ombra superiore)> (corpo)*2

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

"Spinning Tops". Queste sono candele "corte" con ombre più lunghe del corpo:

(ombra inferiore) > (corpo) e (ombra superiore) > (corpo)

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

Il testo sorgente delle descrizioni della funzione e della struttura sono nel file allegato CandlestickType.mqh. 

Quindi all'articolo è allegato l'indicatore Candlestick Type Color.mq5, che dipinge i candelabri sul grafico a seconda del loro tipo.


Figura 2. Esempio di Candela Tipo Color.mq5

Quindi abbiamo creato una funzione che restituisce tutti i dati necessari.

Ora possiamo procedere creando un indicatore che riconoscerà i modelli di candele.

3. Modelli di Candele e Algoritmi per la Loro Identificazione

Un modello di candele può essere costituito da una singola o da più candele, raramente più di cinque o sei. Nella letteratura giapponese, a volte si riferiscono ai modelli costituiti da un numero maggiore di candele. L'ordine in cui considereremo i modelli non riflette la loro importanza o capacità previsionale. 

I modelli di candele sono divisi in due tipi: modelli di inversione e modelli di continuazione.

Considereremo prima modelli semplici (una candela) e poi complessi (più candele). La figura contenente il modello inizierà con due piccole linee verticali. Queste linee indicano semplicemente la direzione del precedente trend di mercato e non dovrebbero essere utilizzate come indicatore diretto delle relazioni tra i modelli.

I modelli saranno rappresentati in una tabella, nella prima riga - modello rialzista, nella seconda - modello ribassista opposto, se esiste.

3.1. MODELLI DI INVERSIONE DELLE CANDELE

3.1.1. Modelli costituiti da una singola candela

Ottieni dati per una singola candela:

//--- 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 */

e riconosci i modelli.

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Invertito
hammer
(bullish)

Buy

 Trend al ribasso.
L'ombra superiore non è inferiore a 2 e non più di 3 volte più grande del corpo.
Non c'è un'ombra inferiore o molto corta (non più del 10% dell'intervallo della candela).
Il colore del corpo nel gioco lungo non è importante, con il martello corto il bianco è molto più forte di quello nero.
Si suggerisce la conferma.

Hanging Man
(ribassista)

Sell

 Trend al rialzo.
L'ombra inferiore non è inferiore a 2 e non più di 3 volte più grande del corpo.
Non c'è un'ombra superiore o molto corta (non più del 10% dell'intervallo della candela).
Il colore del corpo nel gioco lungo non è importante, con il corto: l’hanging man nero è molto più forte di quello bianco.
Si suggerisce la conferma.

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

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Hammer
(rialzista)

Buy

 Trend al ribasso.
L'ombra inferiore non è inferiore a 2 e non più di 3 volte più grande del corpo.
Non c'è un'ombra superiore o molto corta (non più del 10% dell'intervallo della candela).
Il colore del corpo nel gioco lungo non è importante, con il martello corto il bianco è molto più forte di quello nero.
Si suggerisce la conferma.
Shooting Star
(ribassista)

Sell

 Trend al rialzo.
L'ombra superiore non è inferiore a 3 volte, è più grande del corpo.
Non c'è un'ombra inferiore o molto corta (non più del 10% dell'intervallo della candela).
Il gap del prezzo tra la stella e la candela precedente.
 Forex: il prezzo di chiusura della candela precedente e quello di apertura della stella sono uguali.
Il colore del corpo non ha importanza.
Si suggerisce la conferma.

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

Vorrei attirare la tua attenzione sul fatto che nel caso di "Shooting Star" abbiamo effettivamente bisogno di due candele, perché ai sensi del riconoscimento del corpo del giorno precedente viene preso in considerazione.

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Belt Hold
(rialzista)



Buy

Il modello
non è
implementato
 Trend al ribasso.
Apertura di una candela con un ampio gap nella direzione del trend.
 Candeliere bianco — «marubozu» «lungo».
 Il corpo della candela bianca è molto più grande del corpo della candela precedente.
Si suggerisce la conferma.
Belt Hold
(ribassista)


Sell

Il modello
non è
implementato
 Trend al rialzo.
Apertura di una candela con un ampio gap nella direzione del trend.
Candeliere nero — «marubozu» «lungo».
 Il corpo della candela nera è molto più grande del corpo della candela precedente.
Si suggerisce la conferma.

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

Come nel caso della "Shooting Star", vengono utilizzate due candele, perché il corpo del giorno precedente viene preso in considerazione per il riconoscimento del modello.

3.1.2. Pattern composti da due candele

Aggiungi un'altra candela:

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

e riconosci i modelli:

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Engulfing
(rialzista)

Buy

 Trend al ribasso.
Il corpo della seconda candela copre completamente il corpo della prima.
 Forex: La chiusura della candela nera e l'apertura di quella bianca corrispondono.
Le ombre non contano.
Si suggerisce la conferma.

Engulfing
(ribassista)

Sell

 Trend al rialzo.
Il corpo della seconda candela copre completamente il corpo della prima.
 Forex: La chiusura della candela bianca e l'apertura di quella nera corrispondono.
Le ombre non contano.
Si suggerisce la conferma.

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

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Harami Cross (Toro)

Buy

 Trend al ribasso.
La prima candela del modello è long black.
Doji è all'interno della gamma della prima candela, comprese le sfumature.
 Forex: doji è al livello di Close della prima candela. Se le ombre Doji sono brevi, il modello dovrebbe essere considerato una Doji Star per il forex.
Si suggerisce la conferma.

Harami Cross
(ribassista)

Sell

 Trend al rialzo.
La prima candela del pattern è lunga e bianca.
Doji è all'interno della gamma della prima candela, comprese le sfumature.
 Forex: doji è al livello di Close della prima candela. Se le ombre Doji sono brevi, il modello dovrebbe essere considerato una Doji Star per il forex.
Si suggerisce la conferma.

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

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Harami
(rialzista)

Buy

 Trend al ribasso.
 Il corpo della prima candela "lunga" ingloba completamente il corpo della seconda.
Le ombre non contano.
Forex: Chiusura della candela nera e Open del white match.
Si suggerisce la conferma.

Harami
(ribassista)

Sell

 Trend al rialzo.
 Il corpo della prima candela "lunga" ingloba completamente il corpo della seconda.
Le ombre non contano.
Forex: Chiusura delle bianco e apertura del fiammifero nero.
Si suggerisce la conferma.

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

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Doji Star
(rialzista)

Buy

 Trend al ribasso.
 La prima candela del modello è long black.
 La seconda sessione - doji con una pausa nella direzione del trend.
Forex: nessuna pausa.
Le ombre di doji sono brevi.
Si suggerisce la conferma.

Doji Star
(ribassista)

Sell

 Trend al rialzo.
La prima candela del pattern è lunga e bianca.
 La seconda sessione - doji con una pausa nella direzione del trend.
Forex: nessuna pausa.
Le ombre di doji sono brevi.
Si suggerisce la conferma.

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

              }
           }
        }

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Modello Piercing
(rialzista)

Buy

 Trend al ribasso.
 Entrambi i candelieri sono lunghi.
L'apertura della candela bianca è inferiore al minimo del nero.
 Forex: La Chiusura della candela nera e l'Apertura del bianco sono uguali.
La candela bianca è chiusa all'interno di quella nera e copre più del 50% del corpo. (Per i mercati azionari: a differenza della copertura nuvolosa, questo requisito non ha eccezioni.)
La conferma non è richiesta per il modello classico, è richiesta, invece, per Forex.
Copertura di nuvole scure (Bear)

Sell

 Trend al rialzo.
 Entrambi le candele sono lunghe.
 L'apertura della candela nera è sopra l'altezza della candela bianca.
 Forex: La chiusura della candela bianca e l'apertura della nera sono uguali.
La candela nera si chiude all'interno del bianco e copre più del 50% del corpo.
La conferma non è richiesta per il modello classico, è richiesta, invece, per 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);
                     
                    }
                 }
              }

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Linee di Incontro
(rialzista)

Buy

Il modello
non è
implementato
 Trend al ribasso.
 La prima candela del modello è long black.
 L'apertura della candela bianca si presenta con un ampio gap ed è al di sotto del minimo della candela nera.
 I prezzi di chiusura di entrambe le candele sono gli stessi.
 Il corpo della candela bianca è più grande del corpo della candela nera.
Si suggerisce la conferma.
Linee di Incontro
(ribassista)

Sell

Il modello
non è
implementato
 Trend al rialzo.
La prima candela del pattern è lunga e bianca.
 L'apertura della candela nera si presenta con un ampio gap ed è al di sopra del massimo della candela bianca.
 I prezzi di chiusura di entrambe le candele sono gli stessi.
 Il corpo della candela nera è più grande del corpo della candela bianca.
Si suggerisce la conferma.

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

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Corrispondenza Bassa
(rialzista)

Buy

Il modello
non è
implementato
 Trend al ribasso.
 La prima candela del pattern non deve essere necessariamente lunga.
 L'apertura della seconda candela è all'interno del corpo della prima.
I prezzi di chiusura di entrambi i prezzi sono gli stessi.
non ci sono ombre inferiori o sono molto corte.
Si suggerisce la conferma.

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

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Piccione viaggiatore<br1(rialzista)
Piccione viaggiatore rialzista

Buy

Il modello
non è
implementato
 Trend al ribasso.
 La prima candela del pattern non deve essere necessariamente lunga.
 L'apertura della seconda candela è all'interno del corpo della prima.
I prezzi di chiusura di entrambi i prezzi sono gli stessi.
non ci sono ombre inferiori o sono molto corte.
Si suggerisce la conferma.

      //------      
      // 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. Pattern composti da tre candele

/* Checking patterns with three candlesticks */
      CANDLE_STRUCTURE cand3;
      cand3=cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-2],InpPeriodSMA,cand1))
         continue;
Nome del Modello  Ordine  Modello classico Forex Riconoscimento del modello
Abandoned Baby
(rialzista)

 

Buy

Il modello
non è
implementato

 Questo è un modello di inversione raro ma importante.
Trend al ribasso.
 La prima candela del modello è long black.
 La seconda candela è doji con un gap che non si trova solo tra i corpi della candela, ma anche tra le ombre.
La terza candela è una candela bianca "lunga" con lo stesso gap tra le ombre e la Chiusura all'interno del corpo della prima candela.

  Abandoned Baby
(ribassista)

 

Sell

  Il modello
non è
implementato

 Questo è un modello di inversione raro ma importante.
Trend al rialzo.
 La prima candela del pattern è lunga e bianca.
 La seconda candela è doji con un gap che non si trova solo tra i corpi della candela, ma anche tra le ombre.
La terza candela è una candela nera "lunga" con lo stesso gap tra le ombre e la Chiusura all'interno del corpo della prima candela.

      //------      
      // 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);
              }
           }
        }
Nome del Modello  Ordine Modello classico Forex Riconoscimento del modello
Stella del mattino
(rialzista)

Buy


 Trend al ribasso.
 La prima e la terza sessione sono candele "lunghe".
Le ombre delle stelle sono corte, il colore non ha importanza.
Separazione della stella dalla Chiusura della prima candela.
Forex: La Chiusura della prima candela e l'Apertura della stella sono uguali.
La terza candela è chiusa all'interno del corpo della prima.
 Stella della Sera
(ribassista
)

 

Sell

 

 

 Trend al rialzo.
 La prima e la terza sessione sono candele "lunghe".
Le ombre delle stelle sono corte, il colore non ha importanza.
Separazione della stella dalla Chiusura della prima candela.
Forex: La Chiusura della prima candela e l'Apertura della stella sono uguali.
La terza candela è chiusa all'interno del corpo della prima.
      // 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);
              }
           }
        }
Nome del Modello  Ordine Modello classico Forex Riconoscimento del modello
Stella del Mattino Doji
(rialzista)

Buy



 Trend al ribasso.
 La prima candela del modello è long black.
 La seconda sessione - doji con una pausa nella direzione del trend.
Forex: nessuna pausa.
Le ombre di doji sono brevi.
La terza candela è chiusa all'interno del corpo della prima.
Stella della Sera Doji
(ribassista)

Sell



 Trend al rialzo.
La prima candela del pattern è lunga e bianca.
 La seconda sessione - doji con una pausa nella direzione del trend.
Forex: nessuna pausa.
Le ombre di doji sono brevi.
Si suggerisce la conferma.
      //------      
      // 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);
              }
           }
        }
Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Gap Ribassista al Rialzo Due Corvi

Sell


Il modello
non è
implementato
 Trend al rialzo.
La prima candela è bianca "lunga".
Il gap tra candele bianche e nere.
La terza candela si apre più in alto della seconda e la ingloba.
Si suggerisce la conferma.
 Il significato del modello: se i prezzi non possono salire durante la 4a sessione, dovremmo aspettarci che i prezzi diminuiscano.
Due Corvi
(ribassista)

Sell


Il modello
non è
implementato
 Trend al rialzo.
La prima candela del pattern è lunga e bianca.
Il gap tra il bianco e la prima candela nera.
La terza candela è nera e necessariamente "lunga"; si apre all'interno o al di sopra della seconda e si chiude all'interno o al di sotto della candela bianca, coprendo il gap.
Si suggerisce la conferma.
Se il secondo corvo (la terza candela) ingloba una candela bianca, la conferma non è richiesta.
      //------      
      // 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);
           }
        }

Nome del Modello  Ordine Modello classico Forex Riconoscimento del modello
Tre Stelle al Sud
(rialzista)

Buy



 Trend al ribasso.
La prima candela è una lunga giornata nera con una lunga ombra inferiore.
La seconda candela è più corta della prima, il suo minimo è al di sopra del minimo della prima candela.
La terza candela è un piccolo marubozu nero o una stella, un giorno interno rispetto alla seconda sessione.
Si suggerisce la conferma.
Deliberation
(ribassista)

Sell



 Trend al rialzo.
Tre candele bianche con prezzi di chiusura più alti. Le prime due candele sono giorni lunghi.
Il prezzo di apertura di ogni candela è all'interno del corpo della precedente.
 Forex: i prezzi di apertura/chiusura delle candele bianche sono gli stessi.
 La terza candela si apre circa al livello di chiusura della seconda candela.
 la terza candela è una stella o uno spinning top.
Si suggerisce la conferma.

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

Nome del Modello  Ordine Modello classico Forex Riconoscimento del modello
Tre Soldati Bianchi
(rialzista)

Buy



 Trend al ribasso.
 Tre lunghe candele bianche compaiono una dopo l'altra, il prezzo di chiusura di ciascuna di esse è superiore a quello della precedente.
 Il prezzo di apertura di ogni soldato è all'interno del corpo della candela precedente.
 Forex: La chiusura/apertura dei soldati è la stessa.
 Le ombre superiori dei soldati sono corte.
La conferma non è richiesta.
Tre Corvi Neri
(ribassista)

Sell


Il modello
non è
implementato
 Trend al rialzo.
 Tre lunghe candele nere appaiono una dopo l'altra, il prezzo di chiusura di ciascuna di esse è inferiore a quello della precedente.
 Il prezzo di apertura di ogni corvo è all'interno del corpo della candela precedente.
 Forex: corrisponde al modello tre corvi Identici.
 Le ombre inferiori dei corvi sono corte.
La conferma non è richiesta.

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

Nome del Modello  Ordine Modello classico Forex Riconoscimento del modello
Tre Fuori Su
(rialzista)

Buy



 Trend al ribasso.
 Per prima cosa si forma il pattern di Engulfing (toro): il corpo della seconda candela copre completamente il corpo della prima.
 Forex: La chiusura di una candela nera e l'apertura di quella bianca sono uguali.
Le ombre non contano.
 Poi, il terzo giorno c'è una chiusura più alta.
La conferma non è richiesta: lo schema stesso è una conferma per il toro Engulfing
Tre Fuori Giù
(ribassista)

Sell



 Trend al rialzo.
 Per prima cosa si forma il pattern di Engulfing (orso): il corpo della seconda candela copre completamente il corpo della prima.
 Forex: La Chiusura della candela bianca e l’Apertura del primo fiammifero nero.
Le ombre non contano.
 Poi, il terzo giorno c'è una chiusura più bassa.
La conferma non è richiesta: lo schema stesso è una conferma per l'orso Engulfing

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

Nome del Modello  Ordine Modello classico Forex Riconoscimento del modello
Tre Dentro Su
(rialzista)

Buy



 Trend al ribasso.
 Nelle prime due sedute si forma il pattern Harami (toro): un piccolo corpo bianco viene inglobato da un grande corpo nero.
 La chiusura della terza sessione è superiore al massimo delle prime due candele.
La conferma non è richiesta: il modello stesso è una conferma per il toro Harami.
Tre Dentro Giù
(ribassista)

Sell



 Trend al rialzo.
 Nelle prime due sedute si forma il pattern Harami (orso): un piccolo corpo nero viene inglobato da un grande corpo bianco.
 La chiusura della terza sessione è inferiore al minimo delle prime due candele.
La conferma non è richiesta: il modello stesso è una conferma per l'orso Harami.

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

Nome del Modello  Ordine Modello classico Forex Riconoscimento del modello
Tre Stelle
(rialzista)

Buy



 Trend al ribasso.
Il gap tra la prima doji e le candele precedenti non è richiesto.
 Tutti e tre i candelieri sono doji.
 Il doji centrale ha un gap in alto o in basso.
 Forex: tutte e tre le doji sono su un unico livello.
Si suggerisce la conferma.
Tre Stelle
(ribassista)

Sell



 Trend al rialzo.
Il gap tra la prima doji e le candele precedenti non è richiesto.
 Tutti e tre i candelieri sono doji.
 Il doji centrale ha un gap in alto o in basso.
 Forex: tutte e tre le doji sono su un unico livello.
Si suggerisce la conferma.

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

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Tre Corvi Identici
(ribassista)

Sell



 Trend al rialzo.
 Tre lunghe candele nere appaiono una dopo l'altra, il prezzo di chiusura di ciascuna di esse è inferiore a quello della precedente.
 Il prezzo di apertura di ogni corvo è approssimativamente uguale alla chiusura della candela precedente.
 Le ombre inferiori dei corvi sono corte.
La conferma non è richiesta.

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

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Unique Three River Bottom
(rialzista)

Buy


Il modello
non è
implementato
 Trend al ribasso.
 La prima candela del modello è lunga nera con ombre corte.
 Il secondo giorno appare Harami, ma con un corpo nero.
 L'ombra inferiore del secondo giorno dà un nuovo minimo.
Il terzo giorno è un breve giorno bianco inferiore al giorno centrale.
La conferma non è necessaria ma preferibile.

      // 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. Pattern composti da quattro candele

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

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Concealing Baby Swallow (toro)


Buy

Il modello
non è
implementato
 Trend al ribasso.
 Le prime due sessioni sono due marubozu neri.
 La terza sessione si apre con un break down, ma le operazioni vengono effettuate all'interno del corpo della seconda candela, il che porta alla formazione di una lunga upper shadow.
 La quarta candela nera ingloba completamente la terza, inclusa l'ombra.
La conferma non è richiesta.

      //------      
      // 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. Pattern composti da due candele

/* 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

Nome del Modello  Ordine Modello classico Forex Riconoscimento del modello
Breakaway
(rialzista)

Buy

Il modello
non è
implementato
 Trend al ribasso.
 Le prime due sessioni: una candela nera "lunga" e una candela nera "corta" (stella) con un gap vuoto.
 La terza sessione è "breve", può essere di qualsiasi colore.
 La quarta candela è "Corta" nera.
 Il quinto è bianco "lungo" con Close all'interno del gap.
Si suggerisce la conferma.
Breakaway
(ribassista)

Sell

Il modello
non è
implementato
 Trend al rialzo.
 Le prime due sessioni: una candela bianca "lunga" e una candela bianca "corta" (stella) con uno spazio vuoto.
 La terza sessione è una candela "corta", può essere di qualsiasi colore.
Il quarto giorno è bianca "corta".
 Il quinto è "lunga" nera con Chiusura all'interno del gap.
Si suggerisce la conferma.

      //------      
      // 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. MODELLI DI CONTINUAZIONE

I modelli di continuazione sono il momento in cui il mercato è a riposo.

Qualunque sia il modello, devi prendere una decisione sulla tua posizione attuale, anche se non deve cambiare nulla.

3.2.1. Pattern costituiti da una singola candela

Nome del Modello  Ordine Modello classico Forex Riconoscimento del modello
Kicking
(rialzista)

Buy

Il modello
non è
implementato
 Il "marubozu" nero è seguito dal "marubozu" bianco.
 C'è un gap tra i corpi.
La conferma non è richiesta.
Kicking
(ribassista)

Sell

Il modello
non è
implementato
 Il "marubozu" bianco è seguito dal "marubozu" nero.
 C'è un gap tra i corpi.
La conferma non è richiesta.

      //------      
      // 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. Pattern composti da due candele

Nome del Modello  Ordine Modello classico Forex Riconoscimento del modello
 Ribassista sulla Linea del Collo

 

Sell

   Il modello
non è
implementato
 Trend al ribasso.
La prima candela del modello è long black.
 La candela bianca chiude al di sotto del minimo di quella nera e chiude circa al minimo della candela nera.
 La candela bianca - non necessariamente una lunga giornata.
Si suggerisce la conferma.
Nella Linea del Collo
(ribassista)

Sell

Il modello
non è
implementato
 Trend al ribasso.
La prima candela del modello è long black.
 La candela bianca si apre al di sotto del minimo della candela nera e chiude un po' più in alto della Chiusura della candela nera.
 La candela bianca - non necessariamente una lunga giornata.
 Il corpo della candela bianca è più piccolo del corpo di quella nera.
 L'ombra superiore della candela bianca è molto piccola.
Si suggerisce la conferma.
Linea di spinta
(ribassista)

Sell


Il modello
non è
implementato
 Trend al ribasso.
La prima candela del modello è long black.
 La candela bianca si apre al di sotto del minimo di quella nera e chiude al di sopra della Chiusura della candela nera, ma il prezzo di chiusura è ancora al di sotto della metà di quest’ultima.
 La candela bianca - non necessariamente una lunga giornata.
Si suggerisce la conferma.

Questi tre modelli hanno molto in comune, quindi la loro implementazione è leggermente diversa, per favore presta attenzione.

      //------ 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. Modello composti da tre candele

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Gap al Rialzo Tre metodi
(rialzista)


Buy


Il modello
non è
implementato
 Trend al rialzo.
 Le prime due candele sono due candele bianche "lunghe" con un gap vuoto.
 La terza candela si apre all'interno del corpo della seconda e riempie il gap.
Si suggerisce la conferma.
Gap al Rialzo Tre metodi
(ribassista)


Sell


Il modello
non è
implementato
 Trend al ribasso.
 Le prime due candele sono nere "lunghe" con un gap vuoto.
 La terza candela si apre all'interno del corpo della seconda e riempie il gap.
Si suggerisce la conferma.

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

Nome del Modello Ordine Modello classico Forex Riconoscimento del modello
Gap Tasuki al rialzo
(rialzista)


Buy


<
Il modello
non è
implementato
 Trend al rialzo.
Il gap tra due candele bianche vicine. Le candele bianche non sono necessariamente "lunghe".
La terza sessione si apre all'interno del corpo della seconda candela.
La terza sessione si chiude all'interno del gap, ma il gap è parzialmente colmato.
Si suggerisce la conferma.
Rovescio della Medaglia Tasuki Gap
(ribassista)


Sell

Il modello
non è
implementato
 Trend al ribasso.
Il gap tra due candele nere vicine. Le candele nere non sono necessariamente "lunghe".
La terza sessione si apre all'interno del corpo della seconda candela.
La terza sessione si chiude all'interno del gap, ma il gap è parzialmente colmato.
Si suggerisce la conferma.

      //------      
      // 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. Pattern composti da quattro candelieri

Nome del Modello Ordine Modello classico Forex Riconoscimento del pattern
Colpo a tre linee
(rialzista)

Buy

 Continua il trend rialzista con tre candele, simile al pattern Tre soldati bianchi: lunghe candele bianche con ombre corte.
 Forex: I prezzi di apertura/chiusura delle candele bianche sono gli stessi.
 La quarta candela si apre con un gap up e si chiude sotto l'apertura della prima candela bianca.
 Forex: la chiusura della 3° e l'apertura della 4° candela sono uguali.
Si suggerisce la conferma.
Strike su Tre Linee (ribassista)

Sell

 Continua il trend ribassista con tre candele, simile al pattern Three black crows: lunghe candele nere con ombre corte.
 Forex: I prezzi di apertura/chiusura delle candele nere sono gli stessi (simili ai tre corvi identici).
 La quarta candela si apre con un gap verso il basso e si chiude sopra l'apertura della prima candela nera.
 Forex: la chiusura della 3° e l'apertura della 4° candela sono uguali.
Si suggerisce la conferma.

      //------      
      // 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. L'implementazione dell'indicatore

Selezioniamo i parametri di input richiesti.

Parametri di input dell'indicatore Modelli di Candele

Figura 3. Parametri di input dell'indicatore Modelli di Candele

Il primo parametro è il "periodo medio" - ne abbiamo bisogno per determinare la direzione del trend, definendo le candele "lunghe" e "corte".

Il parametro successivo è "Abilita segnale" - responsabile dell'abilitazione/disabilitazione del segnale. Il segnale notifica che è apparso un nuovo modello.

Segnali generati dall'indicatore Modelli di Candele

Figura 4. Segnali generati dall'indicatore Modelli di Candele

Il parametro "Numero di barre per il calcolo" è progettato per facilitare il lavoro dell'indicatore. Se il suo valore è minore o uguale a 0 i modelli di candele vengono cercati attraverso l'intera cronologia disponibile, altrimenti viene utilizzato per la ricerca un determinato numero di barre che facilita notevolmente il lavoro dell'indicatore.

Penso che tutto sia chiaro con i colori...

"Abilita commenti" significa abilitare/disabilitare i nomi dei modelli di candele.

"Dimensione carattere" imposta la dimensione del carattere per i commenti.

L'implementazione dell'indicatore è molto semplice.

Aspettati la comparsa di una nuova barra:

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

Quindi calcoliamo il valore iniziale del contatore per avviare il ciclo.

   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;

Nel ciclo controlliamo le combinazioni di candele e le visualizziamo come mostrato in Fig. 5:

  • Combinazione con una candela: una freccia con il nome del modello sopra o sotto.
  • Combinazione con due candele: un rettangolo sottile con il nome del pattern sopra o sotto la prima candela.
  • Combinazione con tre o più candele: un rettangolo spesso con il nome del modello sopra o sotto l'ultima candela.

Esempio di come funziona l'indicatore Modelli di Candele

Figura 5. Esempio di come funziona l'indicatore Modelli di Candele

Si noti che a causa della possibilità di sovraccarico delle funzioni, l'output di segni di modelli diversi viene eseguito tramite le funzioni con lo stesso nome DrawSignal(), ma con numeri di parametri diversi.

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)

Il testo completo dell'indicatore si trova nel file Candlestick_Patterns.mq5 allegato a questo articolo.

Conclusione

In questo articolo abbiamo esaminato la maggior parte dei modelli di candele, i metodi per rilevarli e fornito esempi su come implementarli nel linguaggio di programmazione MQL5. L'allegato all'articolo contiene due indicatori e un file di inclusione. Per usarli, posiziona gli indicatori nella cartella \Indicators e includi il file nella cartella \Include, quindi compilali.

Spero che l'analisi dei modelli di candele ti aiuti a migliorare i risultati del tuo lavoro.

Guardando al futuro, vorrei aggiungere che le candele filtrate danno risultati migliori rispetto alla maggior parte degli indicatori tecnici, ma parleremo di questo argomento nel seguente articolo, in cui creerò un sistema di trading e un Expert Advisor di trading da parte dei modelli di candele.

Tradotto dal russo da MetaQuotes Ltd.
Articolo originale: https://www.mql5.com/ru/articles/101

Creazione di un Expert Advisor, che fa Trading su una Serie di Strumenti Creazione di un Expert Advisor, che fa Trading su una Serie di Strumenti
Il concetto di diversificazione delle attività sui mercati finanziari è tranquillo e ha sempre attratto i trader principianti. In questo articolo, l'autore propone un approccio estremamente semplice alla costruzione di un Expert Advisor multi-valuta, per una prima introduzione a questa direzione delle strategie di trading.
Guida alla scrittura di una DLL per MQL5 in Delphi Guida alla scrittura di una DLL per MQL5 in Delphi
L'articolo descrive il meccanismo per creare un modulo DLL, utilizzando il popolare linguaggio di programmazione ObjectPascal, all'interno di un ambiente di programmazione Delphi. I materiali, forniti in questo articolo, sono progettati principalmente per i programmatori principianti che stanno affrontando dei problemi, che violano i confini del linguaggio di programmazione integrato di MQL5, collegando i moduli DLL esterni.
Test delle Prestazioni del Calcolo delle Medie Mobili in MQL5 Test delle Prestazioni del Calcolo delle Medie Mobili in MQL5
Dal momento della creazione del primo indicatore della media mobile, sono comparsi numerosi indicatori. Molti di loro utilizzano metodi di smoothing simili, ma non sono state studiate le prestazioni di diversi algoritmi di medie mobili. In questo articolo, prenderemo in considerazione i possibili modi d’utilizzo delle medie mobili in MQL5 e confronteremo le loro prestazioni.
Un Esempio di un Sistema di Trading Basato su un Indicatore Heiken-Ashi Un Esempio di un Sistema di Trading Basato su un Indicatore Heiken-Ashi
In questo articolo esaminiamo la questione dell'utilizzo di un indicatore Heiken-Ashi nel trading. Sulla base di questo indicatore, viene considerato un semplice sistema di trading e viene scritto un Expert Advisor MQL5. Le operazioni di trading sono implementate sulla base delle classi della libreria di classi Standard. I risultati dello Strategy Tester di trading recensito, si basano sulla cronologia e sono ottenuti utilizzando lo Strategy Tester MetaTrader 5 integrato, sono forniti nell'articolo.