当我将自定义指标附加到图表上时,关闭MT4并重新打开它,指标会正常初始化,但在首次运行start()时每个AccountInfo()或SymbolInfo()的实例都返回0.0,从而导致抛出多个函数“零分差”错误。当我重新初始化指标(不关闭MT4)时,AccountInfo()和SymbolInfo()返回它们通常执行的值。 如果我注释掉所有依赖于这两个功能的函数,那么在重启MT4之后指标会初始化而不会引发错误。
有人有类似的问题吗?
为了澄清:仅当我将指标连接到图表时,才会出现问题,关闭MT4,然后再次重新打开;当我已经打开MT4并附加它时,AccountInfo()和SymbolInfo()返回正常值。
其他信息:
答案 0 :(得分:0)
经常会发生某些时候某些数据在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;
}