AccountInfo() 和 SymbolInfo() return MT4 启动时为 0

AccountInfo() and SymbolInfo() return 0 on MT4 startup

当我将自定义指标附加到图表时,关闭 MT4 并重新打开它,指标正常初始化,但 AccountInfo() 或 SymbolInfo() 的每个实例都在 start() 的第一个 运行 returns 0.0,导致多个函数抛出 'zero divide' 错误。当我重新初始化指标(不关闭 MT4)时,AccountInfo() 和 SymbolInfo() return 他们通常做的值。 如果我注释掉所有依赖于这两个的函数,指标会在重新启动 MT4 后初始化而不会抛出错误。

有没有人遇到过类似的问题?

澄清一下:只有当我将指标附加到图表、关闭 MT4 并再次重新打开时才会出现问题;当我在 MT4 已经打开时附加它,AccountInfo() 和 SymbolInfo() return 正常值。

附加信息:

在某些时刻,某些数据在 MT4 中不可用的情况经常发生。你能做的最好的事情是检查结果是否被接受(>0 如果你调用时间、报价、其他不能为零的数据)或者检查最后一个错误,然后 Sleep(50) 再试一次。很可能第 2-5 次尝试成功,因此您需要在循环中进行。

您可能至少需要知道不能为零的帐号。收到成功结果后,所有其他数据似乎都已正确加载。

int OnInit()
   {
    if(!initializeAccountInfo())
       return(INIT_FAILED);
    // ... other checks that you need
    return(INIT_SUCCEEDED);
   }
bool initializeAccountInfo()
   {
    int accountNumber=0, attempt=0, ATTEMPTS=50, SLEEP(50);
    while(attempt<ATTEMPTS)
       {
        accountNumber=AccountInfoInteger(ACCOUNT_LOGIN);
        attempt++;
        if(accountNumber==0)
           Sleep(SLEEP);
        else
           break;
       }
    return accountNumber>0;
   }