首页学院交易策略EA智能交易文章详细

MQL4客户端全局变量

外汇网2021-06-17 09:40:51 79
汇外网 - 全球专业的黄金外汇门户导航行情资讯网站

这里的 客户端全局变量 不要与MQL4程序中定义的 全局变量 混淆。

最后访问的 "客户端全局变量" 可以在客户端内保存4个星期,然后将自动删除。对于 "客户端全局变量" 的访问不仅仅是新值的设定,也可以对其执行读取。

在客户端起步的所有MQL4程序可以同期访问 "客户端全局变量"。

  • GlobalVariableCheck() – 检查全局变量能否存在
  • GlobalVariableDel() – 删除全局变量
  • GlobalVariableGet() – 获取全局变量的值
  • GlobalVariableName() – 获取指定索引的全局变量名
  • GlobalVariableSet() – 设置全局变量的值
  • GlobalVariableSetOnCondition() – 依据条件设置全局变量值
  • GlobalVariablesDeleteAll() – 删除全部全局变量
  • GlobalVariablesTotal() – 获取全局变量总数
GlobalVariableCheck() – 检查全局变量能否存在
bool GlobalVariableCheck(string name)

假使 "客户端全局变量" 存在,返回TRUE,否则,返回FALSE。

要得到详细的错误信息,查看 GetLastError() 函数。

参数:

name - 客户端全局变量名称。

示例:

  // 运用前先检查变量  if(!GlobalVariableCheck("g1"))    GlobalVariableSet("g1",1);

GlobalVariableDel() – 删除全局变量
bool GlobalVariableDel(string name)

删除 "客户端全局变量" 。假使实施成功,返回TRUE,否则,返回FALSE。

参数:

name - 客户端全局变量名称。

示例:

  //  删除名称为 "gvar_1"的客户端全局变量   GlobalVariableDel("gvar_1");

GlobalVariableGet() – 获取全局变量的值
double GlobalVariableGet(string name)

返回现有的 "客户端全局变量" 的值,假使发生错误,返回0。

参数:

name - 客户端全局变量名称。

示例:

  double v1=GlobalVariableGet("g1");

//---- 检查函数调用结果 if(GetLastError()!=0) return(false);

//---- 继续程序

GlobalVariableName() – 获取指定索引的全局变量名
string GlobalVariableGet(int index)

本函数通过全局变量列表中索引号返回 "客户端全局变量" 的名称。

参数:

index - 全局变量列表中索引号,该索引号务必大于等于0,或者差于 GlobalVariablesTotal() 返回的值。

示例:

  int    var_total=GlobalVariablesTotal();

string name; for(int i=0;i

Print(i,": 全局变量名称 - ",name);

}

GlobalVariableSet() – 设置全局变量的值
datetime GlobalVariableSet(string name, double value)

设置 "客户端全局变量" 新的值。假使它不存在,系统将创建个新的全局变量。假使函数成功,其返回值会是最后存取时间,否则,返回值会是0。

参数:

name - 客户端全局变量名称。value - 新的数值 

示例:

  //---- 试图设定新值  if(GlobalVariableSet("BarsTotal",Bars)==0)    return(false);

//---- 继续程序

GlobalVariableSetOnCondition() – 依据条件设置全局变量值
bool GlobalVariableSetOnCondition(string name, double value, double check_value)

假使 "客户端全局变量" 的目前值等于第三个参数check_value,就设置现有的全局变量的新值。假使全局变量不存在,函数将造成错误ERR_GLOBAL_VARIABLE_NOT_FOUND(4058) 而且返回FALSE;当函数实施成功,返回TRUE,否则,返回FALSE。

假使全局变量的目前值与check_value不同,函数将返回FALSE。

函数为 "客户端全局变量" 给予了强大的访问能力,这就是为何在一个客户端内同期运行的几个智能交易程序用它作为通信信号执行相互通信的原因。

参数:

name - 客户端全局变量名称。value - 新的数值。check_value - 与目前全局变量的值对比较的值。

示例:

  int init()    {     //---- 创建客户端全局变量     GlobalVariableSet("DATAFILE_SEM",0);

//... } int start() { //---- 试图锁住公共资源 while(!IsStopped()) { //---- 锁住 if(GlobalVariableSetOnCondition("DATAFILE_SEM",1,0)==true) break; //---- 可以删除变量吗? if(GetLastError()==ERR_GLOBAL_VARIABLE_NOT_FOUND) return(0);

//---- 等候 Sleep(500);

} //---- 资源被锁 // ...做些工作 //----解锁资源 GlobalVariableSet("DATAFILE_SEM",0);

}

GlobalVariablesDeleteAll() – 删除全部全局变量
int GlobalVariablesDeleteAll(void prefix_name)

删除 "客户端全局变量"。假使全局变量名称的前缀没有指定,所有全局变量将被删除,否则,只有那些符合指定前缀开头的变量被删除。函数返回被删除的变量个数。

参数:

prefix_name - 要被删除的全局变量名称前缀。

示例:

  Print(GlobalVariablesDeleteAll("test_")," test_为开头的变量被删除");

GlobalVariablesTotal() – 获取全局变量总数
int GlobalVariablesTotal()

获取 "客户端全局变量" 的总数。

示例:

  Print(GlobalVariablesTotal(),"全局变量检测到");

标签:

随机快审展示
加入快审,优先展示

加入VIP