外汇EA编程教程:变量详解与实用指南

1 本地变量:

定义在函数内部的变量称为本地变量,它的作用范围仅限于定义它的函数内部,函数外部的代码无法访问这些变量。例如:

int funcname(int a)

{

int abc; //函数内部的变量,只能由函数内部的代码访问,函数外部无法访问变量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代码。SAXO也就是说,整个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;