量化交易软件:分析烛的图案
简介
描绘烛形图和分析烛图案是技术分析的一个迷人领域。烛形图的优点在于它们以能够查看数据动态的方式表示数据。
烛形图提供了关于交易的生动的心理学画面。在阅读和经过一段时间的实践之后,烛形图将成为您的主要分析工具的一部分。日本烛形图可以帮助您“洞察”金融市场,而这是其他图形方法难以做到的。它们同样适用于所有市场。

编辑切换为居中
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;
现在,让我们处理烛类型的识别。

