📅 财经日历 📊 实时波动 📈 大盘云图 📶 行情走势 🆚 投机情绪 🚀 今日热点

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

    2013-08-13 · 4786 阅读
    本组函数用于设计和编写自定义指标
    这些函数不能用在智能交易和脚本中。
    • IndicatorBuffers() – 指标数据缓冲区
    • IndicatorCounted() – 指标计数
    • IndicatorDigits() – 设置指标精度
    • IndicatorShortName() – 设置指标简称
    • SetIndexArrow() – 设置指标箭头符号
    • SetIndexBuffer() – 设置指标缓冲区位置
    • SetIndexDrawBegin() – 设置指标线起始位置
    • SetIndexEmptyValue() – 设置图表画线空值
    • SetIndexLabel() – 设置指标线标签
    • SetIndexShift() – 设置指标线偏移值
    • SetIndexStyle() – 设置指标线样式
    • SetLevelStyle() – 设置水平线样式
    • SetLevelValue() – 设置水平线值

    SetIndexDrawBegin() – 设置指标线起始位置[size=1em]
    1

    void SetIndexDrawBegin(int index, int begin)




    设置开始绘制指标线的柱体(指标线从什么位置开始绘制)。指标线从左边绘制到右边,已给出的柱子左边的数组值不会显示在图表或数据窗口中。设置0作为默认值,所有数据将被绘出。
    参数:
    index - 指标线。必须在0至7之间。begin - 开始绘制指标线的柱体编号。
    示例:
    [size=1em]
    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    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() – 设置图表画线空值[size=1em]
    1

    void SetIndexEmptyValue(int index, double value)




    设置图表画线空值。设置的值不绘出或不显示在数据窗口。默认值为 EMPTY VALUE。
    参数:
    index - 指标线。必须在0至7之间。value - 设置的"空值"。
    示例:
    [size=1em]
    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    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() – 设置指标线标签[size=1em]
    1

    void SetIndexLabel(int index, string text)




    设置在数据窗口和快速提示中显示的指标线说明。
    参数:
    index - 指标线。必须在0至7之间。text - 标签文本。NULL表示指标值在数据窗口中不显示。
    示例:
    [size=1em]
    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    //+------------------------------------------------------------------+

    //| 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() – 设置指标线偏移值[size=1em]
    1

    void SetIndexShift(int index, int shift)




    设置在数据窗口和快速提示中显示的指标线说明。
    参数:
    index - 指标线。必须在0至7之间。shift - 柱体(K线)偏移值。
    示例:
    [size=1em]
    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    //+------------------------------------------------------------------+

    //| 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() – 设置指标线样式[size=1em]
    1

    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 - 线的颜色。省略本参数表示颜色将保持不变
    示例:
    [size=1em]
    1

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




    Back to Top

    SetLevelStyle() – 设置水平线样式[size=1em]
    1

    void SetLevelStyle(int draw_style, int line_width, void clr)




    本函数设置输出到独立窗口的指标水平线的样式、宽度和颜色。
    参数:
    draw_style - 形状样式,可以是 划线形状样式列表 中任意一个。line_width - 线宽。有效值是1,2,3,4,5。EMPTY值表示线宽不变。clr - 线的颜色。空值CLR_NONE表示颜色不变。
    示例:
    [size=1em]
    1

    2

    //---- 红色单线显示水平

    SetLevelStyle(STYLE_SOLID,2,Red)




    Back to Top

    SetLevelValue() – 设置水平线值[size=1em]
    1

    void SetLevelValue(int level, double value)




    本函数设置在独立窗口输出的水平指标线的值。
    参数:
    level - 水平线编号,0到31。value - 给出的水平线值。clr - 线的颜色。空值CLR_NONE表示颜色不变。
    示例:
    [size=1em]
    1

    SetLevelValue(1,3.14);




    ""
    还没有人打赏,支持一下
    回复

    举报

     

    回答|共 4 个

    kylsa LV3

    发表于 2014-11-3 09:07:56 | 显示全部楼层

    看看怎么样

    diwang LV3

    发表于 2014-11-3 10:01:27 | 显示全部楼层

    没有使用说明书

    笑苍天 LV9

    发表于 2014-11-4 13:07:05 | 显示全部楼层

    看看是什么东西啊

    YYoQiIBZ LV3

    发表于 2014-11-20 21:10:02 | 显示全部楼层

    研究研究
    您需要登录后才可以回帖 登录 | 注册

    提醒: 禁止引战、谩骂、灌水内容

    微信二维码

    有问题联系客服