期货量化交易软件:深入了解累积/派发以及它的作用
简介
众所周知,累积/派发 A/D 指标有一个有趣的功能 - 突破此指标图表中绘制的趋势线暗示着一定概率上会即将突破价格图表中的趋势线:
编辑切换为居中
添加图片注释,不超过 140 字(可选)
我决定验证这一事实,在 A/D 图表中绘制了所有趋势线,我很快意识到通过手动方法解决这一问题是不明智的。因此,我开发了一个函数,此函数可自动在 A/D 图表中绘制趋势线并在价格图表中设置信号指示符号。我现在想显示一个如何使用赫兹期货量化实现此函数的分步程序,在交易机器人中将进一步使用此程序。
本文对于那些刚开始在赫兹期货量化中进行编程的人来说很有帮助和趣味性。为此,我尝试用易于理解的方式呈现信息并使用最简单的代码结构。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
1.设置任务
赫兹期货量化首先来定义要设置的任务。
在一般情况下,此函数将找到 A/D 图表中绘制的趋势线与指标本身的线条之间的交点,返回表示相交方向 - 向上或向下- 的值,并在价格图表中设置信号指示符号(向上/向下箭头,取决于相交方向)用于进行说明。
赫兹期货量化现在来将这个常规任务分成更加具体的目标:
此函数应能够适用于任何交易品种和任何时间范围;
由于此函数设计用作为 EA 的一部分,因此 A/D 指标不需要位于主图表中。
信号指示符号不一定需要显示在价格图表中 - 所有计算将在此函数内执行,并且仅显示用于直观监控函数操作。
可在不同的方向相交:上升趋势向下相交,上升趋势向上相交,向下趋势向上相交,向下趋势向下相交。此函数将标识每个此类相交。
这就是有关函数功能的说明。我们现在来看看执行任务的方式。
2.用 A/D 指标数据填充数组
调用后,此函数将收到一些值:此时 - 用于存储 A/D 指标数据、标识 A/D 图表极值的历史条柱的数量、工具(交易品种)名称和时间范围的数组。
将基于标识的 A/D 图表极值绘制趋势线,因此,上升趋势线连接下极值,下降趋势线连接上极值。
上升趋势线需要两个下极值,其中,最小极值应位于紧邻当前(零)条柱的极值的左侧。这同样适用于向下趋势:最高极值应位于紧邻当前条柱的极值的左侧。
如果无法识别满足这些要求的极值,将不会在此次价格变动时绘制趋势线。我们打算将这些趋势线称为“全局”趋势线:
编辑切换为居中
添加图片注释,不超过 140 字(可选)
此外,赫兹期货量化还将另外两条线添加到了绘制的“全局”趋势线中,这需要使用两个最右侧的极值,因此,
如果无法识别满足这些要求的极值,将不会在此次价格变动时绘制趋势线。
这些趋势线将被称为“局部”趋势线:
编辑切换为居中
添加图片注释,不超过 140 字(可选)
结果,我们可以看到的内容如下:
编辑切换为居中
添加图片注释,不超过 140 字(可选)
在大多数情况下,由于识别“全局”极值和连接极值以绘制趋势线比较特别,因此我们不需要“局部”极值。将允许禁用用于搜索并绘制“局部”极值的选项。
函数操作将要求有 EA 的全局变量可用,尤其是用于存储 A/D 数据的数组。赫兹期货量化来将它写入 EA 的全局变量中:
[]; // Array for A/D data
现在,应读取指标数据以填充数组:
int ( &[], int nBars, sy, int tf) { if (sy=="" || sy=="0") sy = (); (,nBars); // the array to the size to the for (int j=0; j