简介
在 "点数图指标" 一文中介绍了创建 点数图的编程方式。点数图自 19 世纪起开始广为人知。但这并不是唯一一种历久弥新的绘图方式。早期金融市场还有一种值得注意的绘图方式就是Kagi 图。赫兹量化将在本文中讨论这种图表。
证券交易所对于十九世纪的日本来说是一种陌生的金融机构,日本第一家证券交易所成立于 1878 年 5 月。也就是现在的 东京证券交易所。这件事对于 Kagi 图的发明和发展起到重要作用。欧洲和美国是在 1994 年 Steve Nison 的 "Beyond Candlesticks:New Japanese Charting Techniques Revealed"(日本烛形图技术新解) 一书出版后才开始知道 Kagi 图的。
在日语中,“Kagi” 一词表示在发明这种图表的那个年代人们使用的一种 L 形钥匙。同样,这种图还有另一个名称,“钥匙图”。在 Steve Nison 的《日本烛形图技术新解》一书中,您还会看到这种图表的多个别名:价格范围图、钩形图、三角或链形排列图。
这种图有哪些特别之处?它的主要特点在于忽略了时间尺度,仅留下价格尺度(不同于日本的烛形图、柱状图和线形图)。这样,图表将细微的价格浮动隐藏起来,仅显示最明显的价格浮动。
图中展示了一组较粗的阳线和较细的阴线,它们随着市场形势的变化相互交替。市场朝同一方向发展时,线条会延伸到达新的价格范围。但是,如果市场折回并达到预先设定的量,Kagi 线会在新一列中朝相反的方向绘制。这个预先设定的量是以点数(通常用于货币对)或当前价格的百分比数值(通常用于股票)来表示的。线条粗细随距其最近的最高或最低值发生变化。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
1. 图表示例
我们以 10 月 8 日到 10 月 11 日 EURUSD,H1 图表的历史数据为例。
图 1 显示的是一幅反向门槛为 15 点的标准图像:
编辑切换为居中
添加图片注释,不超过 140 字(可选)
图 1 Kagi 图,EURUSD H1
我们可以看到,价格从 17:00 开始下跌。下跌趋势一直持续到 21:00。22:00 时,价格从 1.3566 开始上升,最后以 1.3574 收盘。换句话说,价格覆盖了 11 点。这不足以形成逆转,但也没达到新的最低点。之后的两个小时,价格走势平稳,最后在 01:00(10 月 9 日)看到一次强势增长,并以 1.3591 点收盘,增幅达 25 点(1.3591-1.3566)。这意味着价格出现逆转。
这一上升趋势又持续了一个小时。价格达到 1.3599,加强了较粗的阳线。03:00 时,价格急剧下降,以 1.3578 收盘,比之前的最高点低 21 点(1.3599-1.3578)。这足以发生逆转。线条开始向下移动,但形式(粗阳线)没有发生变化。
到 16:00 时,价格下降并最终突破了距离最近的最低值,从粗阳线变为细阴线。之前提到的最低值,即 1.3566,在这里成为突破价。价格继续以阴线的形式移动,并在 10 月 10 日 14:00 变成阳线,突破了距离最近的最高点,也就是 10 月 9 日 23:00 形成的 1.3524。这个小例子展示了 Kagi 图的结构。
2. Kagi 指标制图原则
为了使该指标独立于当前时间表,决定单独复制计划用来形成指标的时间表数据,然后用得到的数据创建指标。
这样便可以在同一图表上同时查看多个时间表,扩大了 Kagi 图的技术分析界限。指标本身位于一个单独的窗口中,但也可以在主图上显示数据。也就是说,指标窗口中显示了基本信息(标准样式或修订样式)。已将指标复制到主图,并绘制出价格和时间标记(取决于设置)。
如前所述,指标绘制出标准版和修订版图表。上面介绍了标准版图表。现在我们来看修订版。
不知道这是不是一种新理念,但我没听说过这样的版本。附加过滤器的理念就是它现在不仅会过滤反转点,还会过滤图表的每一步动作。也就是说价格应移动一定距离以形成新的最高或最低点(不与肩/腰混淆)。一般来说,无论价格走向如何,都应首先移动指定距离。之后再确定它是延续了之前的趋势还是发生了反转。
图 2 显示了这一原则的运作原理。修订后的图表样式显示为蓝色,标准样式显示为红色。赫兹量化可以看到,修订后的样式对价格变动的反应较慢,会过滤多数小信号。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
图 2 创建修订版(蓝线)和标准版(红线) Kagi 图
除 Kagi 图外,指标还在指标窗口和主图中提供其它元素。
根据设置,可在指标窗口中设置这些标记。这些标记提供了反转价格数据。也可以用价位实现同样的功能,位于形成指标所用的整个价格范围内或位于每个图表反转点上的各个价位(取决于设置)均匀分布在窗口中。可根据以下三个条件设置颜色:根据反转类型(向上 - 向下)、线条类型(阴 - 阳)或无颜色变化。
主图中提供了反转价格标记,包括临时标记。这些标记(取决于设置)可能为同一颜色,或根据阴阳线的颜色改变颜色。
可利用通过全局变量相互交流的函数实现整个指标代码。
代码可分为三个主要函数和十一个附加函数。基本作图法的主要运算任务和缓冲区填充数据以及附加的缓冲区数组都由指标窗口中 Kagi 图的函数承担。另外两个函数负责提供数据:第一个负责复制时间数据,另一个负责复制选定时间表中每个柱的价格数据。
其它辅助函数负责执行所有作图工作,包括删除对象,卸载指标连同删除所有指标对象,反转参数计算,在主图和指标窗口中绘制标记,创建“走势线”类图形对象,在主图上绘制 Kagi,以及确定新柱的出现以开始形成指标。
3. 指标代码与算法
下面我们仔细了解一下指标代码以及形成该代码的算法。这个代码非常大,新手程序员也许难以理解。通过全局变量相互交流的各个函数使这个代码变得非常混乱。本文将在这一部分分别讲解每个函数以及部分代码。首先,我会介绍指标设置,然后再对复制初始函数的相关数据、反转参数计算、Kagi 图主函数的形成和计算以及其它辅助函数进行说明。
3.1. 指标输入参数
代码从在单独的窗口中声明指标开始,同时声明 12 个缓冲区以及 8 种指标作图法。首先,我们来看为什么选择 8 种作图法,包括两个 “柱状图” 和六个 “线形图”。每个“柱状图”都建立了自己的垂直线。其中一条线负责阴线,另一条负责阳线。
如果存在多条线,则情况会更为复杂,因为每条线都包含三个图形结构。这是因为只要在第一个点附件画出另外一个点,就可以画出一条线。也就是说,我们只需要旋转两个 “线”型图形结构就可以绘制出相互毗邻的两条线。但是,如果我们需要让这些线跳过一些必要的点,就需要第三个图形结构随前两个一起旋转。
图 3 中对此做出了说明,您可以看到使用两个“线”型图形结构的情况:
编辑切换为居中
添加图片注释,不超过 140 字(可选)
图 3 使用两个和三个图形“线”型结构展示肩线与腰线示例
然后,创建设置菜单。这里列举出五项(我们到输入参数中查看这五项)。
第一个输入参数“周期”是形成该结构的周期,随后是 “period_to_redraw” - 图表结构更新周期,最后一个参数是 “start_data” - 时间结构的起点。
这些参数之后是图表结构和其它标签参数:
-
kagi_type – 用户定义的图表结构类型,即标准型或修订型;
-
price_type – 作图使用的价格类型:收盘价、开盘价、最高价、最低价;
-
type_doorstep – 使用的反转类型:点和百分比;
-
doorstep – 反转值(根据上述参数指定点数或百分比数值);
-
color_yin – 指标窗口中的阴线颜色;
-
color_yang – 指标窗口中的阳线颜色;
-
width_yin – 指标窗口中的阴线宽度;
-
width_yang – 指标窗口中的阳线宽度;
-
levels_on_off – 是否应在指标窗口中绘制价格水平;
-
levels_type – 指标窗口中的价格水平类别。有两个数值可供选择:每次反转时或在整个价格范围内均匀分布;
-
levels_number – 指标窗口中的价格水平数目;
-
levels_change_color – 允许更改价格水平线颜色;选项包括高低反转、阴阳线或无变化;
-
levels_first_color – 一个价格水平的第一种颜色;
-
levels_second_color – 一个价格水平的第二种颜色;
-
label_1 – 在指标窗口中绘制图表反转价格标签;
-
label_1_number – 指标窗口中显示的标签数目;
-
label_1_color – 指标窗口中价格标签的颜色;
-
label_2 – 在主图中绘制价格标签;
-
label_2_color – 主图上的标签颜色;
-
time_line_draw – 在主图上绘制反转时间线;
-
time_separate_windows – 绘制主图中反转时间线的延长线;
-
time_line_change_color – 根据阴阳线上的反转标签更改时间线的颜色;
-
time_first_color – 主图上时间线的第一种颜色;
-
time_second_color – 主图上时间线的第二种颜色;
-
kagi_main_chart – 是否需要在主图上绘制 Kagi;
-
color_yin_main – 主图上的阴线颜色;
-
color_yang_main – 主图上的阳线颜色;
-
width_yin_main – 主图上的阴线宽度;
-
width_yang_main – 主图上的阳线宽度;
-
magic_numb – 用于建立并删除对象的幻数以及在指标名称中用于在一个图表中打开多个指标的幻数。
这些参数之后分别声明了指标缓冲区,用于保存价格和时间数值的辅助缓冲区,辅助变量(stop_data、bars_copied、bars_copied_time、copy_history、copy_time),用于将数据保存在图表移动发生变化的阴阳线上的数组,变化发生的时间和价格,以及中心价格(如果在柱上发生阴阳线替换)。最后,声明一个最常用的全局变量,其中包含 “a” 图表移动变化次数数据。