//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- 초기화 해제 이유 코드를 'reason' 변수로 가져옵니다.
int reason=UninitializeReason();
//--- 초기화 해제 이유가 포함된 메시지 문자열을 생성하고 해당 메시지를 저널에 보냅니다.
string message=StringFormat("%s: Uninitialize reason code: %d (%s)",__FUNCTION__, reason, UninitializeReasonDescription(reason));
Print(message);
//--- 성공
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- 'reason' 형식 변수에서 초기화 해제 이유 코드를 포함하는 메시지 문자열을 생성하고 해당 메시지를 저널로 보냅니다.
string message=StringFormat("%s: Uninitialize reason code: %d (%s)",__FUNCTION__, reason, UninitializeReasonDescription(reason));
Print(message);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
}
//+------------------------------------------------------------------+
//| 초기화 해제 이유 코드에 대한 설명을 반환합니다. |
//+------------------------------------------------------------------+
string UninitializeReasonDescription(const int reason)
{
switch(reason)
{
//--- EA가 ExpertRemove() 함수 호출 작업을 중지했습니다
case REASON_PROGRAM :
return("Expert Advisor가 ExpertRemove() 함수를 호출하여 작업을 종료했습니다.");< /t4>
//--- 차트에서 삭제된 프로그램
case REASON_REMOVE :
return("프로그램이 차트에서 삭제되었습니다.");
//--- 다시 컴파일 된 프로그램
case REASON_RECOMPILE :
return("Program has been recompiled");
//--- 심볼 또는 차트 기간이 변경됨
case REASON_CHARTCHANGE :
return("Symbol or chart period has been changed");
//--- 차트 종료됨
case REASON_CHARTCLOSE :
return("Chart has been closed");
//--- 유저에 의해 변경된 입력
case REASON_PARAMETERS :
return("Input parameters have been changed by a user");
//--- 다른 계정이 활성화되었거나 계정 설정 변경으로 인해 거래 서버에 다시 연결되었습니다
case REASON_ACCOUNT :
return("Another account has been activated or reconnection to the trade server has occurred due to changes in the account settings");
//--- 다른 차트 탬플릿이 적용됨
case REASON_TEMPLATE :
return("A new template has been applied");
//--- OnInit() 핸들러가 0이 아닌 값을 반환했습니다.
case REASON_INITFAILED :
return("This value means that OnInit() handler has returned a nonzero value");
//--- 터미널이 종료되었습니다
case REASON_CLOSE :
return("Terminal has been closed");
}
//--- 초기화 해제 이유를 알 수 없음
return("Unknown reason");
}
|