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

这组函数可以检测客户端的当前状态,包括运行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);
    }
Back to Top

IsConnected() – 判断连接状态

bool IsConnected()

本函数返回在客户端和执行数据中转任务的服务器之间主连接状态。如果成功建立到服务器的连接,返回true,否则,返回false。

示例:

  if(!IsConnected())
    {
     Print("没有连接到服务器!");
     return(0);
    }
  // 需要建立连接才能执行下面的代码
  // ...
Back to Top

IsDemo() – 判断是否是模拟账户

bool IsDemo()

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

示例:

  if(IsDemo()) Print("在模拟账户运行");
  else Print("在真实账户运行");
Back to Top

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);
Back to Top

IsExpertEnabled() – 判断智能交易是否开启

bool IsExpertEnabled()

如果智能交易开启,返回true,否则,返回false。

示例:

   while(!IsStopped())
    {
     ...
     if(!IsExpertEnabled()) break;
    }
Back to Top

IsLibrariesAllowed() – 判断是否允许调用库函数

bool IsLibrariesAllowed()

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

参见 IsDllsAllowed(), IsTradeAllowed().

示例:

  #import "somelibrary.ex4"
     int somefunc();
  ...
  ...
  if(IsLibrariesAllowed()==false)
    {
     Print("不允许调用数据库");
     return(0);
    }
  // 智能交易调用外部 DLL 函数
  somefunc();
Back to Top

IsOptimization() – 判断是否在优化模式中运行

bool IsOptimization()

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

示例:

  if(IsOptimization()) return(0);
Back to Top

IsStopped() – 判断智能交易是否中止

bool IsStopped()

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

示例:

  while(expr!=false)
    {
     if(IsStopped()==true) return(0);
     // 长时间运行循环
     // ...
    }
Back to Top

IsTesting() – 判断是否在测试模式中运行

bool IsTesting()

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

示例:

  if(IsTesting()) Print("测试中");
Back to Top

IsTradeAllowed() – 判断是否允许交易

bool IsTradeAllowed()

如果智能交易程序允许交易,而且执行交易的线程没有被占用,返回true,否则,返回false。

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

示例:

  if(IsTradeAllowed()) Print("允许交易");
Back to Top

IsTradeContextBusy() – 判断交易是否忙

bool IsTradeContextBusy()

如果执行交易的线程被另一个智能交易占用,返回true,否则,返回false。

参见 IsTradeAllowed()

示例:

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

IsVisualMode() – 判断是否在可视模式下测试

bool IsVisualMode()

如果智能交易运行在“可视模式”下进行测试,返回true,否则,返回false。

示例:

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

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;  // 准备重新开始
       }
     //...
    }
Back to Top

 

 


MyFxtop迈投-靠谱的外汇跟单社区,免费跟随高手做交易!

 

免责声明:本文系转载自网络,如有侵犯,请联系我们立即删除,另:本文仅代表作者个人观点,与迈投财经无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。

風險提示

MyFxtops邁投所列信息僅供參考,不構成投資建議,也不代表任何形式的推薦或者誘導行為。MyFxtops邁投非外匯經紀商,不接觸妳的任何資金。 MYFXTOPS不保證客戶盈利,不承擔任何責任。從事外彙和差價合約等金融產品的槓桿交易具有高風險,損失有可能超過本金,請量力而行,入市前需充分了解潛在的風險。過去的交易成績並不代表以後的交易成績。依據各地區法律法規,MyFxtops邁投不向中國大陸、美國、加拿大、朝鮮居民提供服務。

邁投公眾號

聯繫我們

客服QQ:981617007
Email: service@myfxtop.com

MyFxtops 邁投