有您的持续关注
我们会做得更好

MQL4高级培训教程 第三章自定义指标编写 第一节 两个必须掌握的命令




第一节 两个必须掌握的命令

1 IndicatorCounted()
IndicatorCounted()命令仅用于自定义指标编写当中
因为随着时间的推移,新的蜡烛会产生出来。在新旧蜡烛交替的边界会出现新价格到来的同时上一个价格尚未处理完成的情况,为了避免计算错误IndicatorCounted()会有效的蜡烛总数,而Bars常量则返回实际蜡烛总数,所以笔者推荐使用IndicatorCounted()来计算蜡烛总数。
当自定义指标调入后蜡烛总数不会改变,为了避免重复计算历史数据,重复耗费计算机资源,就可以采用这个命令来控制指标计算蜡烛的总数。
指标第一次加载时,IndicatorCounted()返回0。,新价格到来之后,则返回有效柱子总数。
以下代码段是编写指标经常要用到的,直接使用limit变量可以避免指标重复计算历史数据:

int limit;
 int counted_bars=IndicatorCounted();
 //一重新计算最后一个蜡烛
 if(counted_bars>0) counted_bars--;
 limit=Bars-counted_bars;
 //一指标数组赋值
 for(int i=0; i<limit; i++)
 {
//赋值代码段
 )
 return(0);

2 iMAOnArray()
在指标编写中,我们需要经常计算一段蜡烛的平均值,内置命令iMAOnAray能够针对指定数组、指定范围、指定平均方法快速计算出平均值。

iMAOnArray()命令格式如下
double iMAOnArray(double Array[], int_total, int period, int ma_shift, int ma_method, lnt shift)
1             2            3                      4                 5                    6
参数说明:
1:指定的数组变量名:
2:计算范围,如果是整个图表就用Bars
3:平均周期,输入需要计算平均的蜡烛个数,例如计算13天的平均值就输入13.
4:平移数量,指图形平移多少个蜡烛,通常输入0为不平移。
5:平均方法,0表示计算简单移动平均数,1表示计算指数移动平均数,2表示计算平滑移动平均数,3表示计算线性移动平均数;
6:显示序列,是指该计算值在指定序号的蜡烛位显示,0表示在当前蜡烛。
例举以下代码片段说明该命令的使用方法:

//算即时速度
 for(int i=0; i<Bars-l; i++)
 {
 instant5peedeuffer[i]=((Close[i]一Close[i+1])/Point);
 }
 //计算平均速度
 for(int j=o; j<Bars-1; j++) //计算快速平均速度
 {
 FastSpeedBuffer[j]=iMAOnArray(InstantSpeedBuffer,
 Bars,
 Fast_Speed_Period,
 0,
 MA_ Method,
 j);
 }
for(int k=0; k<Bars-1; k++)//计算慢速平均速度
 S1owSpeedBuffer[k]=iMAOnArray(lnstantSpeed6uffer,
 Bars,
 Slow_ Speed_Period,
 0,
 MA_ Method,
 k);
 }

如您喜欢此文章请点下面分享按钮↴峰汇在线 » MQL4高级培训教程 第三章自定义指标编写 第一节 两个必须掌握的命令
上一篇:
已是最新文章
分享到:更多 ()