MT4编程初级手册(2):指标源码中常用符号的说明
一、注释符:
行注释:单行的注释使用“//”;块注释:多行的注释使用“/* */”
程序不执行注释,注释内容仅供阅读或保留不用的语句,编译时不进行编译。 在MQ语言编辑器中,注释内容以灰色显示。
二、分号“;”
语句结束符,表示一个语句结束。
三、逗号“,”
分隔符,表示一个语句内部间隔,不结束语句,通常用于变量与变量之间,参数之间。
四、等于号“=”
赋值运算符,作用为把等号后面的值赋给等号前的变量中。
五、加号“+”
运算符。对于整数或小数,则表示值相加;对于字符串,则表示前后连接。
六、加加“++”
自增运算符,表示把符号前的变量值加1,例如:“i++;” 实际上进行的运算就是:“i=i+1;”的简写,表示把i的值加1。
七、加等于“+=”
表示把符号后的值加到符号前的变量中。例如“i+=2;”,实际进行的运算就是“i=i+2;”的简写,表示i的值加2。
八、双等号“==”
逻辑判断符,等于号。用于逻辑判断,双等号两边值相等,则返回布尔值“真-true”;双等号两边值不相等,则返回布尔值“假-false”。
九、叹号等号“!=”
逻辑判断符,不等于号。用于逻辑判断,不等号两边值不相等,则返回布尔值“真-true”;不等号两边值相等,则返回布尔值“假-false”。 十、“&&”
逻辑判断符“与”,“并且”。
十一、“||”
逻辑判断符“或者”。
十二、大括号“{}”
用以表示函数体,在其中写函数的语句。 {}内部为函数体语句。
MT4编程初级手册(3):自定义变量
一、自定义变量在使用前,必须先声明(定义),向系统声明变量的类型和名称。 创建时可同时进行赋值(赋默认值),也可以不赋值。MQ语法中自定义变量的名称可以使用中文字符。 例子:
int flag; 创建一个整型变量,变量名为“flag”。 bool 是否报警=flase; 创建一个布尔型变量,变量名为“是否报警”,同时,赋初值“flase”
二、变量类型和类型定义关键词 自定义变量的基本类型有:
1、整形(int):就是整数,包括负整数;
2、双精度浮点数(double):可以简单地理解为带小数位的数; 3、字符串型(string);
4、布尔型(bool):其值分别为“true、false”,即“真、假”,也可以写成“1、0”(1真,0假)。
类型定义词仅在创建和声明变量时时候使用,后面使用再变量时,如进行运算时,就不能再加这些类型定义词了。
三、附加变量(参数)
附加变量就是在程序完善后投入使用时,变量值允许用户自由更改的变量,一般用作程序参数。
一般指标,例如MACD(12,26,9)参数输入就是通过附加变量实现的,(12,26,9)分别为三个附加变量值。
定义附加变量只需在变量定义语句前加“extern” 例:
extern int 时间框架=9; 创建一个整型附加变量,变量名为“时间框架”,默认值为9,允许用户在程序外部修改参数值,或进行参数优化。
MT4编程初级手册(4):自定义函数
大家可以将自定义函数与数学函数在本质上看作是是一致的,在程序中需要用到的地方直接以函数名来调用。
例如:数学函数fuc(x,y)=5x+6y (x,y为正整数) 写成程序语句就是: double fuc(double x,double y){ double temp; temp=5*x+6*y; return(temp); }
一、同自定义变量一样,自定义函数在付诸使用前,也必须先声明设立,应定义其返回值类型、名称、参数和函数体(运算处理语句)。
函数返回值类型、名称、参数位于的函数头部(参数间以逗号分隔), 大括号中的是运算语句或者处理语句,也就是函数体部分。
return语句为函数结束语句,return后面的括号中的值为函数返回值,即函数运算处理结果。
在上面例子中,double为函数类型,表示该函数的返回值(运算结果)是小数;
x,y为参数,由于自定义变量使用之前都必须先声明,否则函数不知道参数的类型,所以要加上类型定义关键词double;
fa为函数名,有了函数名,我们就可以在需要使用的地方用fa(2,1)的格式来调用此函数; 函数体部分有三个语句:
第一句,定义一个整形变量temp(函数内部使用的变量); 第二句,用我们设定的规则计算temp的值;
第三句,函数结束,返回调用点,以temp的值作为本函数返回值。 此函数也可以简写为:double fa(double x,double y) {return(5*x+6*y);}
二、函数的类型与类型符
函数的类型就是函数返回值(运算结果)的类型,与自定义变量类型一致。 包括整型(int)、双精度浮点型(double)、字符串型(string)、布尔型(bool)等,
还有一种函数是以函数运行或进行一定的处理为目的,运行结束后不需要返回值也没有返回值的,则函数类型可以在声明中写成void(无值型) 三、函数中如果需要定义自定义变量,那么此变量作用域仅在本函数内部,函数运行结束时,这个自定义变量也就自动注销了。
上例中,有x、y、temp三个自定义变量,在函数运行时被声明创建,在函数运行结束的时侯自动消失,仅在函数内部有效,与函数外部无关,外部不可使用这些变量,需要注意的是外部可以使用与内部同名的变量但不影响内部的变量,不过为了程序的清晰性,不建议大家这么做。
四、函数的调用
函数调用非常便捷,只要函数名正确,参数个数一致,类型相同就能够正确的调用。 如我们前面创建了一个fa(x,y)函数,在程序的别处我们可以用ft(4,5)等样式来调用fa(x,y)函数运算求值。
调用时,传递参数值给fa(x,y)函数(按次序把4传给x,把5传给y),返回结果22后继续向下执行主程序。
MT4编程初级手册(5):自定义数组
一、数组是一组同类型变量的集合,可以以一个名称同时存储多个数值,由索引来调用,在实现我们EA的算法时是一个非常重要的工具。 例:int arrai[5]={5,4,3,2,1}; 这是一个数组名为arrai、包含了5个元素的整数型数组(即数组长度length为5),可以同时存储5个数据。
二、自定义数组也必须遵循“先声明,后使用”原则 声明(创建)时,必须设置类型与名称;
声明(创建)时,数组的数据元素个数可以设定也可以不设定;
数组中第一个元素的索引编号为0,第二个为1,以此类推。编号使用方括号跟在数组的后