以 Doji(十字星)为例阐述改进的烛条形态识别

烛条形态的优点之一是其简单性:它们的描述只包含几个短语,而分析时只需处理几根柱线,甚至一根,因此即使是初学者也可以掌握。

另一个优点是无需关于终端和硬件的具体要求,因为分析过程并未构建任何资源密集型指标。 这一事实在几十年前尤为重要,因为当时的计算机还没有今天那么先进。 许多烛条形态都是在那个年代引入的。

然而,简单的烛条形态背后,还有一个严重的瑕疵,可经由现代自动交易化工具所提供的强大能力来抵消。 这一瑕疵粗略地与市场状况的柱线限制有关,当然这就会影响交易效率。

传统烛条的缺点及可能的解决方案

图表上的柱线形态是离散的、已预定义开始和结束时间。 与之对比,市场上的事件不断发生。 一些重要的价格波动可以从某根柱线开始,持续多根才结束。 在这种情况下,与发生在整段柱线内相比,事件看起来在图表上完全不同。 这意味着相同的走势可以在图表上有不同的方式反映。

我们以 Doji(十字星)烛条的例子来验证这个猜想。 最有趣的 Doji 类型之一是墓碑(或蜻蜓,倒置时)。 它有一个极易识别的形状,被认为是趋势结束和潜在的逆转信号。 这根烛条的开盘价和收盘价大致相等,上面的阴影非常高,而下面的阴影几乎没有:

图例 1. 完美的 Doji 墓碑

在下面的示例中,图表没有这样的烛条:

图例 2. 常规 H4 时间帧柱线

真的是这样吗? 我们看看若切换到一个较低的时间帧时,在这些柱线内发生了什么变化:

图例 3. 常规 H1 时间帧柱线

在上图中,一些烛条的收盘价与其它柱线的开盘价大致相等。 如果我们把所有的柱线从 1 到 5 组合起来,我们就会得到一个 Doji 形态。 同样这也适用于 6 至 9,以及 7 至 9 的柱线。 我们把这样的柱线群称为 “metabars(元柱线)”:

图例 4. 在 H1 时间帧上的元柱线

这不是魔术或骗术。 这些是真正的 Doji 烛条,它基于实际价格走势,即等于 H1 时间帧的 5、4 和 3 柱线。 我们无法在标准 H4 时间帧内看到这些 Doji,因为时间帧的硬编码持续时间为 4 小时,而柱线的开始时间也是硬编码。 时间长度只相差一个小时,或者柱线边界偏移一个小时,结果就会截然不同。

我们错过了多少个 Doji 形态? 经证明,错过形态会导致错失交易信号。

但是,我们无法手动分析图表,以便发现这样的元柱线,因为这很耗费时间和精力。 一个完美的选项是提供一个可以自动进行此类分析的指标。

开发改进的 Doji 指标

首先,我们需要判定指标应该具有的输入参数。

我们来详细看看 Doji 形态都由哪些部分组成。

图例 5. 形态结构

Height 是烛条的总高度。

Body 是烛条主体的高度。

Shadow 是烛条较短影线的高度。 正常柱线有两条影线:上影线和下影线。 在 Doji 的例子中,我们对较短的影线感兴趣,因为根据 Doji 的说明,它应该几乎不存在,但是它没有提到相对的影线。

Doji 形态与其它柱线和烛条的不同之处在于其各部件的特殊比例。 其形态应该几乎没有主体,也几乎没有较短的影线。 然而,“几乎没有”是一个相当模糊的概念。 假设每位交易者都自行决定这根柱线是否与 Doji 形态足够相似。 当运用软件指标来处理时,我们需要明晰、正式的准则。 这就意味着我们应该能够在指标输入参数中指定所有这些比例。

input double  Candle_BodyPowerMax      = 0.2;    // Maximum body height relative to the candlestick height

这是,Candle_BodyPowerMax = Body / Height (参见上图)。 更准确地说,这是最大比率,超过这个比率,形态就不能被归类为 Doji。 比率等于或小于该值(小于等于零)的所有柱线将被视为 Doji。

这同样适用于影线:

input double  Candle_ShadowPowerMax    = 0.2;    // Maximum shadow height relative to the candlestick height

Candle_ShadowPowerMax = Shadow / Height (see the figure above). 更准确地说,这是最大比率,超过这个比率,形态就不能被归类为 Doji。 比率等于或小于该值(小于等于零)的所有柱线将被视为 Doji。

这组参数对于基于单根柱线绘制 Doji 的指标来说已经足够了。 但在我们的例子中,该指标将配合元柱线(MetaBar)一起运行。 因此,我们还需要一个输入项来指定元柱线的数量。 这是元柱线宽度。

图例 6. 基于元柱线的形态的特殊参数

宽度不一定是固定的(这是元柱线相对于常规时间帧的优势),但可以指定为一个范围:

input int     Candle_WidthMin          = 1;      // Minimum candlestick width in barsinput int     Candle_WidthMax          = 2;      // Maximum candlestick width in bars

如果用户设置 Candle_WidthMin = 1 和 Candle_WidthMax = 1,那么所有的元柱线都与常规柱线相等,因此这将是一种经典的 Doji 构造方法。 否则,指标将遍历指定宽度范围内的所有柱线序列,并检查它们能否一起构成一个 Doji 形态。

在每根柱线上,终端操作不仅将依据柱线本身,而是需要更久远的若干根柱线。 我们需要在 OnInit(指标初始化)中通知该指标,从而在图表上绘制时,在历史数据开始处留出一个小的缩进:

SkipBars = Candle_WidthMax;PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, SkipBars);

SkipBars 变量必须声明为全局变量(时间为整数值)。 它还应用于指标计算(在 OnCalculate 中),来避免指标基于历史最久远的柱线绘制和计算(这将导致元柱线在历史范围之外形成,进而导致错误)。

下面,我将概括地描述指标主要部分的算法。

主指标在 OnCalculate() 里以循环形式组织:循环遍历所有未计算的柱线。 这是计算所有指标值所必需的。 

在这个通用循环中,存在另一个循环来构建所有可能的元柱线,从当前柱线开始,延展到过去。 这是一个从 1 到最大宽度(指示器输入)的循环。也就是说,元柱线最初等于一根价格柱线。 在每次迭代中,价格历史记录中的另一跟柱线被叠加到元柱线当中,以此类推。 

通过比较价格柱线和元柱线的 OHLC,可以实现向元柱线叠加价格柱线。 该操作的结果是,元柱线累积极值,并逐步计算其增长的大小。对于每根元柱线,指标会计算烛条相应的参数(实体高度、影线高度和宽度)。 它还检查这些值是否与输入参数中指定的阈值相符。如果一根烛条被证明是理想的 Doji 形态,则会发生以下情况: 

指标沿形态的方向(向上或向下)绘制一条垂直线。 线段的高度等于形态的宽度。元柱线的延展循环中断。 

完整的指标代码附在文后。

我们来查看指标在终端中的操作。

在此,指标发现了一根单柱线 Doji 形态:

图例 7. 指标通知一根单柱线 Doji 形态

由于指标只分析已完成收盘的柱线,因此图表中的 Doji 形态比指标信号晚一根柱线。 该指标的目的不是显示形态,而是生成实时信号,通知 Doji 形态已完成(并且将保持不变)。 这个形态可由多根柱线组成。 指标将发现的形态宽度显示为其线段高度值。 在此情况下,向上方的形态为 “1”,向下方的形态为 “-1”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值