9 MQL4检查函数

一组用于检查账户相关信息的函数

9.1 GetLastError(错误代码)

int GetLastError()

函数返回最后生成错误,随后特殊值last_error变量的代码存储归零。 所以, 对于GetLastError() 调用文本将返回0。

示例:

int err;

int handle=FileOpen(“somefile.dat”, FILE_READ|FILE_BIN);

if(handle<1)

{

err=GetLastError();

Print(“错误(“,err,”): “,ErrorDescription(err));

return(0);

}

9.2 IsStopped(程序是否终止)

bool IsStopped()

如果程序(智能交易或脚本)得到命令中止业务,返回TRUE。否则,返回FALSE。 在客户端中止执行之前程序业务会继续运行2.5秒。

示例:

while(expr!=false)

{

if(IsStopped()==true) return(0);

// 长运行时间循环

// …

}

9.3 IsConnected(服务器是否链接)

bool IsConnected()

在客户终端和服务器执行数据之间函数返回主要连接状态。如果连接服务器成功,返回TRUE。否则,返回FALSE。

示例:

if(!IsConnected())

{

Print(“没有连接!”);

return(0);

}

// 需要打开连接

// …

9.4 IsDemo(是否模拟账户)

bool IsDemo()

如果智能交易在模拟账户运行,返回 TRUE 。否则,返回FALSE。

示例:

if(IsDemo()) Print(“在模拟账户运行”);

else Print(“在真实账户运行”);

9.5 IsDllsAllowed(是否允许使用链接库)

bool IsDllsAllowed()

如果智能交易函数DLL允许调用,返回TRUE。否则,返回FALSE。
参见 IsLibrariesAllowed(), IsTradeAllowed().

示例:

#import “user32.dll”

int MessageBoxA(int hWnd, string szText, string szCaption,int nType);



if(IsDllsAllowed()==false)

{

Print(“DLL不允许调用。智能交易没有运行。”);

return(0);

}

// 智能交易外部调用 DLL函数

MessageBoxA(0,”an message”,”Message”,MB_OK);

9.6 IsExpertEnabled(是否允许自动交易)

bool IsExpertEnabled(    )

如果智能交易开启运行,返回TRUE。否则,返回FALSE。

示例:

while(!IsStopped())

{


if(!IsExpertEnabled()) break;

}

9.7 IsLibrariesAllowed(是否允许使用数据库)

bool IsLibrariesAllowed(    )

如果智能交易允许调用数据库函数,返回TRUE 。否则,返回FALSE。 参见 IsDllsAllowed(), IsTradeAllowed().

示例:

#import “somelibrary.ex4”

int somefunc();



if(IsLibrariesAllowed()==false)

{

Print(“不允许调用数据库”);

return(0);

}

// 智能交易调用外部 DLL 函数

somefunc();

9.8 IsOptimization(是否优化模式)

bool IsOptimization(    )

如果在策略测试中智能交易为优化模式,返回TRUE。否则,返回FALSE。

示例:

if(IsOptimization()) return(0);

9.9 IsTesting(是否测试中运行)

bool IsTesting(    )

如果智能交易在测试模式中运行,返回TRUE 。否则,返回FALSE。

示例:

if(IsTesting()) Print(“测试中”);

9.10 IsTradeAllowed(是否允许交易)

bool IsTradeAllowed(    )

如果智能交易允许交易,返回TRUE 。否则,返回FALSE。
参见 IsDllsAllowed(), IsLibrariesAllowed(), IsTradeContextBusy()

示例:

if(IsTradeAllowed()) Print(“允许交易”);

9.11 IsTradeContextBusy(是否交易繁忙)

bool IsTradeContextBusy(    )

如果其他智能交易交易忙,返回TRUE。否则,返回FALSE。
参见 IsTradeAllowed().

示例:

if(IsTradeContextBusy()) Print(“交易文本忙,请稍等”);

9.12 IsVisualMode(是否虚拟模式)

bool IsVisualMode(    )

如果智能交易用”图片模式”测试,返回TRUE 。否则,返回FALSE。

示例:

if(IsVisualMode()) Comment(“Visual mode turned on”);

9.13 UninitializeReason(初始化失败原因)

int UninitializeReason(    )

返回智能交易,自定义指标和脚本的未初始化原因代码。 返回值为未初始化原因代码之一。 此函数同样可以在函数 init() 中调用分析先前开启初始化原因。

示例:

// 这是范例

int deinit()

{

switch(UninitializeReason())

{

case REASON_CHARTCLOSE:

case REASON_REMOVE: CleanUp(); break; // 清理和抽空所有源代码

case REASON_RECOMPILE:

case REASON_CHARTCHANGE:

case REASON_参量:

case REASON_ACCOUNT: StoreData(); break; // 准备重新开始

}

//…

}

9.14 Symbol(货币对名称)

string  Symbol();

返回当前图表符号的名称。

9.15 Period(时间周期)

int  Period();

返回当前图表的时间框架。

9.16 Digits(小数位数)

int  Digits();

返回确定当前图表符号价格的小数点位数。

9.17 Point(点值)

double  Point();

返回引用货币中当前符号的点大小。

9.18 TerminalCompany(平台商名称)

string  TerminalCompany();

返回拥有客户端终端的公司名称。

示例:

Print(“Company name is “,TerminalCompany());

9.19 TerminalName(客户终端名称)

string  TerminalName();

返回客户端终端名。

示例:

 Print(“Terminal name is “,TerminalName());

9.20 TerminalPath(客户终端安装目录)

string  TerminalPath();

返回启动客户端终端的目录。

示例:

Print(“Working directory is “,TerminalPath());