首页学院交易策略EA智能交易文章详细

MQL4自定义指标编撰有关函数(二)

外汇网2021-06-17 09:40:46 136
汇外网 - 全球专业的黄金外汇门户导航行情资讯网站

本组函数用于设计和编撰自定义指标。

这些函数不能用在智能交易和脚本中。

  • IndicatorBuffers() – 指标报告缓冲区
  • IndicatorCounted() – 指标计数
  • IndicatorDigits() – 设置指标精度
  • IndicatorShortName() – 设置指标简称
  • SetIndexArrow() – 设置指标箭头符号
  • SetIndexBuffer() – 设置指标缓冲区位置
  • SetIndexDrawBegin() – 设置指标线起始位置
  • SetIndexEmptyValue() – 设置图表画线空值
  • SetIndexLabel() – 设置指标线标签
  • SetIndexShift() – 设置指标线偏移值
  • SetIndexStyle() – 设置指标线样式
  • SetLevelStyle() – 设置水平线样式
  • SetLevelValue() – 设置水平线值
SetIndexDrawBegin() – 设置指标线起始位置
void SetIndexDrawBegin(int index, int begin)

设置开始绘制指标线的柱体(指标线从什么位置开始绘制)。指标线从左边绘制到右边,已给出的柱子左边的数组值不会表明在图表或报告窗口中。设置0作为默认值,所有报告将被绘出。

参数:

index - 指标线。务必在0到7之间。 begin - 开始绘制指标线的柱体编号。 

示例:

int init()  {//----运用2个更多的缓冲区用于计算。   IndicatorBuffers(3);

//----画线设置 SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);

SetIndexDrawBegin(0,SignalSMA);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);

//---- 设置 3 个指标缓冲区位置 SetIndexBuffer(0,ind_buffer1);

SetIndexBuffer(1,ind_buffer2);

SetIndexBuffer(2,ind_buffer3);

//---- Data万得ow 和自定义子窗口标签名称 IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");

//---- 初始化完成 return(0);

}

SetIndexEmptyValue() – 设置图表画线空值
void SetIndexEmptyValue(int index, double value)

设置图表画线空值。设置的值不绘出或不表明在报告窗口。默认值为 EMPTY VALUE。

参数:

index - 指标线。务必在0到7之间。 value - 设置的"空值"。 

示例:

int init()  {//----设置 2 个指标缓冲区位置    SetIndexBuffer(0,ExtUppperBuffer);

SetIndexBuffer(1,ExtLowerBuffer);

//---- 画出参数设置 SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,217);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,218);

//---- 值为 0 不表明 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

    SetIndexBuffer(2,SpanA_Buffer);

    SetIndexDrawBegin(2,Kijun+a_begin-1);

    SetIndexShift(2,Kijun);

    //---- 在Data万得ow窗口 Up Kumo 线不表明 SetIndexLabel(2,NULL);

    SetIndexStyle(5,DRAW_LINE,STYLE_DOT);

    SetIndexBuffer(5,SpanA2_Buffer);

    SetIndexDrawBegin(5,Kijun+a_begin-1);

    SetIndexShift(5,Kijun);

    SetIndexLabel(5,"Senkou Span A");

    //---- SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_DOT);

    SetIndexBuffer(3,SpanB_Buffer);

    SetIndexDrawBegin(3,Kijun+Senkou-1);

    SetIndexShift(3,Kijun);

    //---- 在Data万得ow窗口上 Down Kumo 线不表明 SetIndexLabel(3,NULL);

    //---- SetIndexStyle(6,DRAW_LINE,STYLE_DOT);

    SetIndexBuffer(6,SpanB2_Buffer);

    SetIndexDrawBegin(6,Kijun+Senkou-1);

    SetIndexShift(6,Kijun);

    SetIndexLabel(6,"Senkou Span B");

    //---- SetIndexStyle(4,DRAW_LINE);

    SetIndexBuffer(4,Chinkou_Buffer);

    SetIndexShift(4,-Kijun);

    SetIndexLabel(4,"Chinkou Span");

    //---- return(0);

    }

    SetIndexShift() – 设置指标线偏移值
    void SetIndexShift(int index, int shift)

    设置在报告窗口和迅速提示中表明的指标线表明。

    参数:

    index - 指标线。务必在0到7之间。 shift - 柱体(K线)偏移值。 

    示例:

    //+------------------------------------------------------------------+//| 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);

    //---- 设置 3 个指标缓冲区位置 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 - 线型。可以应用一个像素的粗线,可以是 划线形状样式列表 其中一个。EMPTY值表明线型不变。width - 线宽。有效值是1,2,3,4,5。EMPTY值表明线宽不变。clr - 线的颜色。省略本参数表明颜色将维持不变

    示例:

      SetIndexStyle(3, DRAW_LINE, EMPTY, 2, Red);

    SetLevelStyle() – 设置水平线样式
    void SetLevelStyle(int draw_style, int line_width, void clr)

    本函数设置输出到独立窗口的指标水平线的样式、宽度和颜色。

    参数:

    draw_style - 形状样式,可以是 划线形状样式列表 中任意一个。 line_width - 线宽。有效值是1,2,3,4,5。EMPTY值表明线宽不变。clr - 线的颜色。空值CLR_NONE表明颜色不变。

    示例:

      //---- 红色单线表明水平   SetLevelStyle(STYLE_SOLID,2,Red)
    SetLevelValue() – 设置水平线值
    void SetLevelValue(int level, double value)

    本函数设置在独立窗口输出的水准指标线的值。

    参数:

    level - 水平线编号,0到31。 value - 给出的水准线值。clr - 线的颜色。空值CLR_NONE表明颜色不变。

    示例:

      SetLevelValue(1,3.14);

    标签:

    随机快审展示
    加入快审,优先展示

    加入VIP