초기화 취소 이유 코드

초기화 취소 이유 코드UninitializeReason() 함수에 의해 반환됩니다. 가능 값은 다음과 같습니다:

정수

설명

REASON_PROGRAM

0

엑스퍼트 어드바이저가 ExpertRemove() 기능을 호ㅜㄹ하여 작업을 종료했습니다

REASON_REMOVE

1

프로그램이 차트에서 삭제되었습니다

REASON_RECOMPILE

2

프로그램이 다시 컴파일되었습니다

REASON_CHARTCHANGE

3

기호 또는 차트 기간이 변경되었습니다

REASON_CHARTCLOSE

4

차트가 닫혔습니다

REASON_PARAMETERS

5

입력 매개변수가 사용자에 의해 변경되었습니다

REASON_ACCOUNT

6

계정 설정 변경으로 인해 다른 계정이 활성화되었거나 거래 서버에 다시 연결되었습니다

REASON_TEMPLATE

7

새 템플릿이 적용되었습니다

REASON_INITFAILED

8

이 값은 OnInit() 처리기가 0이 아닌 값을 반환했음을 의미합니다

REASON_CLOSE

9

터미널이 닫혔습니다

초기화 취소 이유 코드는 미리 결정된 함수 OnDeinit(일시적 이유)의 매개변수로도 전달됩니다.

예:

//+------------------------------------------------------------------+
//| 텍스트 설명 가져오기                                             |
//+------------------------------------------------------------------+
string getUninitReasonText(int reasonCode)
  {
   string text="";
//---
   switch(reasonCode)
     {
      case REASON_ACCOUNT:
         text="계좌가 변경되었습니다";break;
      case REASON_CHARTCHANGE:
         text="기호 또는 시간 프레임이 변경되었습니다";break;
      case REASON_CHARTCLOSE:
         text="차트가 닫혔습니다";break;
      case REASON_PARAMETERS:
         text="입력 매개변수가 변경되었습니다";break;
      case REASON_RECOMPILE:
         text="Program "+__FILE__+" 다시 컴파일 되었습니다";break;
      case REASON_REMOVE:
         text="Program "+__FILE__+" 차트에서 삭제되었습니다";break;
      case REASON_TEMPLATE:
         text="차트에 새 템플릿이 적용되었습니다";break;
      default:text="다른 이유";
     }
//---
   return text;
  }
//+------------------------------------------------------------------+
//| 엑스퍼트 초기화 취소 함수                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- 초기화 취소 이유 코드를 가져오는 첫 번째 방법
   Print(__FUNCTION__,"_Uninitalization reason code = ",reason);
//--- 초기화 취소 이유 코드를 가져오는 두 번째 방법
   Print(__FUNCTION__,"_UninitReason = ",getUninitReasonText(_UninitReason));
  }