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( )。并用变量名称作为自变量。源代码如下:
要删除全局变量,可使用函数GlobalVariableDel( )函数,并用变量名称作为自变量。要删除EA中开启的所有全局变量,可使用GlobalVariableDeleteAll( )函数,并用你所定义的前缀作为自变量。源代码如下:
欲知全局变量函数的更多信息,请参见MQL中的Global variables内容。





