外汇EA编程教程:变量详解
1 本地变量:
定义在函数内部的变量称为本地变量,它的作用范围仅限于定义它的函数内,函数外的代码无法访问该变量。例如:
int funcname(int a)
{
int abc; // 函数内部的变量,仅能被函数内的代码访问,外部无法访问;
}
2 函数参数:
函数参数的各个变量名称不能与函数内部变量重名。参数也可以指定默认值,例如:
void func(int x, double y = 0.0, bool z = true)
{
...
}
这个函数指定了y的默认值为0.0,z的默认值为true。
调用该函数时,可以不指定有默认值的参数,如func(9),相当于调用func(9, 0.0, true);如果调用func(9, 1.5),则相当于调用func(9, 1.5, true)。
一般情况下,函数参数是传值传递。在函数内部改变参数的值,不会影响到调用该函数的代码块中的变量,即使数组也是传值。
那么如何传递引用呢?通过引用传递,如果函数内部参数值改变,对应的调用该函数的代码段中的变量也会随之改变。要实现引用传递,需在函数参数类型后面添加符号'&',例如:
void func(int& x, double& y, double& z[])
{
x = 8;
}
需要注意:对于引用传递的函数参数,不能设置默认值。
函数参数的数量不能超过64个。
3 全局变量:
全局变量是与函数同级别的变量,其作用域覆盖整个MQL代码,即整个MQL代码中的任何地方都可以访问全局变量。例如:
int a = 10;
int funca()
{
Print(a); // 可访问到全局变量a
return (0);
}
int funcb()
{
Print(a); // 可访问到全局变量a
return (1);
}
4 外部变量:
如果一个变量被定义为外部变量,则EA客户端可以设置这个外部变量的值。
例如:
extern int a = 10;
extern color c = red;
