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

MQL4客户端状态检测有关函数

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

这组函数可以检测客户端的目前状态,包含运行MQL4程序的环境状态。

  • GetLastError() – 获取最新造成的错误信息
  • IsConnected() – 分析连接状态
  • IsDemo() – 分析能否是模拟账户
  • IsDllsAllowed() – 分析能否允许调用DLL函数
  • IsExpertEnabled() – 分析智能交易能否开启
  • IsLibrariesAllowed() – 分析能否允许调用库函数
  • IsOptimization() – 分析能否在优化模式中运行
  • IsStopped() – 分析智能交易能否中止
  • IsTesting() – 分析能否在试探模式中运行
  • IsTradeAllowed() – 分析能否允许交易
  • IsTradeContextBusy() – 分析交易能否忙
  • IsVisualMode() – 分析能否在可视模式下试探
  • UninitializeReason() – 获取未初始化原因
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);

}

IsConnected() – 分析连接状态
bool IsConnected()

本函数返回在客户端和实施报告中转任务的服务器之间主连接状态。假使成功建立到服务器的连接,返回true,否则,返回false。

示例:

  if(!IsConnected())    {     Print("没有连接到服务器!");

return(0);

} // 需要建立连接才可实施下面的代码 // ...

IsDemo() – 分析能否是模拟账户
bool IsDemo()

假使智能交易在模拟账户里运行,返回true,否则,返回false。

示例:

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

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

IsDllsAllowed() – 分析能否允许调用DLL函数
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);

IsExpertEnabled() – 分析智能交易能否开启
bool IsExpertEnabled()

假使智能交易开启,返回true,否则,返回false。

示例:

   while(!IsStopped())    {     ...     if(!IsExpertEnabled()) break;    }
IsLibrariesAllowed() – 分析能否允许调用库函数
bool IsLibrariesAllowed()

假使智能交易允许调用库函数,返回true,否则,返回false。

参见 IsDllsAllowed(), IsTradeAllowed().

示例:

  #import "somelibrary.ex4"     int somefunc();

... ... if(IsLibrariesAllowed()==false) { Print("不允许调用报告库");

return(0);

} // 智能交易调用外部 DLL 函数 somefunc();

IsOptimization() – 分析能否在优化模式中运行
bool IsOptimization()

假使智能交易运行在策略试探器的优化模式,返回true,否则,返回false。

示例:

  if(IsOptimization()) return(0);

IsStopped() – 分析智能交易能否中止
bool IsStopped()

假使程序(一个智能交易程序或一个脚本程序)得到了停止运行的命令,返回true,否则,返回false。在 客户端强制中止实施 以前,程序还能继续运行2.5秒。

示例:

  while(expr!=false)    {     if(IsStopped()==true) return(0);

// 长时间运行循环 // ... }

IsTesting() – 分析能否在试探模式中运行
bool IsTesting()

假使智能交易运行在试探模式中,返回true,否则,返回false。

示例:

  if(IsTesting()) Print("试探中");

IsTradeAllowed() – 分析能否允许交易
bool IsTradeAllowed()

假使智能交易程序允许交易,而且实施交易的线程没有被占用,返回true,否则,返回false。

参见 IsDllsAllowed(), IsLibrariesAllowed(), IsTradeContextBusy()

示例:

  if(IsTradeAllowed()) Print("允许交易");

IsTradeContextBusy() – 分析交易能否忙
bool IsTradeContextBusy()

假使实施交易的线程被其他智能交易占用,返回true,否则,返回false。

参见 IsTradeAllowed()

示例:

  if(IsTradeContextBusy()) Print("交易繁忙中,请稍等");

IsVisualMode() – 分析能否在可视模式下试探
bool IsVisualMode()

假使智能交易运行在“可视模式”下执行试探,返回true,否则,返回false。

示例:

  if(IsVisualMode()) Comment("可视模式开启");

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; // 准备从新开始 } //... }

标签:

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

加入VIP