第二十二章 程序端全局变量

这是一组用于处理全局变量的函数。

不要把 客户端的全局变量 与 MQL5程序中声明的全局范围的变量 相混淆。

自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。对全局变量的访问不仅可以设置新值,而且还读取全局变量值。

客户端的全局变量可以从客户端启动的所有MQL5程序同时访问。

函数 功能
GlobalVariableCheck 检测指定名称的全局变量是否存在
GlobalVariableTime 返回上次访问全局变量的时间
GlobalVariableDel 删除全局变量
GlobalVariableGet 返回全局变量值
GlobalVariableName 按全局变量列表中的索引序号返回全局变量的名称
GlobalVariableSet 为全局变量设置新值
GlobalVariablesFlush 强制保存全局变量的内容到磁盘中
GlobalVariableTemp 为仅存在于当前客户端会话中的全局变量设置新值
GlobalVariableSetOnCondition 根据状态为现存全局变量的设置新值
GlobalVariablesDeleteAll 删除指定前缀的全局变量
GlobalVariablesTotal 返回全局变量总数量

# 22.1 GlobalVariableCheck

检测指定名称的全局变量是否存在。

bool  GlobalVariableCheck( 
   string  name      // 全局变量名称 
   );
1
2
3

参数

name

[in] 全局变量名称

返回值

如果全局变量存在,返回TRUE值,否则返回false值。

自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。

相关参考

# 22.2 GlobalVariableTime()

返回上次访问全局变量的时间。

datetime  GlobalVariableTime( 
   string  name      // 名称 
   );
1
2
3

参数

name

[in] 全局变量名称。

返回值

函数返回上次访问的指定全局变量,调用变量获得值也需要考虑是否访问,要想获取有关错误的更详细信息,可以调用GetLastError()函数。

注意

自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。

相关参考

GlobalVariableCheck()

# 22.3 GlobalVariableDel

从客户端中删除全局变量。

bool  GlobalVariableDel( 
   string  name      // 全局变量名称 
   );
1
2
3

参数

name

[in] 全局变量名称。

返回值

如果成功,函数返回TRUE值,否则返回FALSE值。要想获取有关错误的更详细信息,可以调用GetLastError()函数。

注意

自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。

# 22.4 GlobalVariableGet

返回客户端存在的全局变量的值,此函数有2个变体可以使用。

  1. 直接返回全局变量值。
double  GlobalVariableGet( 
   string  name      // 全局变量名称 
   );
1
2
3
  1. 返回TRUE值或者 false值取决于函数是否成功运行。如果成功,客户端全局变量将传递到第二个形式参数中。
bool  GlobalVariableGet( 
   string  name,              // 全局变量名称 
   double& double_var         //该变量包括全局变量值 
   );
1
2
3
4

参数

name

[in] 全局变量名称。

double_var

[out] 双精度函数的变量,用于接收存储在客户端的全局变量的值。

返回值

存在的全局变量值或者发生 错误(error)时返回0,要想获取有关错误的更详细信息,可以调用GetLastError()函数。

注意

自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。

# 22.5 GlobalVariableName

通过索引序号返回全局变量名称。

string  GlobalVariableName( 
   int  index      // 全局变量列表中全局变量数 
   );
1
2
3

参数

index

[in] 全局变量列表中的索引序号,应该大于或等于0,小于 GlobalVariablesTotal()函数的返回值。

返回值

全局变量的名称通过索引序号在全局变量列表中体现出来,要想获取有关错误的更详细信息,可以调用GetLastError()函数。

注意

自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。

# 22.6 GlobalVariableSet

为全局变量设置新值,如果变量不存在,系统会添加一个新的全局变量。

datetime  GlobalVariableSet( 
   string  name,      // 全局变量名称 
   double  value      // 设置值 
   );
1
2
3
4

参数

name

[in] 全局变量名称。

value

[in] 新数值。

返回值

如果成功,函数返回上一修正时间,否则返回0,要想获取有关错误的更详细信息,可以调用GetLastError()函数。

注意

全局变量名称不应超过63个字符。自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。

# 22.7 GlobalVariablesFlush

强制保存全局变量的内容到磁盘中

void GlobalVariablesFlush(); 返回值

无返回值。

注意

客户端会在工作结束时写入所有全局变量到磁盘中,但在突然的计算机操作失败时(如,死机、断电),数据可能丢失。该函数允许在出现意外时独立控制保存全局变量的过程。

# 22.8 GlobalVariableTemp

函数试图创建一个临时的全局变量,如果变量不存在,系统会添加一个新的临时全局变量。

bool  GlobalVariableTemp( 
   string  name      // 全局变量名称 
   );
1
2
3

参数

name

[in] 临时全局变量名称。

返回值

如果成功,函数返回true值,否则是 false 值,要想获取有关错误的更详细信息,可以调用GetLastError()函数。。

注意

临时的全局变量只在客户端运行时存在,在客户端停止工作时会自动删除。执行函数GlobalVariablesFlush() 时,临时全局变量不会写入到磁盘里。

建立临时全局变量以后,可以像客户端全局变量一样访问并修改。

# 22.9 GlobalVariableSetOnCondition

根据状态为现存全局变量的设置新值。如果当前值等于第三个形式参数check_value,则设置现有全局变量的新值。如果没有全局变量,该函数将生成错误ERR_GLOBALVARIABLE_NOT_FOUND(4501),并返回false。

bool  GlobalVariableSetOnCondition( 
   string  name,            // 全局变量名称 
   double  value,           // 条件是true下的变量新值 
   double  check_value      // 检测值的状态 
   );
1
2
3
4
5

参数

name

[in] 全局变量名称。

value

[in] 新值。

check_value

[in] 检测当前全局变量值。

返回值

如果成功,函数返回true值,否则返回false值。要想获取有关错误的更详细信息,可以调用GetLastError()函数。如果当前全局变量值不同于check_value,函数返回false。

注意

函数将为全局变量提供自动通道,所以它可以提供一个信号量在同一个客户终端内同时被几个EA调用。

# 22.10 GlobalVariablesDeleteAll

删除客户端的全局变量。

int  GlobalVariablesDeleteAll( 
   string     prefix_name=NULL,     // 所有带有前缀的全局变量 
   datetime   limit_data=0          // 所有该日期前已更改的全局变量 
   );
1
2
3
4

参数

prefix_name=NULL

[in] 将被删除的全局变量的命名前缀。如果指定前缀是NULL或者空字符串,所有满足数据标准的变量都会被删除。

limit_data=0

[in] 通过上次修正时间来选择全局变量,函数删除在此日期之前改变的全局变量,如果将此参数设为0,则表示忽悠这个条件,意即所有满足第一个标准(前缀)的全局变量都会被删除。

返回值

删除变量数量。

注意

如果每个选项都设置为0 (prefix_name = NULL 并且 limit_data = 0), 则此函数将删除终端所有的全局变量。如果所有的参数都是指定的,则删除与2个参数相关的全局变量。

自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。

# 22.11 GlobalVariablesTotal

返回客户端所有全局变量的数量。 int GlobalVariablesTotal(); 返回值

全局变量的数量。

注意

自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。调用全局变量不仅需要设立新值,也需要读取全局变量的值。