MQL5:在EA和脚本程序中引用指标
最近刚对MQL5语言有一点了解。
在写指标、EA的时候可以参考的、有用的资料除了MQL5自带的参考,能百度到的实在是少之又少。
也可能是我自己找到资料的能力有限。
今天通过看MQL5自带的参考文档,在脚本和EA中得到了想要的指标计算值。
果然多看看参考文档是没有错的。
那废话不说,看看我是怎么做的吧。
大致分为三步
1.使用 #property 声明引用的指标名;
2.使用 iCustom 函数,该函数返回能够连接指定到指标的句柄;
3.使用 CopyBuffer 函数,复制引用指标中的指定数组。
步骤清楚后,可能有的人会去认真看看参考文档。如果不太想看参考文档的(是本人),可以接着往下看。
第一步 声明
这步不写也不会有什么问题,目的是为了以后再看代码的时候知道自己做了什么,保持一个良好的编程习惯
比如我要引用的指标名为 zzd,所以声明就应该写成:
#property tester_indicator "zzd.ex5"
第二步 使用 iCustom 函数
这里放个函数链接 iCustom
然后看看 iCustom 函数的参数列表。
- symbol 参数填 NULL 就代表当前图表的交易品种。
- period 参数填 0 就代表当前图表的周期。
3 .name 参数填的是你需要引用的指标名,比如我要引用的是 zzd 这个指标,它存放indicators目录下,如下图所示:
存放在此目录下, 在这个参数中就只需要填你要引用的指标的名字即可。此处我填的就是 zzd 。 - ••• 省略部分填的是你引用的指标的参数列表。zzd指标的参数列表为这部分最好需要写到你的EA 或 脚本 中 ,这样就可以通过外部输入来控制引用指标得到你想要的值了。
所以根据参数介绍,我的 iCustom 函数应该这么写:
定义: int zzd_handle;
执行返回结果如下图
第三步 使用CopyBuffer复制引用指标中的指定数组
同样,先放上官方给的函数 CopyBuffer
然后该函数的参数列表如下图所示(此处引用的是第一个函数模板):
indicator_handle 参数 填你在第二步中得到的句柄
buffer_num 参数 填你想要复制引用指标中数组的编号
start_pos 参数 填你想要复制引用指标数组的数组起始位置下标
count 参数 填复制终止位置
buffer[] 参数 参数 填你自定义用于存放复制来的数据的数组
在本文引用的 zzd 指标中,有七个指标数组,编号为0~6。
在我写的EA中,定义如下7个数组:
我想复制指标中的所有数组,所以我的CopyBuffer应该这么写:
这样一来,就可以将 zzd 指标中的计算值 给复制过来了。
如果说的有错还请大佬指正,欢迎交流。