简介
《MQL5 中艾略特波浪自动分析的实施》 一文中讲述了艾略特波浪自动波浪标签算法的几处不完善之处,其中一个就是速度缓慢。有鉴于此,以及自动分析本身就不太适合于实际应用这一现实,我们决定开发一款半自动波浪标签工具,而其众多优势包括:
- 人为控制标签;
- 由于仅分析用户指定的图表部分,所以分析速度极快。
此程序名为 AutoElliottWaveMaker,是本文要介绍的主角。AutoElliottWaveMaker 是当前可在市场中买到的手动波浪标签工具的一次必然升级。
1. 程序对象
该程序的主要对象为标签以及标签面板(图 1)。
图 1. 标签面板
标签面板所呈示的,是处于图表左上方的某个波级的一系列标签。该面板的位置以及标签之间的距离,均由用户在程序输入参数中自行定义(图 2):
- interval - 标签面板上标签之间的距离;
- x_distance - 标签面板沿 X 轴相对于图表左上角的位置;
- x_distance - 标签面板沿 Y 轴相对于图表左上角的位置。
图 2. 程序的输入参数
标签面板还会显示当前波级的名称(图 1)。
您可以通过按下 Esc 键隐藏/显示标签面板。如要显示标签面板上前一波级或后一波级的标签,请分别按下 Q 或 W。
标签则可利用拖放法移离标签面板。移动某标签后,标签面板就会恢复其初始状态。如从标签面板中移除某标签,则该面板不会恢复。想要恢复它,必须前往另一个波级,然后再返回。
波级与标签的数量和样式,均于 Levels.txt 文件中设置,而该文件会在您首次启动程序时自动生成。Levels.txt 文件位于 MetaTrader 5 终端数据目录下的 Files 文件夹中。用户可通过编辑该文件,更改波级的样式(图 3)。
图 3. Levels.txt 内容
我们以该文件的第四行为例来研究一下:
- SubMinuette - 波级的名称;
- i, ii, iii, iv, v, a, b, c, d, e, w, x, y, xx, z - 波峰;
- Times New Roman - 字体;
- 8 - 字号;
- 15 - 字体高度(以像素计);
- 255, 140, 0 - RGB 格式的颜色。
编辑该文件时,应设置下述限制:
而且,为确保程序的妥善运行,有必要将 MetaTrader 5 终端设置 (Main Menu-Tools-Options-Charts) 中的 "Unlimited" (无限制)设置为 "Max bars in chart" (图表中的最大柱数)。
2. 波浪标签过程
艾略特波浪在手动与/或自动模式下贴标。
手动模式轮流假设两种标签方式:
- 由标签面板拖动标签;
- 在图表的相关柱附近单击。
自动模式则建议根据程序的算法为图表贴标。这就是说,根据用户指定,分析可涉及整个图表,亦可是其中的任何部分(从一个标签到另一个)。
2.1. 手动模式
在手动标签模式下,标签可自由显示于各柱的上方或下方,图表比例或尺寸如有变化,亦会自动调整。各标签会按照波级的优先顺序放置。由此,如果同一柱的上方或下方有两个或更多波浪标签,那么,高波级的标签就会分别高于或低于低波级标签放置(图 4 和图 5)。
图 4. 贴标之前的标签位置
图 5. 贴标之后的标签位置
从图 4 可以看出,柱上方有一个 SubMicro 波级的标签 (A)。标签 5 被置于同一柱上的一个较低级别 - SuperMicro。由于 SuperMicro 级别比 SubMicro 低,所以标签 5 显示于标签 (A) 的下方(图 5)。
手动标签时必须考虑到,波浪标签要放置到最高/最低高于/低于邻近柱的最近柱的上方/下方。这一特定功能允许在图表中更加精确地定位标签。
前文说过,手动模型下的标签有两种完成方式。而且,在拖放过程多多少少还算清楚的同时,单击式的标签亦有其自身的特色。
如果利用鼠标点击贴标,您要在标签面板上选择一个标签。此举亦可通过连续按下 Z 键完成(这种情况下,您可以随着整体循环在面板上的标签之间进行切换)。之后,当前波级的贴标即可通过在图表上所需柱处单击鼠标即可完成。要完成标签过程,请单击任何标签或按下 X 键。
只要标签面板上有选定标签,贴标就会一直继续。每一次鼠标点击都会选择接续的标签。最后一个标签会结束单击型贴标过程。
2.2. 自动模式
图表的自动贴标利用控制键完成。自动贴标的不同情形有三种:
- 直到选定标签的图表分析;
- 选定标签后的图表分析;
- 未选择任何标签情况下的整体图表分析。
自动贴标的第一种情形会在按下 1 后执行。这种情况下,会从其开始直到选择的标签对图表实施分析,前提是其左侧没有其它标签。否则,会从左侧最近的标签开始、直到选定标签执行分析。
图 6 于图表中显示了两个标签。第二个标签被选中。按下 1 后,标签之间的图表部分就会接受分析。分析结果如图 7 所示。
图 6. 按下 1 之前图表的初始状态
图 7. 标签之间图表部分的自动分析结果
贴标的第二种情形通过按下 2 激活。这种情况下,会从选定的标签直到图表末尾实施分析,前提是其右侧没有其它标签。否则,会从选定标签开始、直到右侧最近的标签执行分析。
图 8 于图表中显示了一个标签。此标签已被选中。按下 2 后,则从该标签一直到图表末尾的图表部分执行分析。分析结果如图 9 所示。
图 8. 按下 2 之前图表的初始状态
图 9. 从该标签一直到图表末尾的图表部分的自动分析结果
分析的第三种情形,会在按下 1 或 2 时开始。这种情况下,所有的图表标签都首先被移除。
艾略特波浪自动分析之后,紧接着,就可以查看贴标的几种情形了。
查看分析结果的可用选项有三:
- 查看选定波浪的贴标情形;
- 查看选定波浪后一个波浪的贴标情形;
- 查看未选定任何波浪标签情况下被分析图表部分的贴标情形。
您可以使用下述按键浏览贴标情形:3 (查看前一情形)与 4 (查看下一情形),针对第一查看选项;5 (查看前一情形)与 6 (查看下一情形),针对第二查看选项;以及针对第三查看选项的上述任何按键。
图 10 所示为之前于图 7 中自动贴标并显示的波浪的下一个贴标情形。
图 10. 选定波浪的下一个贴标情形
从图 7、9 和 10 中可以看到,有些标签呈灰色显示,即标签在开始自动贴标之前采用的颜色。这些都是分析之前于图表中显示的标签。而且,不能用鼠标选择它们。在手动与自动贴标之间,所有这些都有必要做出区分。
要将自动贴标转换为手动,您需要按下 V 键,借此,图表中的所有标签都会呈现其之前的颜色,且可供选择。但是,一旦按下 V 键,则不可能再查看贴标情形。
于自动分析之后得到的任何波浪的名称相关信息,亦可供用户使用。该信息会在分析之后立即显示于图表的顶部(图 11),前提是选择了一个标签,或是查看贴标情形的控制键被按下。
图 11. 选定波浪类型相关信息
要注意的是,自动分析基于特定的波浪规则执行。波浪识别规则存储于首次启动该程序时生成的 Rules.txt 文件中。此文件位于 MetaTrader 5 终端数据目录下的 Files 文件夹中。
3. 额外功能
图表中的任何标签,均可纳入到一个可被选择的特定标签组中。选中图表中的任何标签并按下 Tab 键,即可选中一个标签组。选择涵盖构成带有选定标签的同一个组的所有标签。要取消选择,请再次按下 Tab 键。
选择任意标签、再创建新标签,即可将标签添加到一个组。新标签会被添加到选定标签隶属的组中。
图表中每一个被选定的标签,均可如下处理:
- 利用 Del 键删除;
- 波级可分别利用 A 键降低或 S 键升高。
而且,此程序算法还配备了一套自动机制,可确定根据当前时间表显示的波级的数量。该算法基于下述原则:沿时间轴带有不同坐标的标签,不能放置到相同的柱上。而波级的数量,亦可分别利用允许降低(E 键)和升高(R 键)波级的按键实施手动控制。
4. 键盘命令列表
图 12 所示为所有适用键盘命令及其描述。
图 12. 键盘命令
总结
本文讲述了艾略特波浪半自动分析在 MetaTrader 5 中的首次开发。此程序拥有大量的独特功能:
- 波峰标签于所有时间期段图表中各柱的自动绑定;
- 通过从标签面板拖动标签及连续单击鼠标两种方式实现的波峰贴标;
- 按照所有时间期段图表中波级的优先顺序完成的波峰自动贴标;
- 自动及手动控制图表中显示的波级数量;
- 针对贴标波级创建自定义样式;
- 涵盖整个图表及其中某个部分(从一个标签到另一个)的艾略特波浪自动分析;
- 查看自动贴标的各种情形;
- 编辑波浪规则的能力;
- 利用鼠标和键盘控制贴标过程。
此次开发彰显出了 MQL5 语言的丰富资源,且有望鼓励开发人员创建复杂且有趣的程序。