第二十二章 程序端全局变量
这是一组用于处理全局变量的函数。
不要把 客户端的全局变量 与 MQL5程序中声明的全局范围的变量 相混淆。
自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。对全局变量的访问不仅可以设置新值,而且还读取全局变量值。
客户端的全局变量可以从客户端启动的所有MQL5程序同时访问。
函数 | 功能 |
---|---|
GlobalVariableCheck | 检测指定名称的全局变量是否存在 |
GlobalVariableTime | 返回上次访问全局变量的时间 |
GlobalVariableDel | 删除全局变量 |
GlobalVariableGet | 返回全局变量值 |
GlobalVariableName | 按全局变量列表中的索引序号返回全局变量的名称 |
GlobalVariableSet | 为全局变量设置新值 |
GlobalVariablesFlush | 强制保存全局变量的内容到磁盘中 |
GlobalVariableTemp | 为仅存在于当前客户端会话中的全局变量设置新值 |
GlobalVariableSetOnCondition | 根据状态为现存全局变量的设置新值 |
GlobalVariablesDeleteAll | 删除指定前缀的全局变量 |
GlobalVariablesTotal | 返回全局变量总数量 |
# 22.1 GlobalVariableCheck
检测指定名称的全局变量是否存在。
bool GlobalVariableCheck(
string name // 全局变量名称
);
2
3
参数
name
[in] 全局变量名称
返回值
如果全局变量存在,返回TRUE值,否则返回false值。
自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。
相关参考
# 22.2 GlobalVariableTime()
返回上次访问全局变量的时间。
datetime GlobalVariableTime(
string name // 名称
);
2
3
参数
name
[in] 全局变量名称。
返回值
函数返回上次访问的指定全局变量,调用变量获得值也需要考虑是否访问,要想获取有关错误的更详细信息,可以调用GetLastError()函数。
注意
自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。
相关参考
GlobalVariableCheck()
# 22.3 GlobalVariableDel
从客户端中删除全局变量。
bool GlobalVariableDel(
string name // 全局变量名称
);
2
3
参数
name
[in] 全局变量名称。
返回值
如果成功,函数返回TRUE值,否则返回FALSE值。要想获取有关错误的更详细信息,可以调用GetLastError()函数。
注意
自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。
# 22.4 GlobalVariableGet
返回客户端存在的全局变量的值,此函数有2个变体可以使用。
- 直接返回全局变量值。
double GlobalVariableGet(
string name // 全局变量名称
);
2
3
- 返回TRUE值或者 false值取决于函数是否成功运行。如果成功,客户端全局变量将传递到第二个形式参数中。
bool GlobalVariableGet(
string name, // 全局变量名称
double& double_var //该变量包括全局变量值
);
2
3
4
参数
name
[in] 全局变量名称。
double_var
[out] 双精度函数的变量,用于接收存储在客户端的全局变量的值。
返回值
存在的全局变量值或者发生 错误(error)时返回0,要想获取有关错误的更详细信息,可以调用GetLastError()函数。
注意
自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。
# 22.5 GlobalVariableName
通过索引序号返回全局变量名称。
string GlobalVariableName(
int index // 全局变量列表中全局变量数
);
2
3
参数
index
[in] 全局变量列表中的索引序号,应该大于或等于0,小于 GlobalVariablesTotal()函数的返回值。
返回值
全局变量的名称通过索引序号在全局变量列表中体现出来,要想获取有关错误的更详细信息,可以调用GetLastError()函数。
注意
自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。
# 22.6 GlobalVariableSet
为全局变量设置新值,如果变量不存在,系统会添加一个新的全局变量。
datetime GlobalVariableSet(
string name, // 全局变量名称
double value // 设置值
);
2
3
4
参数
name
[in] 全局变量名称。
value
[in] 新数值。
返回值
如果成功,函数返回上一修正时间,否则返回0,要想获取有关错误的更详细信息,可以调用GetLastError()函数。
注意
全局变量名称不应超过63个字符。自上次访问客户端开始,全局变量会保存在客户端4周的时间,然后它们将被自动删除。
# 22.7 GlobalVariablesFlush
强制保存全局变量的内容到磁盘中
void GlobalVariablesFlush();
返回值
无返回值。
注意
客户端会在工作结束时写入所有全局变量到磁盘中,但在突然的计算机操作失败时(如,死机、断电),数据可能丢失。该函数允许在出现意外时独立控制保存全局变量的过程。
# 22.8 GlobalVariableTemp
函数试图创建一个临时的全局变量,如果变量不存在,系统会添加一个新的临时全局变量。
bool GlobalVariableTemp(
string name // 全局变量名称
);
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 // 检测值的状态
);
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 // 所有该日期前已更改的全局变量
);
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周的时间,然后它们将被自动删除。调用全局变量不仅需要设立新值,也需要读取全局变量的值。