在mt中编写指标或EA时,iCustom()是一个非常有用的函数,它的功能是调用客户自己编写的的指标,并输出相应的指标值。 它的函数原型是这样的: double iCustom( | string symbol, int timeframe, string name, …, int mode, int shift) |
symbol: 计算指标数据上的货币对名称. NULL表示当前货币对。 timeframe:时间周期。 可以时间周期列举任意值. 0表示当前图表的时间周期。 name: 客户指标完成程序名称,也就是你的自定义指标的名称了。 …: 参量设置(如果需要)。通过的参量和他们的顺序必须与自定义指标声明的外部变量对应。 mode: 索引行。 从0到7并且必须对应以其中一个使用的索引的 SetIndexBuffer 函数。 shift: 从显示缓存采取的值的索引(转移相对当前柱特定相当数量期间前)。 这里要注意的是,自己的指标名一定要用双引号引起来,因为name参数是sting型。 有了这个功能,我们可以先编一个指标做基础,然后再需要时进行调用,并可以用不同方式,不用时间周期来输出。 实例: 比如我自己先编了一个名叫“my_Ichimoku”的指标,这个指标mt4中有,较热门的“眼镜蛇”交易系统中也用到它,其中的云图有人把它看得很神,其实没什么。另外,它的线条太多,反而看不清,所以。自己编个只带云图的。上图就是它的效果。 现在,我们又编了一个名叫my_Ichimoku_2“的指标,目的是为了可以跨时间周期来查看云图。比如第一幅图是在15分钟线上用的,而如果我想在15分钟图上查看5分钟或1小时图上的云图。除了改编my_Ichimoku之外,也可以再编一个my_Ichimoku_2,在其中调用第一个指标。假如我们想看小时图上的情况,可以用这样的句子来完成。 …… sa1Buffer = iCustom(NULL, PERIOD_H1, “my_ichimoku”, myTK, myKi, mySk, 0, iBarShift(NULL, PERIOD_H1, iTime(NULL, 0, i)));
sb1Buffer = iCustom(NULL, PERIOD_H1, “my_ichimoku”, myTK, myKi, mySk, 1, iBarShift(NULL, PERIOD_H1, iTime(NULL, 0, i))); //—(其中时间偏移用了函数iBarShift())
从上面可以看出,有了iCustom()函数,自定义指标的调用就非常方便,在希望以自定义指标为基础来编写EA时非常有用。
|