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

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

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

  • 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);
//---- DataWindow 和自定义子窗口标签名称
   IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");
//---- 初始化完成
   return(0);
  }
Back to Top

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);
  }
Back to Top

    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<Tenkan) a_begin=Tenkan;
       SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_DOT);
       SetIndexBuffer(2,SpanA_Buffer);
       SetIndexDrawBegin(2,Kijun+a_begin-1);
       SetIndexShift(2,Kijun);
    //---- 在DataWindow窗口 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);
    //---- 在DataWindow窗口上 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);
      }
    Back to Top

    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);
      }
    Back to Top

    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);
    Back to Top

    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)
    Back to Top

    SetLevelValue() – 设置水平线值

    void SetLevelValue(int level, double value)

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

    参数:

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

    示例:

      SetLevelValue(1,3.14);
    Back to Top

     

     


    MyFxtop迈投-靠谱的外汇跟单社区,免费跟随高手做交易!

     

    免责声明:本文系转载自网络,如有侵犯,请联系我们立即删除,另:本文仅代表作者个人观点,与迈投财经无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

    著作权归作者所有。
    商业转载请联系作者获得授权,非商业转载请注明出处。

    風險提示

    MyFxtops邁投所列信息僅供參考,不構成投資建議,也不代表任何形式的推薦或者誘導行為。MyFxtops邁投非外匯經紀商,不接觸妳的任何資金。 MYFXTOPS不保證客戶盈利,不承擔任何責任。從事外彙和差價合約等金融產品的槓桿交易具有高風險,損失有可能超過本金,請量力而行,入市前需充分了解潛在的風險。過去的交易成績並不代表以後的交易成績。依據各地區法律法規,MyFxtops邁投不向中國大陸、美國、加拿大、朝鮮居民提供服務。

    邁投公眾號

    聯繫我們

    客服QQ:981617007
    Email: service@myfxtop.com

    MyFxtops 邁投