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