int ErrReaction( int err)
{
switch (err)
{
case ERR_TRADE_NOT_ALLOWED :
Print ( "TRADE NOT ALLOWED ! SWITCH ON option \' Allow live trading\' (Необходимо включить опцию \'Разрешить советнику торговать\')" );
case ERR_INVALID_FUNCTION_PARAMSCNT :
case ERR_INVALID_FUNCTION_PARAMVALUE :
case ERR_INVALID_STOPS :
case ERR_INVALID_TRADE_VOLUME :
case ERR_MARKET_CLOSED :
case ERR_TRADE_DISABLED :
case ERR_NOT_ENOUGH_MONEY :
return (-err);
case ERR_NO_CONNECTION :
............................................
case ERR_BROKER_BUSY :
case ERR_TRADE_CONTEXT_BUSY :
..............................
case ERR_PRICE_CHANGED :
case ERR_OFF_QUOTES :
case ERR_REQUOTE :
.................................................
default : break ;
} //switch(err)return ( 0 );
} //int ErrReaction(int err)
처리 기능은 오류를 "복구 가능" 및 "복구 불가능"으로 구분합니다. "복구 가능"은 해결을 시도하고 복구할 수 없는 코드는 외부(호출) 프로시저에서 처리하기 위해 다시 반환됩니다.
그리고 이것은 무조건적인 영점 조정이 아니지만 last_error_fifo == 0인 경우에만 동일한 계란이 프로필에서만 더 짧습니다. 오류를 확인하기 전에 함수가 무엇을 반환했는지 확인하십시오.
테마를 개발합니다.
당신만을 위해, 참조:
OrderSend () 작업을 완료하기 위한 옵션;
1. 오류가 없습니다. 여전히 GetLastError ()를 호출합니다. 원칙적으로 이전 오류를 읽고 처리하고 0으로 재설정해도 무섭지 않습니다.
IMHO - 필요하지 않습니다.
2. 오류가 있습니다. GetLastError ()를 호출할 때 내가 이해하는 한, 많은 것이 있을 수 있지만 하나만 분석합니다.
IMHO 더 나은 옵션은 다음과 같습니다.
마지막 오류인 ErrReaction(err) 은 오류 처리입니다.
예를 들면 다음과 같습니다.
처리 기능은 오류를 "복구 가능" 및 "복구 불가능"으로 구분합니다. "복구 가능"은 해결을 시도하고 복구할 수 없는 코드는 외부(호출) 프로시저에서 처리하기 위해 다시 반환됩니다.
음, 어쨌든, 내 바퀴벌레는 각 함수가 반환된 것을 확인할 필요가 없기 때문에 더 시원합니다. 그래서 코드가 더 좋아 보입니다... 게다가, 당신은 자신의 오류 코드 를 구성할 수 있습니다.
또한 고유한 오류 코드를 구성할 수 있습니다.
우리는 어떻게 든 우리 자신을 만들기에 충분합니다.
그것은 당신의 논리에 달려 있습니다. 결국 , 각 오류의 처리를 수행할 수 있지만 이 상황에서 중요한 것만 수행할 수 있습니다.
물론 가장 중요한 모든 오류를 처리하는 기능을 갖는 것이 바람직합니다. 그러면 어드바이저에 포함된 논리가 우선 순위를 "수정"합니다.
이와 별도로, 제 질문이 주제의 주요 방향에서 벗어난 경우 주제 시작자에게 사과드립니다.
우리는 어떻게 든 우리 자신을 만들기에 충분합니다.
MQL5의 발명가는 누구를 위해 SetUserError에 그렇게 열심히 노력하고 있습니까... 그들은 스스로를 위해 65535개의 오류 코드 를 예약했으며 위의 모든 것에 대해 자신의 것을 구성할 수 있습니다. :)
당신만을 위해, 참조:
2. 오류가 있습니다. GetLastError ()를 호출할 때 내가 이해하는 한, 많은 것이 있을 수 있지만 하나만 분석합니다.
IMHO 더 나은 옵션은 다음과 같습니다.
마지막 오류인 ErrReaction(err) 은 오류 처리입니다.
vit46 :
Ознакомьтесь с этим материалом. imho, не повредит.
https://www.mql5.com/ru/forum/131373
물론 가장 중요한 모든 오류를 처리하는 기능을 갖는 것이 바람직합니다. 그러면 어드바이저에 포함된 논리가 우선 순위를 "수정"합니다.
예를 들어, 주문을 5번 열고 시도를 멈추면 충분하다고 생각하지만, 20번이 필요하다고 생각하거나 "승리할 때까지" 열어야 할 수도 있습니다.
예를 들어, 주문을 5번 열고 시도를 멈추면 충분하다고 생각하지만, 20번이 필요하다고 생각하거나 "승리할 때까지" 열어야 할 수도 있습니다.
아니, 나는 아무것도 계산하지 않습니다. 제 자신의 확고하고 확실한 의견이 없기 때문에 가장 가치 있는 오류 처리 기능을 추천해 달라고 요청합니다.