客服热线:18391752892

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

   日期:2019-01-12     浏览:126    
马上注册,结交更多好友,下载更多资源

您需要 登录 才可以下载或查看,没有帐号?注册 本组函数用于设计和编写自定义指标。这些函数不能用在智能交易和脚本中。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);

外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!


特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关行情
推荐行情
点击排行