16 MQL4客户端全局变量

和整体变量一起使用的一组函数。
客户端整体变量不应该与MQL4程序中的变量混合。
最后访问的整体变量可以在客户端内保存4个星期,随后将被自动删除。 对于整体变量的范文不仅仅是新值的设定,同样可以对整体变量进行读取。
在客户端从 MQL4 程序开启的客户端整体变量非常相似。

16.1 GlobalVariableCheck(检查变量)

bool GlobalVariableCheck(    string name)

如果整体变量存在,返回TRUE.否则,返回FALSE。 要获得详细的错误信息,查看GetLastError() 函数。

参量:

name      –      整体变量名称。

示例:

// 检查先前使用变量

if(!GlobalVariableCheck(“g1”))

GlobalVariableSet(“g1”,1);

16.2 GlobalVariableDel(删除变量)

bool GlobalVariableDel(    string name)

删除整体变量。 如果函数成功,返回值将是真实的,否则,它将是错误的。 要获得详细的错误信息,查看GetLastError() 函数。

参量:

name      –      整体变量名称。

示例:

// 删除名称为 “gvar_1″的整体变量(“gvar_1”);

16.3 GlobalVariableGet(读取变量)

double GlobalVariableGet(    string name)

如果错误生成,返回值为现有整体变量或0。 获得详细的错误信息, 查看GetLastError()函数。

参量:

name      –      整体变量名称。

示例:

double v1=GlobalVariableGet(“g1”);

//—- 检查函数调用结果

if(GetLastError()!=0) return(false);

//—- 继续程序

16.4 GlobalVariableName(搜索变量)

string GlobalVariableName(    int index)

由函数索引在整体变量名单返回一个整体变量的名字。 获得详细的错误信息, 查看 GetLastError()函数。

参量:

index      –      索引在整体变量名单。 它必须超出或相等于0或少于 GlobalVariablesTotal()

示例:

int var_total=GlobalVariablesTotal();

string name;

for(int i=0;i<var_total;i++)

{

name=GlobalVariableName(i);

Print(i,”: 整体变量名称 – “,name);

}

16.5 GlobalVariableSet(设置变量)

datetime GlobalVariableSet(    string name, double value)

设置整体变量的新的价格值。 如果它不存在,系统创造一个新的整体变量。 如果函数成功,返回值将是最后存取时间。 否则,返回值将是0。获得详细的错误信息,查看 GetLastError() 函数。

参量:

name      –      整体变量名称。

value      –      新的数值。

示例:

//—- 尝试设定新值

if(GlobalVariableSet(“BarsTotal”,Bars)==0)

return(false);

//—- 继续程序

16.6 GlobalVariableSetOnCondition(按条件设置变量)

bool GlobalVariableSetOnCondition(    string name, double value, double check_value)

如果当前值均等对第三参量check_value,设置现有的整体变量的新值。 如果没有整体变量,函数将生成 错误
ERR_GLOBAL_VARIABLE_NOT_FOUND (4058) 并且返回 FALSE。当成功地执行,函数返回 TRUE,否则,它返回 FALSE。 获得详细的错误信息, 查看 GetLastError() 函数。
如果整体变量的当前值与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);

}

16.7 GlobalVariablesDeleteAll(删除所有变量)

int GlobalVariablesDeleteAll(    void prefix_name)

删除整体变量。 如果命名前缀没有指定,所有整体变量将被删除。 否则,仅有那些可变物将被删除。从指定的前缀开始。 函数返回被删除的可变物计数。

参量:

prefix_name      –      将被删除的整体变量的命名前缀。

示例:

Print(GlobalVariablesDeleteAll(“test_”),” 整体删除测试”);

16.8 GlobalVariablesTotal(变量总数)

int GlobalVariablesTotal(    )

函数返回整体变量总值。

示例:

Print(GlobalVariablesTotal(),”探测整体变量”);