下载MetaTrader 5

分析烛的图案

15 十一月 2013, 08:52
Dmitry Voronkov
1
1 869

“温故而知新”

简介

描绘烛形图和分析烛图案是技术分析的一个迷人领域。烛形图的优点在于它们以能够查看数据动态的方式表示数据。

烛形图提供了关于交易的生动的心理学画面。在阅读和经过一段时间的实践之后,烛形图将成为您的主要分析工具的一部分。日本烛形图可以帮助您“洞察”金融市场,而这是其他图形方法难以做到的。它们同样适用于所有市场。

1. 烛的类型

传奇日本人 Munehisa Homma 是首先开始依据过去的价格预测将来的价格走势的分析家之一。Homma 在米市交易中采用的交易原则是日本烛形图技术的起源,现在已经在日本和世界各地广泛采用。

烛的结构

图 1. 烛的结构

考虑一下烛的结构(图 1)。表示开盘价与收盘价差异的矩形被称为烛的主体。主体的高度表示交易期内开盘价和收盘价之间的范围。当收盘价高于开盘价时,烛的主体是白色的(图 1 a)。如果主体是黑色(图 1 b),则表示收盘价低于开盘价。

烛可以有影线 - 上影线和下影线,影线的长度取决于开盘价/收盘价和最低价/最高价之间的距离。

烛逐根描绘在图表上,构成各种图案。依据理论,某些图案指出趋势正在改变的某种可能性,或者确认趋势,或者显示市场方向不明确。

作为一条原则,长烛主体表示买家或卖家(视烛的颜色而定)有压力。短主体表示牛熊之间的角力较弱。

 烛 说明
 

“长烛”。到长烛的链接在有关日本烛形图的文献中普遍存在。
术语“长”指烛的长度,是开盘价和收盘价之间的差异。
最好考虑最新的价格走势来确定什么是长,什么不是长。
前五天或前十天 - 这是很长并且足以得出正确结论的时间。
 

 “短烛”。短烛的确定可依据确定长烛的相同方法,具有类似的结果。
此外,有很多烛并不属于这两类。
“无影烛”。在日语中,"Marubozu(无影烛)" 指光头。
在任何情形下,该术语的含义反应了烛的主体没有上影线和/或下影线,或者影线非常短的事实。

黑色无影烛 - 没有上影线或下影线的长黑色主体。它经常是熊势持续图案或牛势反转图案的一部分,尤其出现在下降趋势中。长的黑色烛表示熊的重大胜利,因此通常出现在很多牛势特征的反转图案中的第一天。

白色无影烛 - 没有上影线或下影线的长白色主体。这是非常强的烛。与黑色无影烛相反,它是牛势持续图案或熊势反转图案的一部分。
“十字星”。如果烛的主体是如此之短,开盘价和收盘价是相同的,则称为“十字星”。
要求开盘价和收盘价必须完全相同,对数据带来严格限制,因此十字星非常罕见。
如果开盘价和收盘价之间的价格差异不超过几个价格变动(最小价格变动),则已经足够了。
“陀螺”是上影线和/或下影线长于主体的短烛。
有时它们被称为“白色”和“黑色”十字星。K 线图指出牛熊犹豫不决。
K 线图主体的颜色以及其影线的长短并不重要。相对于影线较短的主体是使其像陀螺的原因之所在。
 

“上吊”或“锤线”。这些是下影线长、主体短的烛。主体在价格范围的顶部。
这些烛令人吃惊的属性是它们能够表示牛势和熊势,而这又取决于它们所在的趋势阶段。
下降趋势中出现这些烛是牛熊在市场中的统计即将结束的信号,在这种情况下,此烛被称为“锤线”。
如果烛出现在上升趋势中,则表示上升趋势可能结束,烛有一个不吉利的名称 - “上吊”。
“星形线”在每次出现短主体从上一长主体向上或向下跳空开盘时出现,主体颜色并不重要。
理想情况下,缺口必须与影线一致,但这并不是必须的。星形线表示不确定性在市场中占优势。
星形线包含在很多烛图案中,大多数是反转图案。

 表 1. 烛的类型

单独的烛对烛组合的分析至关重要。当一名分析师单独使用它们,然后将它们与其他烛组合在一起时,市场的心理学状态便呈现出来。

2. 识别烛的基本类型

2.1. 必要的结构

烛图案可以是单独的烛,也可以包含若干烛。对于烛图案,有几条识别原则。

示例:黄昏之星(熊势图案)。上升趋势。第一根和第三根烛是“长”的。星的影线短,颜色并不重要。经典图案:对于 Forex,星与第一根烛的收盘价不相同,且在第一根烛的范围内:第一根烛的收盘价和星的开盘价相等。第三根烛收在第一根烛的主体内。

因此,首先让我们学习识别烛的类型。为此,我们编写了函数 RecognizeCandle,该函数将识别烛的类型并返回必要的信息。

//+------------------------------------------------------------------+
//|   烛形类型识别函数                                                 |
//+------------------------------------------------------------------+
bool RecognizeCandle(string symbol,ENUM_TIMEFRAMES period, datetime time,int aver_period,CANDLE_STRUCTURE &res)
其中:
  • symbol - 交易品种的名称
  • period – 图表周期
  • time – 烛的开盘时间
  • aver_period - 取平均值的周期
  • res - 在其中返回结果的一个结构

让我们依据烛图案的识别原则定义需要的结果:

  • 开盘价、收盘价、最高价和最低价;
  • 烛的开盘时间;
  • 趋势方向;
  • 牛烛或熊烛;
  • 烛主体的长度 – 一个绝对值;
  • 烛的类型(依据表 1)。

让我们创建一个结构:

//+------------------------------------------------------------------+
//| CANDLE_STRUCTURE  结构                                            |
//+------------------------------------------------------------------+
struct CANDLE_STRUCTURE
  {
   double            open,high,low,close; // OHLC
   datetime          time;     //时间
   TYPE_TREND       trend;    //趋势
   bool              bull;     //是否为牛市烛形
   double            bodysize; //主体高度
   TYPE_CANDLESTICK  type;    //烛形类型
  };

其中 trend 和 type 是枚举类型的变量:

//+------------------------------------------------------------------+
//|   TYPE_CANDLESTICK 枚举                                           |
//+------------------------------------------------------------------+
enum TYPE_CANDLESTICK
  {
   CAND_NONE,          //未识别
   CAND_MARIBOZU,       //无影烛
   CAND_MARIBOZU_LONG, //长无影烛
   CAND_DOJI,           //十字星
   CAND_SPIN_TOP,       //陀螺
   CAND_HAMMER,         //锤线
   CAND_INVERT_HAMMER, //反转锤线
   CAND_LONG,           //长烛
   CAND_SHORT,          //短烛
   CAND_STAR            //星形线
  };
//+------------------------------------------------------------------+
//|   TYPE_TREND                                                     |
//+------------------------------------------------------------------+
enum TYPE_TREND
  {
   UPPER,   //向上
   DOWN,    //向下
   LATERAL  //横向
  }; 

让我们考虑 RecognizeCandle 函数。

2.2. 烛类型的识别

//+------------------------------------------------------------------+
//| 烛形类型识别函数                                                   |
//+------------------------------------------------------------------+
bool RecognizeCandle(string symbol,ENUM_TIMEFRAMES period, datetime time,int aver_period,CANDLE_STRUCTURE &res)
  {
   MqlRates rt[];
//--- 读取前面烛形的数据
   if(CopyRates(symbol,period,time,aver_period+1,rt)<aver_period)
     {
      return(false);
     }

首先,使用 CopyRates 函数从以前的 aver_period +1 根烛获取数据。注意数据存储在我们获得的数组中的顺序。

如果成功获得数据,则开始用数据填充我们的返回结构 CANDLE_STRUCTURE。

   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;

定义趋势。什么是趋势?如果此问题具有相当完整的答案,则市场的秘密就已经被泄漏了。在本文中,我们将使用通过移动平均线来确定趋势的方法。

MA=(C1+C2+…+Cn)/N,
其中,C – 收盘价,N – 柱的数量。

L. Morris 在其 "Candlestick Charticng Explained.Timeless techniques for Trading Stocks and Futures" (烛形图精解:股票和期货交易的永恒技术)一书中使用周期为十的移动平均线来识别短期趋势:如果收盘价高于平均价,则趋势向上;如果收盘价低于平均价,则趋势向下。

它看起来如下所示:

//--- 定义趋势方向
   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;

接下来,我们定义我们的烛是牛势还是熊势,我们计算烛主体的绝对值、影线的大小、aver_period 周期内烛的平均主体长度以及其他必须的直接数据。

//--- 定义它是牛势还是熊势
   res.bull=res.open<res.close;
//--- 取得烛形主体高度的绝对值
   res.bodysize=MathAbs(res.open-res.close);
//--- 取得影线高度
   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;
//--- 计算前面烛形的平均主体高度
   double sum=0;
   for(int i=1; i<=aver_period; i++)
      sum=sum+MathAbs(rt[i].open-rt[i].close);
   sum=sum/aver_period;

现在,让我们处理烛类型的识别。

2.3. 烛类型的识别原则

“长”烛。要定义“长”烛,检查当前烛相对于先前 aver_period 根烛的平均值的值。

(主体) > (最后五天的主体平均值) *1.3

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

“短”烛。要定义“短”烛,使用与定义“长”烛相同的原则,但是条件有变。

(主体) > (最后 X 天的主体平均值) *0.5

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

十字星。十字星在开盘价和收盘价相等时出现。这是非常严格的原则。对于大多数类型的数据,在寻找图案时我们可以容忍一定的偏差。公式允许寻找两个价格之间在可接受的限制内的百分比差异。

(十字星主体)< (最高价与最低价之间的范围) * 0.03

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

“无影烛”。这是没有上影线或下影线,或者影线非常短的烛

(下影线) < (主体) * 0.03 或 (上影线) < (主体) * 0.03

//--- 无影烛
   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;
     }

在为本文编写指标时,必须区分“长”无影烛,为此我不得不添加了检查“长”烛的条件。

“锤线”“上吊”。主体位于每日范围的上部,并且下影线比主体长很多。如果有的话,也必须考虑上影线的长度。主体和下影线之间的比例定义为主体长度和下影线长度之比:

(下影线)>(主体)*2 且 (上影线)< (主体)*0.1

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

“射击之星”“反转锤线”类似于“锤线”,但是具有相反的条件:

(下影线)<(主体)*0.1 和(上影线)> (主体)*2

//--- 反转锤线
   if(shade_low<res.bodysize*0.1 && shade_high>res.bodysize*2) res.type=CAND_INVERT_HAMMER;

“陀螺”。这些是影线比主体长的“短”烛:

(下影线) > (主体) 且 (上影线) > (主体)

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

附带的文件 CandlestickType.mqh 包含了函数的原文和结构说明。

本文还附带了 Candlestick Type Color.mq5 指标,该指标依据烛的类型在图表上绘制烛。

 图 2. Candlestick Type Color.mq5 的例子

这样,我们创建了一个返回所有必要数据的函数。

现在,我们可以继续创建识别烛图案的指标。

3. 烛图案及其识别算法

烛图案即可以由一根烛构成,也可以由几根烛构成,但很少超过五根或六根。在日语文献中,它们有时候指包含大量烛的图案。我们考虑图案的顺序并不反应它们的重要性或预测能力。

烛图案分为两种类型 - 反转图案持续图案

我们将首先考虑简单图案(一根烛),然后考虑复杂图案(几根烛)。包含图案的图形由两条小的垂直线开始。这些线仅指出先前的市场趋势的方向,不应用作图案之间的关系的直接指示。

用一张表来表示这些图案,第一行为牛势图案,第二行为相反的熊势图案,如果有的话。

3.1. 烛的反转图案

3.1.1. 由一根烛组成的图案

获取一根烛的数据:

//--- 烛形图案计算
   for(int i=limit;i<rates_total-1;i++)
     {
      CANDLE_STRUCTURE cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i],InpPeriodSMA,cand1))
         continue;
/* 检查一个烛形的图案 */

并识别图案。

图案名称 订单 经典图案 Forex 图案识别
反转
锤线
(牛势)

买入

 下降趋势。
上影线不短于主体的 2 倍,并且不超过主体的 3 倍。
没有下影线,或者下影线非常短(不超过烛范围的 10%)。
长仓中主体的颜色并不重要,对于短仓,白色锤线比黑色锤线强得多。
建议进行确认。

上吊
(熊势)

 上升趋势。
下影线不短于主体的 2 倍,并且不超过主体的 3 倍。
没有上影线,或者上影线非常短(不超过烛范围的 10%)。
长仓中主体的颜色并不重要,对于短仓,黑色上吊线比白色上吊线强得多。
建议进行确认。
      //------      
      // 反转锤线牛势模型 
      if(cand1.trend==DOWN && // 检查趋势方向
         cand1.type==CAND_INVERT_HAMMER) // 检查反转锤线
        {
         comment=_language?"反转锤线";
         DrawSignal(prefix+"反转锤线牛势模型"+string(objcount++),cand1,InpColorBull,comment);
        }
      // 上吊熊势模型 
      if(cand1.trend==UPPER && // 检查趋势方向
         cand1.type==CAND_HAMMER) // 检查 "锤线"
        {
         comment=_language?"上吊";
         DrawSignal(prefix+"上吊熊势模型"+string(objcount++),cand1,InpColorBear,comment);
        }

图案名称 订单 经典图案 Forex 图案识别
锤线
(牛势)

买入

 下降趋势。
下影线不短于主体的 2 倍,并且不超过主体的 3 倍。
没有上影线,或者下影线非常短(不超过烛范围的 10%)。
长仓中主体的颜色并不重要,对于短仓,白色锤线比黑色锤线强得多。
建议进行确认。
射击之星
(熊势)

 上升趋势。
上影线不短于主体的 3 倍。
没有下影线,或者下影线非常短(不超过烛范围的 10%)。
价格在星和上一烛之间有缺口。
 Forex:前一烛的收盘价和星的开盘价相同。
主体颜色并不重要。
建议进行确认。

      //------      
      // 锤线牛势模型 
      if(cand1.trend==DOWN && //检查趋势方向
         cand1.type==CAND_HAMMER) // 检查锤线
        {
         comment=_language?"锤线";
         DrawSignal(prefix+"锤线牛势模型"+string(objcount++),cand1,InpColorBull,comment);
        }
      //------      
      // 射击之星熊势模型
      if(cand1.trend==UPPER && cand2.trend==UPPER && //检查趋势方向
         cand2.type==CAND_INVERT_HAMMER) // 检查反转锤线
        {
         comment=_language?"射击之星";
         if(_forex)// 如果是外汇交易
           {
            if(cand1.close<=cand2.open) // 收盘价小于等于开盘价
              {
               DrawSignal(prefix+"射击之星熊势模型"+string(objcount++),cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close) // 第二个烛形与第一个分离
              {
               DrawSignal(prefix+"射击之星熊势模型"+string(objcount++),cand2,InpColorBear,comment);
              }
           }
        }

我想提醒您注意,在“射击之星”中,我们实际上需要两根烛,因为在识别条件中考虑了前一天的主体。

图案名称 订单 经典图案 Forex 图案识别
执带线
(牛势)



买入

此图案

实施
 下降趋势。
在趋势方向上以较大的缺口开盘。
 白色烛 — 长无影烛形图。
 白色烛的主体比上一根烛的主体长很多。
建议进行确认。
执带线
(熊势)


此图案

实施
 上升趋势。
在趋势方向上以较大的缺口开盘。
黑色烛 — 长无影烛。
 黑色烛的主体比上一根烛的主体长很多。
建议进行确认。

      //------      
      // 执带线牛势模型
      if(cand2.trend==DOWN && cand2.bull && !cand1.bull &&// 检查趋势的方向和烛形的方向
         cand2.type==CAND_MARIBOZU_LONG && // 检查 "长" 无影烛
         cand1.bodysize<cand2.bodysize && cand2.close<cand1.close) // 第一个烛形的主体比第二个烛形的主体短,第二个烛形的收盘价比第一个烛形收盘价低
        {
         comment=_language?"执带线";
         if(!_forex)// 如果不是外汇交易
           {
            DrawSignal(prefix+"执带线牛势模型"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }
      // 执带线熊势模型
      if(cand2.trend==UPPER && !cand2.bull && cand1.bull && // check the trend direction and direction of the candlestick
         cand2.type==CAND_MARIBOZU_LONG && // 检查 "长" 无影烛
         cand1.bodysize<cand2.bodysize && cand2.close>cand1.close) // 第一个烛形的主体高度比第二个烛形短,第二个烛形的收盘价比第一个烛形收盘价高
        {
         comment=_language?"执带线";
         if(!_forex)// 如果不是外汇交易
           {
            DrawSignal(prefix+"执带线熊势模型"+string(objcount++),cand1,cand2,InpColorBear,comment);
           }
        }

与“射击之星”类似,使用两根烛,因为在识别图案时考虑了前一天的主体。

3.1.2. 由二根烛组成的图案

添加另一根烛:

/* 检查两个烛形的图案 */
      CANDLE_STRUCTURE cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-1],InpPeriodSMA,cand1))
         continue;

并识别图案:

图案名称 订单 经典图案 Forex 图案识别
吞噬
(牛势)

买入

 下降趋势。
第二根烛的主体完全覆盖第一根的主体。
 Forex:黑色烛的收盘价与白色烛的开盘价相同。
影线并不重要。
建议进行确认。

吞噬
(熊势)

 上升趋势。
第二根烛的主体完全覆盖第一根的主体。
 Forex:白色烛的收盘价与黑色烛的开盘价相同。
影线并不重要。
建议进行确认。

      //------      
      // 吞噬牛势模型
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && cand2.bull && // 检查趋势方向和烛形的方向
         cand1.bodysize<cand2.bodysize) // 第二个烛形的主体高于第一个烛形
        {
         comment=_language?"吞噬";
         if(_forex)// 如果是外汇交易
           {
            if(cand1.close>=cand2.open && cand1.open<cand2.close) // 第一个烛形的主体在第二个烛形主体之内
              {
               DrawSignal(prefix+"吞噬牛势模型"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.open<cand2.close) // 第一个烛形的主体在第二个烛形主体之内
              {
               DrawSignal(prefix+"吞噬牛势模型"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
        }
      // 吞噬熊市模型
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && // 检查趋势的方向和烛形的方向
         cand1.bodysize<cand2.bodysize) // 第二个烛形的主体高于第一个烛形
        {
         comment=_language?"吞噬";
         if(_forex)// 如果是外汇交易
           {
            if(cand1.close<=cand2.open && cand1.open>cand2.close) //第一个烛形的主体在第二个烛形主体之内
              {
               DrawSignal(prefix+"吞噬熊势模型"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.open>cand2.close) // 第一个烛形收盘价小于等于第二个烛形开盘价,或者第一个烛形开盘价大于等于第二个烛形收盘价
              {
               DrawSignal(prefix+"吞噬熊势模型"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
        }

图案名称 订单 经典图案 Forex 图案识别
十字胎(牛)

买入

 下降趋势。
图案的第一根烛为长黑色。
十字星位于第一根烛的范围内,包括影线。
 Forex:十字星在第一根烛的收盘价上。如果十字星影线较短,则对于 Forex 而言,图案应被视为十字星。
建议进行确认。

十字胎
(熊势)

 上升趋势。
图案的第一根烛为长白色。
十字星位于第一根烛的范围内,包括影线。
 Forex:十字星在第一根烛的收盘价上。如果十字星影线较短,则对于 Forex 而言,图案应被视为十字星。
建议进行确认。

      //------      
      // 十字胎牛势模型
      if(cand1.trend==DOWN && !cand1.bull && // 检查趋势的方向和烛形的方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) // 检查第一个是否为 "长烛" 及第二个是否为十字星
        {
         comment=_language?""十字胎";
         if(_forex)// 如果是外汇交易
           {
            if(cand1.close<=cand2.open && cand1.close<=cand2.close && cand1.open>cand2.close) // 十字星在第一个烛形主体之内
              {
               DrawSignal(prefix+"十字胎牛势模型"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close && cand1.open>cand2.close) // 十字星在第一个烛形主体之内
              {
               DrawSignal(prefix+"十字胎牛势模型"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
        }
      // 十字胎熊势模型
      if(cand1.trend==UPPER && cand1.bull && // 检查趋势的方向和烛形的方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) //  检查 "长烛" 和十字星
        {
         comment=_language?"Harami Cross";
         if(_forex)// 如果是外汇交易
           {
            if(cand1.close>=cand2.open && cand1.close>=cand2.close && cand1.close>=cand2.close) //  十字星在第一个烛形主体之内
              {
               DrawSignal(prefix+"十字胎熊势模型"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close && cand1.open<cand2.close) //  十字星在第一个烛形主体之内
              {
               DrawSignal(prefix+"十字胎熊势模型"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
        }

图案名称 订单 经典图案 Forex 图案识别
孕线
(牛势)

买入

 下降趋势。
 第一根“长”烛的主体完全吞噬第二根的主体。
影线并不重要。
Forex:黑色烛的收盘价与白色烛的开盘价相同。
建议进行确认。

孕线
(熊势)

 上升趋势。
 第一根“长”烛的主体完全吞噬第二根的主体。
影线并不重要。
Forex:白色烛的收盘价与黑色烛的开盘价相同。
建议进行确认。

      //------      
      // 孕线牛势模型
      if(cand1.trend==DOWN && !cand1.bull && cand2.bull &&// 检查趋势的方向和烛形的方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  // 检查第一个烛形是否是“长烛”
          cand2.type!=CAND_DOJI && cand1.bodysize>cand2.bodysize) // 第二个烛形不是十字星而且第一个烛形主体长于第二个烛形主体
        {
         comment=_language?"孕线";
         if(_forex)// 如果是外汇交易
           {
            if(cand1.close<=cand2.open && cand1.close<=cand2.close && cand1.open>cand2.close) // 第二个烛形主体在第一个烛形主体之内
              {
               DrawSignal(prefix+"孕线牛势模型"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close && cand1.open>cand2.close) // 第二个烛形主体在第一个烛形主体之内
              {
               DrawSignal(prefix+"孕线牛势模型"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
        }
      // 孕线熊市模型
      if(cand1.trend==UPPER && cand1.bull && !cand2.bull &&// 检查趋势的方向和烛形的方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  // 检查第一个烛形是否为“长烛”
          cand2.type!=CAND_DOJI && cand1.bodysize>cand2.bodysize) // 第二个烛形不是十字星并且第一个烛形主体大于第二个烛形主体
        {
         comment=_language?"孕线";
         if(_forex)// 如果是外汇交易
           {
            if(cand1.close>=cand2.open && cand1.close>=cand2.close && cand1.close>=cand2.close) // 十字星在第一个烛形主体之内
              {
               DrawSignal(prefix+"孕线熊势模型"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close && cand1.open<cand2.close) //十字星在第一个烛形主体之内
              {
               DrawSignal(prefix+"孕线熊势模型"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
        }

图案名称 订单 经典图案 Forex 图案识别
十字星
(牛势)

买入

 下降趋势。
 图案的第一根烛是长黑色。
 第二根烛 - 十字星在趋势方向上有缺口。
Forex:无缺口。
十字星的影线较短。
建议进行确认。

十字星
(熊势)

 上升趋势。
 图案的第一根烛是长白色。
 第二根烛 - 十字星在趋势方向上有缺口。
Forex:无缺口。
十字星的影线较短。
建议进行确认。

      //------      
      // 十字星牛势模型 
      if(cand1.trend==DOWN && !cand1.bull && // 检查趋势的方向和烛形的方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) // 检查第一个“长烛”和第二个十字星
        {
         comment=_language?"十字星";
         if(_forex)// 如果是外汇交易
           {
            if(cand1.close>=cand2.open) // 十字星开盘价小于等于第一个烛形收盘价
              {
               DrawSignal(prefix+"十字星牛势模型"+string(objcount++),cand1,cand2,InpColorBull,comment);

              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close) // 十字星主体在第一个烛形主体之外
              {
               DrawSignal(prefix+"十字星牛势模型"+string(objcount++),cand1,cand2,InpColorBull,comment);

              }
           }
        }
      // 十字星熊市模型 
      if(cand1.trend==UPPER && cand1.bull && // 检查趋势的方向和烛形的方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) // 检查第一个“长烛”和第二个十字星
        {
         comment=_language?"十字星";
         if(_forex)// 如果是外汇交易
           {
            if(cand1.close<=cand2.open) // // 十字星开盘价大于等于第一个烛形收盘价
              {
               DrawSignal(prefix+"十字星熊势模型"+string(objcount++),cand1,cand2,InpColorBear,comment);

              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close) // //十字星主体在第一个烛形主体之外
              {
               DrawSignal(prefix+"十字星熊势模型"+string(objcount++),cand1,cand2,InpColorBear,comment);

              }
           }
        }

图案名称 订单 经典图案 Forex 图案识别
穿刺图案
(牛势)

买入

 下降趋势。
 两根烛都是长的。
白色烛的开盘价低于黑色烛的最低价。
 Forex:黑色烛的收盘价和白色烛的开盘价相同。
白色烛收在黑色烛内并覆盖主体的 50%。(对于股票市场:与乌云压顶不同,此要求没有例外。)
经典模型不需要进行确认,而 Forex 需要进行确认。
乌云压顶(熊势)

 上升趋势。
 两根烛都是长的。
 黑色烛的开盘价高于白色烛的最高价。
 Forex:白色烛的收盘价和黑色烛的开盘价相同。
黑色烛收在白色烛内并覆盖主体的 50%。
经典模型不需要进行确认,而 Forex 需要进行确认。

            //------      
            // 穿刺线牛势模型 
            if(cand1.trend==DOWN  &&  !cand1.bull  &&  cand2.trend==DOWN  &&  cand2.bull && // 检查趋势的方向和烛形的方向
               (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // 检查长烛
               cand2.close>(cand1.close+cand1.open)/2)// 第二个烛形收盘价高于第一个烛的中间
              {
               comment=_language?"穿刺线";
               if(_forex)// 如果是外汇交易
                 {
                  if(cand1.close>=cand2.open && cand2.close<=cand1.open)
                    {
                     DrawSignal(prefix+"云中闪烁"+string(objcount++),cand1,cand2,InpColorBull,comment);
                    }
                 }
               else
                 {
                  if(cand2.open<cand1.low && cand2.close<=cand1.open) // 第二个烛形开盘价低于第一个烛形最低价, 
                    {
                     DrawSignal(prefix+"穿刺线"+string(objcount++),cand1,cand2,InpColorBull,comment);
                    }
                 }
              }
            // 乌云盖顶熊势模型 
            if(cand1.trend==UPPER  &&  cand1.bull  &&  cand2.trend==UPPER && !cand2.bull && // 检查趋势的方向和烛形的方向
               (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // 检查长烛
               cand2.close<(cand1.close+cand1.open)/2)// 烛形2收盘价低于烛形1主体中央
              {
               comment=_language?"乌云盖顶";
               if(_forex)// 如果是外汇交易
                 {
                  if(cand1.close<=cand2.open && cand2.close>=cand1.open)
                    {
                     DrawSignal(prefix+"乌云盖顶"+string(objcount++),cand1,cand2,InpColorBear,comment);
                     
                    }
                 }
               else
                 {
                  if(cand1.high<cand2.open && cand2.close>=cand1.open)
                    {
                     DrawSignal(prefix+"乌云盖顶"+string(objcount++),cand1,cand2,InpColorBear,comment);
                     
                    }
                 }
              }

图案名称 订单 经典图案 Forex 图案识别
相逢线
(牛势)

买入

此图案

实施
 下降趋势。
 图案的第一根烛是长黑色。
 白色烛的开盘价有较大的缺口,并且低于黑色烛的最低价。
 两根烛的收盘价相同。
 白色烛的主体大于黑色烛的主体。
需要进行确认。
相逢线
(熊势)

此图案

实施
 上升趋势。
图案的第一根烛是长白色。
 黑色烛的开盘价有较大的缺口,并且高于白色烛的最高价。
 两根烛的收盘价相同。
 黑色烛的主体大于白色烛的主体。
需要进行确认。

      // 相逢线牛势模型
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && cand2.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // 检查长烛
         cand1.close==cand2.close && cand1.bodysize<cand2.bodysize && cand1.low>cand2.open) // 收盘价相同,第一个烛形主体短于第二个,第二个烛形开盘价低于第一个烛形最低价
        {
         comment=_language?"相逢线";
         if(!_forex)// 如果不是外汇交易
           {
            DrawSignal(prefix+"相逢线牛势模型"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }
      // 相逢线熊势模型 
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // 检查长烛
         cand1.close==cand2.close && cand1.bodysize<cand2.bodysize && cand1.high<cand2.open) // // 收盘价相同,第一个烛形主体短于第二个,第二个烛形开盘价高于第一个烛形最高价
        {
         comment=_language?"相逢线";
         if(!_forex)// 如果不是外汇交易
           {
            DrawSignal(prefix+"相逢线熊势模型"+string(objcount++),cand1,cand2,InpColorBear,comment);
           }
        }

图案名称 订单 经典图案 Forex 图案识别
最低价相同
(牛势)

买入

此图案

实施
 下降趋势。
 图案的第一根烛并不是必须要为长的。
 第二根烛的开盘价在第一根烛的主体内。
两根烛的收盘价相同。
没有下影线或下影线很短。
需要进行确认。

      //------      
      // 最低价相同牛势模型 
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && !cand2.bull && // 检查趋势方向和烛形方向
         cand1.close==cand2.close && cand1.bodysize>cand2.bodysize) // 收盘价相同,第一个烛形主体长于第二个烛形主体
        {
         comment=_language?"最低价相同";
         if(!_forex)// 如果不是外汇交易
           {
            DrawSignal(prefix+"最低价相同牛势模型"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }

图案名称 订单 经典图案 Forex 图案识别
飞鸽回巢<br1>(牛势)
牛势飞鸽回巢

买入

此图案

实施
 下降趋势。
 图案的第一根烛并不是必须要为长的。
 第二根烛的开盘价在第一根烛的主体内。
两根烛的收盘价相同。
没有下影线或下影线很短。
需要进行确认。

      //------      
      // 飞鸽回巢牛势模型
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && !cand2.bull && // 检查趋势方向和烛形方向
        (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  // 检查长烛
         cand1.close<cand2.close && cand1.open>cand2.open) // 第二个烛形主体在第一个烛形之内
        {
         comment=_language?"飞鸽回巢";
         if(!_forex)// 如果不是外汇交易
           {
            DrawSignal(prefix+"飞鸽回巢牛势模型"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }

 3.1.3. 由三根烛组成的图案

/* 检查三根烛组成的图案 */
      CANDLE_STRUCTURE cand3;
      cand3=cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-2],InpPeriodSMA,cand1))
         continue;
图案名称  订单  经典图案 Forex 图案识别
弃婴
(牛势)

 

买入

此图案

实施

 这是一种罕见但非常重要的反转图案。
下降趋势。
 图案的第一根烛是长黑色。
 第二根烛是有缺口的十字星,并且缺口不仅在烛的主体之间,也在阴影之间。
第三根烛是在影线之间具有相同缺口的“长”白色烛,并且收盘价在第一根烛的主体内。

 弃婴
(熊势)

 

  此图案

实施

 这是一种罕见但非常重要的反转图案。
上升趋势。
 图案的第一根烛是长白色。
 第二根烛是有缺口的十字星,并且缺口不仅在烛的主体之间,也在阴影之间。
第三根烛是在影线之间具有相同缺口的“长”黑色烛,并且收盘价在第一根烛的主体内。

      //------      
      // 弃婴牛势模型
      if(cand1.trend==DOWN && !cand1.bull && cand3.trend==DOWN && cand3.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // 检查长烛
         cand2.type==CAND_DOJI && // 检查第二个烛是否为十字星
         cand3.close<cand1.open && cand3.close>cand1.close) // 第三个烛形在第一个烛形主体之内关闭
        {
         comment=_language?"弃婴 (牛势)":"Abandoned Baby";
         if(!_forex)// 如果不是外汇交易
           {
            if(cand1.low>cand2.high && cand3.low>cand2.high) // 两个烛形有距离
              {
               DrawSignal(prefix+"弃婴牛势模型"+string(objcount++),cand1,cand1,cand3,InpColorBull,comment);
              }
           }
        }
      // 弃婴熊势模型
      if(cand1.trend==UPPER && cand1.bull && cand3.trend==UPPER && !cand3.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // 检查长烛
         cand2.type==CAND_DOJI && // 检查第二个烛是否为十字星
         cand3.close>cand1.open && cand3.close<cand1.close) // // 第三个烛形在第二个烛形主体之内关闭
        {
         comment=_language?"弃婴 (熊势)":"Abandoned Baby";
         if(!_forex)// 如果不是外汇交易
           {
            if(cand1.high<cand2.low && cand3.high<cand2.low) // 烛形之间有距离
              {
               DrawSignal(prefix+"弃婴熊势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }
图案名称  订单 经典图案 Forex 图案识别
黎明之星
(牛势)

买入


 下降趋势。
 第一根和第三根烛是“长”烛。
星的影线较短,并且颜色并不重要。
星与第一根烛的收盘价不相同。
Forex:第一根烛的收盘价和星的开盘价相等。
第三根烛收在第一根烛的主体内。
 黄昏之星
(熊势)
)

 

 

 

 上升趋势。
 第一根和第三根烛是“长”烛。
星的影线较短,并且颜色并不重要。
星与第一根烛的收盘价不相同。
Forex:第一根烛的收盘价和星的开盘价相等。
第三根烛收在第一根烛的主体内。
      // 黎明之星牛势模型
      if(cand1.trend==DOWN && !cand1.bull && cand3.trend==DOWN && cand3.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // 检查长烛
         cand2.type==CAND_SHORT && // 检查短烛
         cand3.close>cand1.close && cand3.close<cand1.open) // 第三个烛形在第一个烛形主体内关闭
        {
         comment=_language?"黎明之星";
         if(_forex)// 如果是外汇交易
           {
            if(cand2.open<=cand1.close) // 第二个烛形在第一个烛形收盘之下或平齐开启
              {
               DrawSignal(prefix+"黎明之星牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else // 其他市场
           {
            if(cand2.open<cand1.close && cand2.close<cand1.close) // 第二个烛形与第一个分开
              {
               DrawSignal(prefix+"黎明之星牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // 黄昏之星熊势模型
      if(cand1.trend==UPPER && cand1.bull && cand3.trend==UPPER && !cand3.bull && //检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // 检查长烛
         cand2.type==CAND_SHORT && // 检查短烛
         cand3.close<cand1.close && cand3.close>cand1.open) // 第三个烛形在第一个烛形主体之内开启
        {
         comment=_language?"黄昏之星";
         if(_forex)// 如果是外汇交易
           {
            if(cand2.open>=cand1.close) // 第二个烛形在第一个烛形收盘之上或平齐开启
              {
               DrawSignal(prefix+"黄昏之星熊势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else // 其他市场
           {
            if(cand2.open>cand1.close && cand2.close>cand1.close) //  第二个烛形与第一个烛形分离
              {
               DrawSignal(prefix+"黄昏之星熊势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }
图案名称  订单 经典图案 Forex 图案识别
黎明十字星
(牛势)

买入



 下降趋势。
 图案的第一根烛是长黑色。
 第二根烛 - 十字星在趋势方向上有缺口。
Forex:无缺口。
十字星的影线较短。
第三根烛收在第一根烛的主体内。
黄昏之星
(熊势)



 上升趋势。
 图案的第一根烛是长白色。
 第二根烛 - 十字星在趋势方向上有缺口。
Forex:无缺口。
十字星的影线较短。
建议进行确认。
      //------      
      // 黎明十字星牛势模型 
      if(cand1.trend==DOWN && !cand1.bull && cand3.trend==DOWN && cand3.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // 检查长烛
         cand2.type==CAND_DOJI && // 检查十字星
         cand3.close>cand1.close && cand3.close<cand1.open) // 第三个烛形. 在第一个烛形主体之内关闭
        {
         comment=_language?"黎明十字星";
         if(_forex)// 如果是外汇交易
           {
            if(cand2.open<=cand1.close) // 十字星在第一个烛形收盘价之下或平齐开启
              {
               DrawSignal(prefix+"黎明十字星牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else // 其他市场
           {
            if(cand2.open<cand1.close) // 十字星和第一个烛形分离
              {
               DrawSignal(prefix+"黎明十字星牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // 黄昏十字星熊势模型
      if(cand1.trend==UPPER && cand1.bull && cand3.trend==UPPER && !cand3.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // 检查长烛
         cand2.type==CAND_DOJI && // 检查十字星
         cand3.close<cand1.close && cand3.close>cand1.open) // 第三个烛形在第一个烛形主体之内关闭
        {
         comment=_language?"黄昏十字星";
         if(_forex)// 如果是外汇交易
           {
            if(cand2.open>=cand1.close) // 十字星在第一个烛形收盘价以上或平齐开启
              {
               DrawSignal(prefix+"黄昏十字星熊势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else // 其他市场
           {
            if(cand2.open>cand1.close) // 十字星与第一个烛形分开
               // 检查第二个烛形收盘价与第三个烛形开盘价
              {
               DrawSignal(prefix+"黄昏之星熊势模型"+string(objcount++),cand1,cand3,cand3,InpColorBear,comment);
              }
           }
        }
图案名称 订单 经典图案 Forex 图案识别
上升缺口双飞乌鸦


此图案

实施
 上升趋势。
第一根烛为“长”白色。
白色烛和黑色烛之间有缺口。
第三根烛的开盘价比第二根高并且吞噬第二根。
建议进行确认。
 图案的含义:如果价格在第 4 根烛期间不能上涨,则我们应预期价格下跌。
双飞乌鸦
(熊势)


此图案

实施
 上升趋势。
图案的第一根烛是长白色。
白色烛和第一根黑色烛之间有缺口。
第三根烛是黑色并且必须较“长”,开盘价在第二根烛内或上方,并且收盘价在白色烛以内或下方,覆盖缺口。
建议进行确认。
如果第二只乌鸦(第三根烛)吞噬了白色烛,则不需要进行确认。
      //------      
      // 上升缺口双飞乌鸦熊势模型
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && cand3.trend==UPPER && !cand3.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // 检查长烛
         cand1.close<cand2.close && cand1.close<cand3.close && // 第二和第三个烛形与第一个烛形分离
         cand2.open<cand3.open && cand2.close>cand3.close) // 第三个烛形吞噬第二个
        {
         comment=_language?"上升缺口双飞乌鸦";
         if(!_forex)// 如果不是外汇交易
           {
            DrawSignal(prefix+"上升缺口双飞乌鸦熊势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }
      //------      
      // 双飞乌鸦熊势模型
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && cand3.trend==UPPER && !cand3.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG|| cand1.type==CAND_MARIBOZU_LONG) &&(cand3.type==CAND_LONG|| cand3.type==CAND_MARIBOZU_LONG) && // 检查长烛
         cand1.close<cand2.close && // 第二个烛形于第一个分离
         cand3.open>cand2.close && // 第三个烛形开启高于第二个烛形收盘价
         cand3.close<cand1.close) // 第三个烛形关闭低于第一个烛形收盘
        {
         comment=_language?"双飞乌鸦";
         if(!_forex)// 如果不是外汇交易
           {
            DrawSignal(prefix+"双飞乌鸦熊势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }

图案名称  订单 经典图案 Forex 图案识别
南方三星
(牛势)

买入



 下降趋势。
第一根烛是具有长下影线的长黑色。
第二根烛比第一根短,并且其最低价高于第一根烛的最低价。
第三根烛是短的黑色无影烛线柱或星,在第二根烛的范围内。
建议进行确认。
强弩之末
(熊势)



 上升趋势。
具有较高收盘价的三根白色烛。前两根烛是“长”烛。
每根烛的开盘价在前一根的主体内。
 Forex:白色烛的开盘价/收盘价相同。
 第三根烛的开盘价在第二根烛的收盘价附近。
 第三根烛是一颗星或陀螺。
建议进行确认。

      //------      
      // 南方三星牛势模型

      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand3.bull && //检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_MARIBOZU || cand3.type==CAND_SHORT) && // 检查长烛和无影烛
         cand1.bodysize>cand2.bodysize && cand1.low<cand2.low && cand3.low>cand2.low && cand3.high<cand2.high)
        {
         comment=_language?"南方三星";
         if(_forex)// 如果是外汇交易
           {
            DrawSignal(prefix+"南方三星牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
         else // 其他市场
           {
            if(cand1.close<cand2.open && cand2.close<cand3.open) // 在前一烛形之内开启
              {
               DrawSignal(prefix+"南方三星牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // 强弩之末熊势模型
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && cand3.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // 检查长烛
         (cand3.type==CAND_SPIN_TOP || cand3.type==CAND_SHORT)) // 第三个烛形是短烛或陀螺
        {
         comment=_language?"强弩之末";
         if(_forex)// 如果是外汇交易
           {
            DrawSignal(prefix+"强弩之末熊势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
         else // 其他市场
           {
            if(cand1.close>cand2.open && cand2.close<=cand3.open) // 在前一烛形之内开启
               // 检查第二个烛形收盘价与第三个烛形开盘价
              {
               DrawSignal(prefix+"强弩之末熊势模型"+string(objcount++),cand1,cand3,cand3,InpColorBear,comment);
              }
           }
        }

图案名称  订单 经典图案 Forex 图案识别
三白兵
(牛势)

买入



 下降趋势。
 三根长白色烛依次出现,每根的收盘价高于前一根的收盘价。
 每根烛的开盘价在前一烛的主体内。
 Forex:烛的收盘价/开盘价相同。
 烛的上影线较短。
不需要进行确认。
三只黑乌鸦
(熊势)


此图案

实施
 上升趋势。
 三根长黑色烛依次出现,每根的收盘价低于前一根的收盘价。
 每根烛的开盘价在前一烛的主体内。
 Forex:对应于图案相同的三只乌鸦。
 烛的下影线较短。
不需要进行确认。

      //------      
      // 三白兵牛势模型
      if(cand1.trend==DOWN && cand1.bull && cand2.bull && cand3.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // 检查长烛和无影烛
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG)) // 检查长烛和无影烛
        {
         comment=_language?"三白兵";
         if(_forex)// 如果是外汇交易
           {
            DrawSignal(prefix+"三白兵牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
         else // 其他市场
           {
            if(cand1.close>cand2.open && cand2.close>cand3.open) // 在前一烛形之内开启
              {
               DrawSignal(prefix+"三白兵牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // 三只黑乌鸦熊势模型
      if(cand1.trend==UPPER && !cand1.bull && !cand2.bull && !cand3.bull && //检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // 检查长烛和无影烛
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // 检查长烛和无影烛
         cand1.close<cand2.open && cand2.close<cand3.open)
        {
         comment=_language?"三只黑乌鸦";
         if(!_forex) // 非外汇交易
           {
               DrawSignal(prefix+"三只黑乌鸦熊势模型"+string(objcount++),cand1,cand3,cand3,InpColorBear,comment);
           }
        }

图案名称  订单 经典图案 Forex 图案识别
三外升
(牛势)

买入



 下降趋势。
 首先,图案是吞噬(牛)形态:第二根烛的主体完全覆盖第一根的主体。
 Forex:黑色烛的收盘价和白色烛的开盘价相同。
影线并不重要。
 然后,在第三根烛上,有较高的收盘价。
不需要进行确认:图案本身就是牛势吞噬的确认。
三外降
(熊势)



 上升趋势。
 首先,图案是吞噬(熊)形态:第二根烛的主体完全覆盖第一根的主体。
 Forex:白色烛的收盘价和第一根黑色烛的开盘价相同。
影线并不重要。
 然后,在第三根烛上,有较低的收盘价。
不需要进行确认。图案本身就是熊势吞噬的确认。

      //------      
      // 三外升牛势模型
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && cand2.bull && cand3.bull && // 检查趋势方向和烛形方向
         cand2.bodysize>cand1.bodysize && // 第二个烛形主体比第一个烛形主体长
         cand3.close>cand2.close) // 第三个烛形收盘价比第二个烛形收盘高
        {
         comment=_language?"三外升";
         if(_forex)// 如果是外汇交易
           {
            if(cand1.close>=cand2.open && cand1.open<cand2.close) // 第一个烛形的主体在第二个烛形主体之内
              {
               DrawSignal(prefix+"三外升牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.open<cand2.close) // 第一个烛形的主体在第二个烛形主体之内
              {
               DrawSignal(prefix+"三外升牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // 三外降熊势模型
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && !cand3.bull && // 检查趋势方向和烛形方向
         cand2.bodysize>cand1.bodysize && // 第二个烛形主体比第一个烛形主体长
         cand3.close<cand2.close) // 第三个烛形收盘价低于第二个烛形收盘
        {
         comment=_language?"三外降";
         if(_forex)// 如果是外汇交易
           {
            if(cand1.close<=cand2.open && cand1.open>cand2.close) // 第一个烛形主体在第二个烛形主体之内
              {
               DrawSignal(prefix+"三外降熊势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.open>cand2.close) // 第一个烛形主体在第二个烛形主体之内
              {
               DrawSignal(prefix+"三外降熊势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }

图案名称  订单 经典图案 Forex 图案识别
三内升
(牛势)

买入



 下降趋势。
 在前两根烛中形成孕线(牛势)图案:短的白色主体被长的黑色主体吞噬。
 第三根烛的收盘价高于前两根烛的最高价。
不需要进行确认:图案本身就是牛势孕线的确认。
三内降
(熊势)



 上升趋势。
 在前两根烛中形成孕线(熊势)图案:短的黑色主体被长的白色主体吞噬。
 第三根烛的收盘价低于前两根烛的最低价。
不需要进行确认:图案本身就是熊势孕线的确认。

      //------      
      // 三内升牛势模型
      if(cand1.trend==DOWN  &&  !cand1.bull  &&  cand2.bull && cand3.bull && //检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  //检查长烛 
         cand1.bodysize>cand2.bodysize && // 第一个烛形主体比第二个烛形主体长
         cand3.close>cand2.close) // 第三个烛形收盘价高于第二个烛形收盘
        {
         comment=_language?"三内升";
         if(_forex)// 如果是外汇交易
           {
            if(cand1.close<=cand2.open && cand1.close<=cand2.close && cand1.open>cand2.close) // 第二个烛形主体在第一个烛形主体之内
              {
               DrawSignal(prefix+"三内升牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close && cand1.open>cand2.close) // 第二个烛形主体在第一个烛形主体之内
              {
               DrawSignal(prefix+"三内升牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // 三内降熊势模型
      if(cand1.trend==UPPER && cand1.bull && !cand2.bull && !cand3.bull &&//检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // 检查长烛 
         cand1.bodysize>cand2.bodysize && // 第一个烛形主体比第二个烛形主体长
         cand3.close<cand2.close) // 第三个烛形收盘价比第二个烛形收盘价低
        {
         comment=_language?"三内降";
         if(_forex)// 如果是外汇交易
           {
            if(cand1.close>=cand2.open && cand1.close>=cand2.close && cand1.close>=cand2.close) // 在第一个烛形主体之内
              {
               DrawSignal(prefix+"三内降熊势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close && cand1.open<cand2.close) // 在第一个烛形主体之内
              {
               DrawSignal(prefix+"三内降熊势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }

图案名称  订单 经典图案 Forex 图案识别
三星
(牛势)

买入



 下降趋势。
第一颗十字星和前一烛之间无需缺口。
 所有三根烛都是十字星。
 中间的十字星有向上或向下的缺口。
 Forex:所有三颗十字星都在一个价格水平上。
建议进行确认。
三星
(熊势)



 上升趋势。
第一颗十字星和前一烛之间无需缺口。
 所有三根烛都是十字星。
 中间的十字星有向上或向下的缺口。
 Forex:所有三颗十字星都在一个价格水平上。
建议进行确认。

      //------      
      // 三星牛势模型
      if(cand1.trend==DOWN  && // 检查趋势方向
         cand1.type==CAND_DOJI && cand2.type==CAND_DOJI && cand3.type==CAND_DOJI) // 检查十字星
        {
         comment=_language?"牛势三星";
         if(_forex)// 如果是外汇交易
           {
               DrawSignal(prefix+"三星牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
         else
           {
            if(cand2.open!=cand1.close && cand2.close!=cand3.open) // 第二个烛形在不同水平上
              {
               DrawSignal(prefix+"三星牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // 三星熊势模型
      if(cand1.trend==UPPER && // 检查趋势方向
         cand1.type==CAND_DOJI && cand2.type==CAND_DOJI && cand3.type==CAND_DOJI) // 检查十字星
        {
         comment=_language?"熊势三星";
         if(_forex)// 如果是外汇交易
           {
               DrawSignal(prefix+"三星熊势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
         else
           {
            if(cand2.open!=cand1.close && cand2.close!=cand3.open) //  第二个烛形在不同水平上
              {
               DrawSignal(prefix+"三星熊势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }

图案名称 订单 经典图案 Forex 图案识别
三只相同的乌鸦
(熊势)

卖出



 上升趋势。
 三根长的黑色烛依次出现,每根的收盘价低于前一根的收盘价。
 每根烛的开盘价近似等于前一烛的收盘价。
 烛的下影线较短。
不需要进行确认。

      // 三只相同乌鸦熊势模型
      if(cand1.trend==UPPER && !cand1.bull && !cand2.bull && !cand3.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // 检查长烛或无影烛
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG)) // 检查长烛或无影烛
        {
         comment=_language?"三只相同乌鸦";
         if(_forex)// 如果是外汇交易
           {
            DrawSignal(prefix+"三只相同乌鸦熊势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
         else // 不同市场
           {
            if(cand1.close>=cand2.open && cand2.close>=cand3.open) // 开盘价小于等于前一烛形的收盘价
              {
               DrawSignal(prefix+"三只相同乌鸦熊势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }

图案名称 订单 经典图案 Forex 图案识别
独特三河底
(牛势)

买入


此图案

实施
 下降趋势。
 模型的第一根烛是具有短影线的长黑色烛。
 在第二根烛上出现孕线,但是为黑色主体。
 第二根烛的下影线提供了新的最低价。
第三根烛是比第二根低的短白色烛。
并不是必须要进行确认,但希望进行。

      // 独特三河底牛势模型
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && cand3.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand3.type==CAND_SHORT && // 检查长烛或无影烛以及第三个短烛
         cand2.open<cand1.open && cand2.close>cand1.close && cand2.low<cand1.low && // 第二个烛形主体在第一个之内, 最低价低于第一个烛形
         cand3.close<cand2.close) // 第三个烛形收盘价低于第二个烛形
        {
         comment=_language?"独特三河底";
         if(!_forex)// 非外汇交易
           {
            DrawSignal(prefix+"独特三河底牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
        }

3.1.4. 由四根烛组成的图案

/* 检查四个烛形的图案 */      
      CANDLE_STRUCTURE cand4;
      cand4=cand3;
      cand3=cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-3],InpPeriodSMA,cand1))
         continue

图案名称 订单 经典图案 Forex 图案识别
隐藏的小燕子(牛)


买入

此图案

实施
 下降趋势。
 前两根烛是两根无影烛。
 第三根烛向下跳空开盘,但是交易在第二根烛的主体内进行,形成长的上影线。
 第四根黑色烛完成吞噬第三根,包括影线。
不需要进行确认。

      //------      
      // 隐藏的小燕子牛势模型
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand3.bull && !cand4.bull && // 检查趋势方向和烛形方向
         cand1.type==CAND_MARIBOZU_LONG && cand2.type==CAND_MARIBOZU_LONG && cand3.type==CAND_SHORT && // 检查无影烛
         cand3.open<cand2.close && cand3.high>cand2.close && // 第三个烛形与第二个有向下的距离,最高价在第二个烛形之内
         cand4.open>cand3.high && cand4.close<cand3.low) // 第四个烛形完全吞噬第三个
        {
         comment=_language?"隐藏的小燕子";
         if(!_forex)// 非外汇交易
           {
            DrawSignal(prefix+"隐藏的小燕子牛势模型"+string(objcount++),cand1,cand2,cand4,InpColorBull,comment);
           }
        }

3.1.5. 由两根烛组成的图案

/* 检查五根烛形的图案 */
      CANDLE_STRUCTURE cand5;
      cand5=cand4;
      cand4=cand3;
      cand3=cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-4],InpPeriodSMA,cand1))
         continue

图案名称  订单 经典图案 Forex 图案识别
突破
(牛势)

买入

此图案

实施
 下降趋势。
 前两根烛 — “长”黑色烛和具有缺口的“短”黑色烛。
 第三根烛是“短”的,可以具有任意颜色。
 第四根烛是“短”黑色。
 第五根是“长”白色,并且收盘价在缺口内。
建议进行确认。
突破
(熊势)

此图案

实施
 上升趋势。
 前两根烛 — “长”白色烛和具有缺口的“短”白色烛。
 第三根烛是“短”的,可以具有任意颜色。
 第四根烛是“短”白色。
 第五根是“长”黑色,并且收盘价在缺口内。
建议进行确认。

      //------      
      // 突破牛势模型
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand4.bull && cand5.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG|| cand1.type==CAND_MARIBOZU_LONG) &&  //检查第一个长烛
         cand2.type==CAND_SHORT && cand2.open<cand1.close && // 第二个是短烛,与第一个分开
         cand3.type==CAND_SHORT && cand4.type==CAND_SHORT && // 第三第四个是短烛
         (cand5.type==CAND_LONG || cand5.type==CAND_MARIBOZU_LONG) && cand5.close<cand1.close && cand5.close>cand2.open) // 第五个是长烛且收盘于缝隙之内
        {
         comment=_language?"牛势突破";
         if(!_forex)// 非外汇交易
           {
            DrawSignal(prefix+"突破牛势模型"+string(objcount++),cand1,cand2,cand5,InpColorBull,comment);
           }
        }
      // 突破熊势模型
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && cand4.bull && !cand5.bull && //  检查趋势方向和烛形方向
         (cand1.type==CAND_LONG|| cand1.type==CAND_MARIBOZU_LONG) &&  // 第一个是长烛
         cand2.type==CAND_SHORT && cand2.open<cand1.close && // 第二个是短烛,与第一个分开
         cand3.type==CAND_SHORT && cand4.type==CAND_SHORT && // 第三第四个是短烛
         (cand5.type==CAND_LONG || cand5.type==CAND_MARIBOZU_LONG) && cand5.close>cand1.close && cand5.close<cand2.open) // 第五个是长烛且收盘价在缝隙之内
        {
         comment=_language?"熊势突破";
         if(!_forex)// 非外汇交易
           {
            DrawSignal(prefix+"突破熊势模型"+string(objcount++),cand1,cand2,cand5,InpColorBear,comment);
           }
        }

3.2. 持续图案

持续图案是市场处于休眠时的状态。

无论是何模型,您都需要决定您的当前仓位,即使它没有任何变化。

3.2.1. 由一根烛组成的图案

图案名称  订单 经典图案 Forex 图案识别
逆转
(牛势)

买入

此图案

实施
 黑色无影烛后面跟着白色无影烛。
两个主体之间有缺口。
不需要进行确认。
逆转
(熊势)

此图案

实施
 白色无影烛后面跟着黑色无影烛。
两个主体之间有缺口。
不需要进行确认。

      //------      
      // 逆转牛势模型
      if(!cand1.bull && cand2.bull && // 检查趋势方向和烛形方向
         cand1.type==CAND_MARIBOZU_LONG && cand2.type==CAND_MARIBOZU_LONG && // 两个无影烛
         cand1.open<cand2.open) // 之间有距离
        {
         comment=_language?"牛势逆转";
         if(!_forex)// 非外汇交易
           {
            DrawSignal(prefix+"逆转牛势模型"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }
      // 逆转熊势模型
      if(cand1.bull && !cand2.bull && // 检查趋势方向和烛形方向
         cand1.type==CAND_MARIBOZU_LONG && cand2.type==CAND_MARIBOZU_LONG && // 两个无影烛
         cand1.open>cand2.open) // 之间有距离
        {
         comment=_language?"熊势逆转";
         if(!_forex)// 非外汇交易
           {
            DrawSignal(prefix+"逆转熊势模型"+string(objcount++),cand1,cand2,InpColorBear,comment);
           }
        }

3.2.2. 由两根烛组成的图案

图案名称  订单 经典图案 Forex 图案识别
 牛势颈上线

 

   此图案

实施
 下降趋势。
图案的第一根烛是长黑色。
 白色烛的开盘价低于黑色烛的最低价,并且收盘价在黑色烛的最低价附近。
 白色烛 - 并不是必需要是长烛。
建议进行确认。
颈内线
(熊势)

此图案

实施
 下降趋势。
图案的第一根烛是长黑色。
 白色烛的开盘价低于黑色烛的最低价,并且收盘价略高于黑色烛的收盘价。
 白色烛 - 并不是必需要是长烛。
 白色烛的主体短于黑色烛的主体。
 白色烛的上影线很短。
建议进行确认。
插入线
(熊势)


此图案

实施
 下降趋势。
图案的第一根烛是长黑色。
 白色烛的开盘价低于黑色烛的最低价,并且收盘价略高于黑色烛的收盘价,但收盘价仍然低于黑色烛的中间位置。
 白色烛 - 并不是必需要是长烛。
建议进行确认。

请注意,这三种模型在很多地方是一样的,因此它们的实施仅有一些不同。

      //------ 检查颈上线图案
      if(cand1.trend==DOWN && !cand1.bull && cand2.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG)) // 第一个烛形为长烛
        {
         // 颈上线熊势模型
         if(cand2.open<cand1.low && cand2.close==cand1.low) // 第二个烛形开启于第一个烛形之下并且收盘价低于第一个烛形最低价
           {
            comment=_language?"颈上线熊势";
            if(!_forex)// 如果不是外汇交易
              {
               DrawSignal(prefix+"颈上线熊势模型"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            // 颈内线熊势模型
            if(cand1.trend==DOWN && !cand1.bull && cand2.bull && // 检查趋势方向和烛形方向
               (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // 第一个烛形为长烛
               cand1.bodysize>cand2.bodysize && // 第二个烛形主体比第一个烛形短
               cand2.open<cand1.low && cand2.close>=cand1.close && cand2.close<(cand1.close+cand1.bodysize*0.01)) // 第二个烛形开启比第一个烛形低并且收盘比第一个烛形收盘高
              {
               comment=_language?"颈内线熊势";
               if(!_forex)// 非外汇交易
                 {
                  DrawSignal(prefix+"颈内线熊势模型"+string(objcount++),cand1,cand2,InpColorBear,comment);
                 }
              }
            else
              {
               // 插入线熊势模型
               if(cand1.trend==DOWN && !cand1.bull && cand2.bull && // 检查趋势方向和烛形方向
                  (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // 第一个烛形为长烛
                  cand2.open<cand1.low && cand2.close>cand1.close && cand2.close<(cand1.open+cand1.close)/2) //  第二个烛形开启比第一个烛形低并且收盘高于第一个烛形收盘但低于中间
                 {
                  comment=_language?"插入线熊势";
                  if(!_forex)// 非外汇交易
                    {
                     DrawSignal(prefix+"插入线熊势模型"+string(objcount++),cand1,cand2,InpColorBear,comment);
                    }
                 }
              }
           }
        }

3.2.3. 由三根烛组成的图案

图案名称 订单 经典图案 Forex 图案识别
上缺口三方法
(牛势)


买入


此图案

实施
 上升趋势。
 前两根烛是有缺口的两根“长”白色烛。
 第三根烛的开盘价在第二根烛的主体内并回填缺口。
建议进行确认。
下缺口三方法
(熊势)



此图案

实施
 下降趋势。
 前两根烛是有缺口的两根“长”黑色烛。
 第三根烛的开盘价在第二根烛的主体内并回填缺口。
建议进行确认。

      //------      
      // 上缺口三方法牛势模型
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && !cand3.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // 前两个烛形为长烛
         cand2.open>cand1.close && // 第一和第二个烛形间有距离
         cand3.open>cand2.open && cand3.open<cand2.close && cand3.close<cand1.close) // 第三个烛形开启于第二个烛形主体之内且填充了缝隙
        {
         comment=_language?"上缺口三方法";
         if(!_forex)// 非外汇交易
           {
            DrawSignal(prefix+"上缺口三方法牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
        }
      //------      
      // 下缺口三方法牛势模型
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && cand3.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // 前两个烛形为长烛
         cand2.open<cand1.close && // 第一和第二个烛形间有距离
         cand3.open<cand2.open && cand3.open>cand2.close && cand3.close>cand1.close) //第三个烛形开启于第二个烛形主体之内且填充了缝隙
        {
         comment=_language?"下缺口三方法";
         if(!_forex)// 非外汇交易
           {
            DrawSignal(prefix+"下缺口三方法牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }

图案名称 订单 经典图案 Forex 图案识别
上肩带缺口
(牛势)


买入


<
此图案

实施
 上升趋势。
两根相邻白色烛之间有缺口。白色烛并不是必需要是“长”烛。
第三根烛的开盘价在第二根烛的主体内。
第三根烛的收盘价在缺口内,但缺口未被填满。
建议进行确认。
下肩带缺口
(熊势)


此图案

实施
 下降趋势。
两根相邻黑色烛之间有缺口。黑色烛并不是必需要是“长”烛。
第三根烛的开盘价在第二根烛的主体内。
第三根烛的收盘价在缺口内,但缺口未被填满。
建议进行确认。

      //------      
      // 上肩带缺口牛势模型
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && !cand3.bull && // 检查趋势方向和烛形方向
         cand1.type!=CAND_DOJI && cand2.type!=CAND_DOJI && // 前两个烛形不是十字星
         cand2.open>cand1.close && // 第一和第二个烛形间有距离
         cand3.open>cand2.open && cand3.open<cand2.close && cand3.close<cand2.open && cand3.close>cand1.close) // 第三个烛形开启与第二个烛形主体之内并且在缝隙间关闭
        {
         comment=_language?"上肩带缺口";
         if(!_forex)// 非外汇交易
           {
            DrawSignal(prefix+"上肩带缺口牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
        }
      //------      
      // 下肩带缺口牛势模型
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && cand3.bull && // 检查趋势方向和烛形方向
         cand1.type!=CAND_DOJI && cand2.type!=CAND_DOJI && // 前两个烛形不是十字星
         cand2.open<cand1.close && // 第一和第二个烛形间有距离
         cand3.open<cand2.open && cand3.open>cand2.close && cand3.close>cand2.open && cand3.close<cand1.close) // 第三个烛形开启于第二个烛形主体之内且在缝隙中关闭
        {
         comment=_language?"下肩带缺口";
         if(!_forex)// 非外汇交易
           {
            DrawSignal(prefix+"下肩带缺口牛势模型"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }

3.2.4. 由四根烛组成的图案

图案名称 订单 经典图案 Forex 图案识别
三线打击
(牛势)

买入

 三根烛表示牛势继续,类似于三白兵图案:具有短影线的长白烛。
 Forex:白色烛的开盘价/收盘价相同。
 第四根烛向上跳空开盘,并且收盘价低于第一根白色烛的开盘价。
 Forex:第三根烛的收盘价与第四根烛的开盘价相同。
建议进行确认。
三线打击(熊势)

 三根烛表示熊势继续,类似于三只黑乌鸦图案:具有短影线的长黑烛。
 Forex:黑色烛的开盘价/收盘价相同(类似于三只相同的乌鸦)。
 第四根烛向下跳空开盘,并且收盘价高于第一根黑色烛的开盘价。
 Forex:第三根烛的收盘价与第四根烛的开盘价相同。
建议进行确认。

      //------      
      // 三线打击牛势模型
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && cand3.bull && !cand4.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // 检查长烛或无影烛
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && //  检查长烛或无影烛
         cand2.close>cand1.close && cand3.close>cand2.close && cand4.close<cand1.open) // 第二个烛形收盘比第一个烛形高,第三个烛形比第二个高,第四个烛形收盘低于第一个
        {
         comment=_language?"三线打击";
         if(_forex)// 如果是外汇交易
           {
            if(cand4.open>=cand3.close) // 第四个烛形开盘比第三个收盘高
              {
               DrawSignal(prefix+"三线打击牛势模型"+string(objcount++),cand1,cand3,cand4,InpColorBull,comment);
              }
           }
         else // 不同市场
           {
            if(cand4.open>cand3.close) // 第四个烛形开盘比第三个烛形收盘高
              {
               DrawSignal(prefix+"三线打击牛势模型"+string(objcount++),cand1,cand3,cand4,InpColorBull,comment);
              }
           }
        }
      //------      
      // 三线打击熊势模型 
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand3.bull && cand4.bull && // 检查趋势方向和烛形方向
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && //  检查长烛或无影烛
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && //  检查长烛或无影烛
         cand2.close<cand1.close && cand3.close<cand2.close && cand4.close>cand1.open) // 第二个烛形收盘低于第一个烛形,第三个烛形收盘低于第二个烛形,第四个烛形收盘高于第一个烛形
        {
         comment=_language?"三线打击";
         if(_forex)// 如果是外汇交易
           {
            if(cand4.open<=cand3.close) // 第四个烛形开盘低于或等于第三个烛形
              {
               DrawSignal(prefix+"三线打击熊势模型"+string(objcount++),cand1,cand3,cand4,InpColorBear,comment);
              }
           }
         else // 不同市场
           {
            if(cand4.open<cand3.close) // 第四个烛形开盘低于第三个烛形
              {
               DrawSignal(prefix+"三线打击熊势模型"+string(objcount++),cand1,cand3,cand4,InpColorBear,comment);
              }
           }
        }

4. 指标的实施

让我们选择需要的输入参数。

烛图案指标的输入参数

图 3. 烛图案指标的输入参数

第一个参数是 "Averaging period"(平均周期) - 我们需要用其来确定趋势方向,定义“长”烛和“短”烛。

下一个参数是 "Enable signal"(启用信号) - 负责启用/禁用信号。信号通知有新的图案出现。

烛图案指标生成的信号

图 4. 烛图案指标生成的信号

参数 "Number of bars for calculation"(用于计算的柱数)专为促进指标的工作而设计。如果其值小于或等于 0,则在整个可用历史记录中搜索烛图案,否则用指定数量的柱进行搜索,这非常有利于指标的工作。

我认为使用颜色可以让一切事情都一目了然……

"Enable comments"(启用备注)用于启用/禁用烛图案的备注。

"Font size"(字号)设置备注的字号。

指标的实施非常简单。

期待新柱的出现:

//--- 等待新柱
   if(rates_total==prev_calculated)
     {
      return(rates_total);
     }

然后我们计算用于开始循环的计算器的初始值。

   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;

在循环中,我们检查并显示烛的组合,如图 5 所示:

  • 一根烛的组合:在组合的上方或下方显示一个箭头及图案名称。
  • 两根烛的组合:一个窄的矩形,并在第一根烛的上方或下方显示图案名称。
  • 三根或更多烛的组合:一个宽的矩形,并在最后一根烛的上方或下方显示图案名称。

烛图案指标的工作情况示例

图 5. 烛图案指标的工作情况示例

请注意,由于存在函数重载的可能性,不同图案的信号的输出是通过具有相同名称 DrawSignal()、但参数数量不同的函数完成的。

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)

指标的完整文本都在本文所附的文件 Candlestick_Patterns.mq5 中。

总结

在本文中,我们回顾了大多数烛图案、探测这些图案的方法,并提供了如何用 MQL5 编程语言实施它们的例子。本文的附件包含两个指标和一个包含文件。要使用它们,请将指标放在 \Indicators 文件夹中,将包含文件放在 \Include 文件夹中,然后编译它们。

我希望烛图案的分析将帮助您改进您的工作结果。

往前看,我希望添加筛选后的烛,提供比大多数技术指标更好的结果,但是我们将在下一篇文章中考虑这一主题,在该文中,我将创建一个按照烛的图案进行交易的交易系统和 EA 交易程序。

本文译自 MetaQuotes Software Corp. 撰写的俄文原文
原文地址: https://www.mql5.com/ru/articles/101

附加的文件 |
最近评论 | 前往讨论 (1)
nicholasmax
nicholasmax | 25 10月 2016 在 09:59
MQ5文件內容跟上面源碼的說明完全不同
依据 Heiken-Ashi 指标的交易系统示例 依据 Heiken-Ashi 指标的交易系统示例

在本文中我们将探讨在交易中使用 Heiken-Ashi 指标的问题。依据此指标考虑了一个简单的交易系统,并编写了一个 MQL5 EA 交易程序。依据标准类库中的类实施交易操作。复核后的交易策略的测试结果以历史记录为基础,并使用内建的 MetaTrader 5 策略测试程序获得,也在本文中提供。

用于在以仓位为中心的 MetaTrader 5 环境中跟踪订单的虚拟订单管理程序 用于在以仓位为中心的 MetaTrader 5 环境中跟踪订单的虚拟订单管理程序

可以将此类库添加到 MetaTrader 5 EA 交易程序,从而能够通过一种与 MetaTrader 4 非常类似的以订单为中心的方法编写程序(与基于仓位的 MetaTrader 5 相比较)。它通过在 MetaTrader 5 客户端跟踪虚拟订单,同时为每个仓位维护一个保护性经纪人止损,从而提供灾难防护来实现这一目的。

创建一个在若干工具上交易的 EA 交易程序 创建一个在若干工具上交易的 EA 交易程序

金融市场中资产的多样化是一个非常旧的概念,并且始终吸引着新入门的交易者。在本文中,作者提出了一个最简单的方法用以构建一个多货币 EA 交易程序,以便对这种方向的交易策略提供一个初步介绍。

以经济方式计算指标的原则 以经济方式计算指标的原则

调用用户指标和技术指标在自动交易系统的程序代码中只占很少的空间。通常它仅仅只是行代码。但是经常出现正是这几行代码占用测试 EA 交易程序所需的大部分时间的情况。因此,与指标内的数据计算有关的所有一切都需要更加彻底地考虑,而不能随意决定。本文正是探讨这一点。