EA课堂03——关于iCustom函数.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:15 大小:78KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

EA课堂03——关于iCustom函数.doc

EA课堂03——关于iCustom函数.doc

预览

免费试读已结束,剩余 5 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

万意达智能产品开发档案编程学堂-------------------------------------------------------------------------------------------------关于iCustom()函数在开发EA的过程中,我们常常需要使用自己编写的技术指标,而iCustom()函数正是为这种调用而提供的一个特殊函数。虽然在MetaQuotesLanguage4的参考文档中iCustom()函数被列为技术指标函数(Technicalindicators),但是iCustom()并不是技术指标函数,而是调用用户指定技术指标的一个工具(函数)。尽管iCustom()不是技术指标函数,但它却非常实用,因此我们必须认识它!一、MT4中的函数与指标无论是系统自带函数(如iMA()、iMACD()、iBands()等等),还是自己编写的功能函数,通常都由二部分组成:①函数的返还值;②函数的参数列表。指标也不例外。所谓调用指标或是函数,无非就是如何传递参数和如何得到结果二种情形,因此要弄清如何传递参数和如何得到结果,就要先了解函数和指标对返回值和参数列表有何不同。比如系统函数iMA()的返还值就是对应K线的移动平均值(为double类型),其参数列表包括:stringsymbol-货币对名称,NULL表示当前图表的货币对。零位意味当前标志。inttimeframe-图表时间周期,0表示当前图表时间周期。intperiod-移动平均值计算周期。intma_shift-指标线垂直偏移量intma_method-移动平均值计算方法intapplied_price-计算移动平均值的价格样本intshift-对应计算移动平均值的K线柱号那么指标又是怎样表现的呢,现以自定义指标iTrend.mq4为例来说明技术指标的返回值和参数列表的表现形式。⑴iTrend.mq4文档//+------------------------------------------------------------------+//|iTrend.mq4|//+------------------------------------------------------------------+#propertyindicator_separate_window#propertyindicator_buffers2#propertyindicator_color1LimeGreen#propertyindicator_color2Red//----externintBands_Period=20;externintBands_Deviation=2;externintPower_Period=13;//--externintiBandsMode=0;externintiPowerPrice=0;externintiCurrentPrice=0;//----doubleBufferA[],BufferB[];//+------------------------------------------------------------------+intinit(){//----IndicatorBuffers(2);SetIndexStyle(0,DRAW_LINE);SetIndexStyle(1,DRAW_LINE);SetIndexBuffer(0,BufferA);SetIndexBuffer(1,BufferB);//----return(0);}//+------------------------------------------------------------------+intstart(){intCurrentBar,Bands_Mode;doublePower_Price,CurrentPrice;//----switch(iBandsMode){case1:Bands_Mode=MODE_LOW;break;case2:Bands_Mode=MODE_HIGH;break;default:Bands_Mode=MODE_MAIN;break;}//--switch(iPowerPrice){case1:Power_Price=PRICE_OPEN;break;case2:Power_Price=PRICE_HIGH;break;case3:Po