MQL4编程参考文档:点击打开链接http://www.myeatrade.com/zh/mql4-reference/
clrDodgerBlue:前面的clr是color之意,如clrSnow、clrDarkBlue等。clr小写,后面的每个词首字母大写。否则MetaEditor可能认不出。
positive:美: ['pɑzətɪv],adj.肯定;确信;积极乐观的;自信的n.正片;优点;优势;阳性结果(或反应)网络
negative :美: ['neɡətɪv] ,n.否定;底片;负片;拒绝v.否定;拒绝;否定…的真实性;证伪adj.
MQL4自定义指标编写相关函数(一)
http://www.myeatrade.com/zh/391/
本组函数用于设计和编写自定义指标。这些函数不能用在智能交易和脚本中。
----------------------------------------------------------------------------------------------------
1、void IndicatorBuffers(int count)
为指标缓冲区分配内存,用于自定义指标计算。缓冲区的个数不能超过8个或者是小于在自定义缓冲区属性中所给出的值。
如果自定义指标要求额外的缓冲区用于统计,那么这个函数必须使用指定的总缓冲区数。
参数:
count - 分配缓冲区的总数。缓冲区数应该在 indicator_buffers常量值 和8之间。
-------------------------------------------------------------------------------------------------------
SetIndexBuffer() – 设置指标缓冲区位置
2、void SetIndexBuffer(int index, double array[])
将自定义指标预定义的缓冲区绑定到全局数组。需要计算指标缓冲区的个数由 IndicatorBuffers() 函数设定并且不能超过8个。如果成功,返回TRUE,否则,将返回FALSE。如果想获得更详细的信息,可以调用 GetLastError() 函数。
参数:
index - 指标线。必须是 0 - 7 之间 ,index:美: ['ɪn.deks] 指标;索引;
array[] - 存储计算指标值的数组。
个人理解:IndexBuffer为指标缓冲区(index英文有指标的意思,但也有索引的意思,即第几个指标缓冲区),指标缓冲区的个数由 IndicatorBuffers() 函数设定并且不能超过8个。SetIndexBuffer:即将第几个自定义的指标缓冲区绑定到指定数组array[]。
---------------------------------------------------------------------------------------
3、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 - 线的颜色。省略本参数表示颜色将保持不变
--------------------------------------------------------------------------------
4、
SetIndexLabel() – 设置指标线标签
void SetIndexLabel(int index, string text)
设置在数据窗口和快速提示中显示的指标线说明。
参数:
index - 指标线。必须在0至7之间。 text - 标签文本。NULL表示指标值在数据窗口中不显示。
------------------------------------------------------------------------------------------------
SetIndexDrawBegin() – 设置指标线起始位置
void SetIndexDrawBegin(int index, int begin)
作用;
从有数据开始第一个BAR,后面第"begin"开始画起
就是从什么位置开始画出曲线。因为数据都有最开始的地方,在最早的地方画线是没意义的,所以才这样用。
设置开始绘制指标线的柱体(指标线从什么位置开始绘制)。指标线从左边绘制到右边,已给出的柱子左边的数组值不会显示在图表或数据窗口中。设置0作为默认值,所有数据将被绘出。
如SetIndexDrawBegin(0, 14),则是指从最左边的bar数,第14个bar开始绘制指标图。
个人理解:这里说的第几个bar,是从左向右。而MT4系统的当前bar编号为0,向左数紧邻当前bar的编号为1,。。。
参数:
index - 指标线。必须在0至7之间。 begin - 开始绘制指标线的柱体编号。
---------------------------------------------------------------------------
OnCalculate函数
----------------------------------------------------
ArraySetAsSeries() – 设置为序列化数组
bool ArraySetAsSeries(void array[], bool set)
设定数组的排列方向。如果设置参数值为TRUE,数组将按逆序排列,也就是说,数组元素下标为0的值是最后的值。如果其值为FALSE,表明数组是一个正常的排列顺序,此函数原样返回以前的数组。
参数:
array[] - 数值型数组。 set - 数组索引顺序,true 或者 false。