MQL4自定义指标编写函数指南(二)

本组函数主要用于设计和编写自定义指标,在开发过程中发挥着重要作用。

需要特别说明的是,这些函数仅供自定义指标使用,不能应用于智能交易系统或脚本中。

IndicatorBuffers() – 配置指标数据缓冲区

IndicatorCounted() – 获取已计算的指标数量

IndicatorDigits() – 设定指标精度位数

IndicatorShortName() – 定义指标显示简称

SetIndexArrow() – 定义指标箭头符号

SetIndexBuffer() – 配置指标缓冲区索引

SetIndexDrawBegin() – 指定指标线起始绘制位置

SetIndexEmptyValue() – 定义图表空值显示方式

SetIndexLabel() – 设定指标线标签名称

SetIndexShift() – 设定指标线偏移量

SetIndexStyle() – 定义指标线样式

SetLevelStyle() – 设定水平线样式

SetLevelValue() – 设定水平线数值

SetIndexDrawBegin() – 设置指标线起始位置

void SetIndexDrawBegin(int index, int begin) 该函数用于指定指标线开始绘制的柱体序号。指标线从左向右绘制,EBC金融集团在给定起始点左侧的数组数值不会在图表或数据窗口中显示。默认值为0,表示绘制所有数据。参数说明:index为指标线编号,取值范围0至7;begin为开始绘制的柱体序号。示例代码如下:

int init() {// 使用两个额外缓冲区进行计算 IndicatorBuffers(3);// 设定画线方式 SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3); SetIndexDrawBegin(0,SignalSMA); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);// 配置缓冲区索引 SetIndexBuffer(0,ind_buffer1); SetIndexBuffer(1,ind_buffer2); SetIndexBuffer(2,ind_buffer3);// 设置标签名称 IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");// 初始化完成 return(0); }

SetIndexEmptyValue() – 设置图表空值

void SetIndexEmptyValue(int index, double value) 用于设置图表中的空值,该数值不会被绘制或显示在数据窗口中,默认空值为EMPTY_VALUE。参数包括index(指标线编号,0到7之间)和value(设置的“空值”)。示例:

int init() {// 配置缓冲区 SetIndexBuffer(0,ExtUppperBuffer); SetIndexBuffer(1,ExtLowerBuffer);// 设定画线样式 SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,217); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,218);// 设定空值不显示 SetIndexEmptyValue(0,0.0); SetIndexEmptyValue(1,0.0);// 设定标签 SetIndexLabel(0,"Fractal Up"); SetIndexLabel(1,"Fractal Down");// 初始化完成 return(0); }

SetIndexLabel() – 设置指标线标签

void SetIndexLabel(int index, string text) 用于设定在数据窗口和快速提示中显示的指标线说明。参数index为指标线编号(0到7),text为标签文本,若设为NULL则指标值不在数据窗口中显示。示例:

//+------------------------------------------------------------------+//| Ichimoku Kinko Hyo initialization function |//+------------------------------------------------------------------+int init() {//---- SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,Tenkan_Buffer); SetIndexDrawBegin(0,Tenkan-1); SetIndexLabel(0,"Tenkan Sen");//---- SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,Kijun_Buffer); SetIndexDrawBegin(1,Kijun-1); SetIndexLabel(1,"Kijun Sen");//---- a_begin=Kijun; if(a_begin

SetIndexShift() – 设置指标线偏移值

void SetIndexShift(int index, int shift) 用于设定指标线在图表中的偏移量,影响显示柱体位置。参数index为指标线编号(0到7),shift为柱体偏移值。示例:

//+------------------------------------------------------------------+//| Alligator initialization function |//+------------------------------------------------------------------+int init() {//---- 设定指标线偏移 SetIndexShift(0,JawsShift); SetIndexShift(1,TeethShift); SetIndexShift(2,LipsShift);//---- 设定指标线跳过位置 SetIndexDrawBegin(0,JawsShift+JawsPeriod); SetIndexDrawBegin(1,TeethShift+TeethPeriod); SetIndexDrawBegin(2,LipsShift+LipsPeriod);//---- 配置缓冲区 SetIndexBuffer(0,ExtBlueBuffer); SetIndexBuffer(1,ExtRedBuffer); SetIndexBuffer(2,ExtLimeBuffer);//---- 设定画线样式 SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_LINE); SetIndexStyle(2,DRAW_LINE);//---- 设定指标线标签 SetIndexLabel(0,"Gator Jaws"); SetIndexLabel(1,"Gator Teeth"); SetIndexLabel(2,"Gator Lips");//---- 初始化完成 return(0); }

SetIndexStyle() – 设置指标线样式

void SetIndexStyle(int index, int type, void style, void width, void clr) 用于为指定的指标线设置类型、样式、宽度和颜色。参数说明:index为指标线编号(0到7);type为形状样式,可选自划线样式列表;style为线型,适用于单像素宽线,可省略;width为线宽,有效值1到5,可省略;clr为颜色,可省略。

示例:
SetIndexStyle(3, DRAW_LINE, EMPTY, 2, Red);

SetLevelStyle() – 设置水平线样式

void SetLevelStyle(int draw_style, int line_width, void clr) 用于设置输出到独立窗口的指标水平线的样式、宽度和颜色。参数包括draw_style(形状样式,可选自划线样式列表)、line_width(线宽,有效值1到5,可省略)和clr(颜色,可省略)。

示例:
SetLevelStyle(STYLE_SOLID,2,Red)

SetLevelValue() – 设置水平线值

void SetLevelValue(int level, double value) 用于设置在独立窗口中输出的水平指标线的数值。参数level为水平线编号(0到31),value为指定的水平线值。

示例:
SetLevelValue(1,3.14);