我有一个“设置”在我的电子邮件,当我的专家顾问遇到一个错误,并提供给我的错误代码,根据预先确定的3-4位数字错误代码在MQL4网站上的文档。
/* technically speaking,
error codes with 5+ digits are also possible,
Using:
------ */
SetUserError( 1000000 ); /*
// this will set an error-state
// with a number 1065536 -- having a bit more than the said 3 ~ 4 digits
// composed as ( 1000000 + ERR_USER_ERROR_FIRST )
*/这是为了让我能诊断出问题。
我只是想澄清我是否需要刷新错误代码(之前的错误),我在我的电子邮件中获得了错误代码,或者当我的MT4平台的日志中出现了一个新的错误时,它是否会自动刷新错误代码?
发布于 2017-01-19 15:39:54
有一个有用的函数ResetLastError()显式地将_LastError设置为零。接下来,每次调用GetLastError()函数也会产生副作用,因为它也会将零设置为_LastError变量。
无论哪种方式,嵌入(环绕)一个部分是一种常见的做法,其中需要相应地处理一些错误状态,对此:
// -------------------------------------------- // START_________________________
GetLastError(); // implicit pre-reset _LastError
ResetLastError(); // explicit pre-reset _LastError
bool an_OK_flag = OrderModify( ... ); // XTO call w ex-post _LastError
int anErrorSTATEtoHANDLE = GetLastError(); /* get a value of the _LastError
+ implicit post-reset _LastError */
// -------------------------------------------- // HANDLE ERROR-STATE(s)
switch( anErrorSTATEtoHANDLE ){
case ERR_NO_ERROR: break;
case ERR_NO_RESULT: ...
break;
case ERR_INVALID_TRADE_PARAMETERS: ...
break;
case ERR_SERVER_BUSY: ...
break;
case ERR_BROKER_BUSY: ...
break;
case ERR_TOO_MANY_REQUESTS: ...
break;
case ERR_TRADE_MODIFY_DENIED: ...
break;
...
default: break;
}
// -------------------------------------------- // FIN __________________________这使您的代码对任何类型的“遗忘”(巧合的是,未重置)的最后错误(它没有破坏您的代码执行在出现这种错误的地方,但.)健壮。这将触发“下一步”错误处理部分中不需要的行为,从而可能在电子邮件信号不存在的情况下向您发送电子邮件,但_LastError系统寄存器中的“遗忘”(un重置)值恰好与错误处理情况相匹配,从而导致发送所述电子邮件(就像存在电子邮件信号一样)(正如上面所描述的那样)。
https://stackoverflow.com/questions/41739105
复制相似问题