8.12 全局变量

8.12 全局变量


全体皆适用的变数为"global variables"。MetaTrader 有一函数集合, 可用于设定终端平均变量,这些变量可让每个目前正在运作的EA 正常使用,并假设我们知道变量名称。

MQL 使用说明称这些为"全局变量",虽然更合适的名称应叫作"终端变量" 。我们用在MQL 参照底下的Global variables 全局变量函数时搭配这一类的变量。目前,终端全局变量名目可以透过选择Tools 选项中的Global Variables 或按键盘F3看到。

使用这些变量的方法是,储存某种总体范围或静态变量到终端,若由于EA 错误无法使用,我们则可以从停止之处继续接着开始。当然,并非所有的EA 都要求这样,但较缤密的EA 将保有一个安全措施,并可以在被干扰中断时重新开始EA的运作。

预防EA 拓机的最佳方法是避免创造一个很复杂的EA 。若无法避免,则使用全局变量函数以储存目前状态到终端将有效对应意外的拓机。这个方法虽然并非安全无虞,但这已是最佳的方法了。

运用全局(终端)变量时需使用GlobalVariableSet ( )函数。第一个自变量是全局变量名称字符串;第二个自变量是一长整数类型的值,用以填写数值进去。

若你要让变量名称没有重复,可能需要建立一个全局变量前缀。在你的EA中执行一个总体范围的变量,在init( )函数中设定数值,使用目前的记号、期间、EA名称和自定义数字以建立一独特的变量前缀。

我们使用目前的记号和期间、EA 识别符号和MagicNumber 外部变量。现在,当使用GlobalVariableSet ( )设定全局变量时,可使用如上定义的前缀,加上实际的变量名称:

所以,假如我们在EURUSD 上M15 时间范围内、EA 名称为" ProfitBuster" 、11作为自定义数字、Counter 作为变量名称进行交易,则全局变量名称为EURUSD15_ProfitBuster_11_Counter 。可以依自己喜好设定规则以命名该全局变量,但建议命名时应包含上面所提的讯息。

要获取全局变量的值,可使用函数GlobalVariableGet ( ) ,并用变量名称作为自变量。源代码如下:

要删除全局变量,可使用函数GlobalVariableOel ( )函数,并用变量名称作为自变量。要删除EA 中开启的所有全局变量,可使用GlobalVariableOeleteAll ( )函数,并用你所定义的前缀作为自变量。源代码如下:

欲知全局变量函数的更多信息,请参见MQL 中的Global variables 内容。