OnDeinit

이 함수는 Deinit 이벤트가 발생할 때 지표 및 EA로 호출됩니다. 이것은 실행 중인 MQL5 프로그램의 초기화를 해제하는 데 사용됩니다.

void  OnDeinit(
   const int  reason         // 근거 코드 초기화 해제
   );

Parameters

reason

[in]  근거 코드 초기화 해제.

반환 값

반환값 없음

참고

다음과 같은 경우 EA 및 지표에 대해 Deinit 이벤트가 생성됩니다:

  • 심볼 또는 차트 기간의 변경으로 인해 mql5 프로그램이 다시 초기화되기 전;
  • 입력 변경으로 인한 재초기화 전;
  • mql5 프로그램 언로드 전.

근거 파라미터는 다음 값을 가질 수 있습니다:

Constant

Value

Description

REASON_PROGRAM

0

EA가 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

터미널 닫힘

EA 초기화해제 근거 코드는 UninitializeReason() 함수 또는 사전 정의된 _UninitReason 변수에서 수신할 수 있습니다.

EA용 샘플 OnInit() 및 OnDeinit() 함수

input int fake_parameter=3;      // 무효 파라미터
//+------------------------------------------------------------------+
//| Expert 초기화 함수                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- 프로그램이 컴파일된 빌드 번호를 가져옵니다
   Print(__FUNCTION__," Build #",__MQLBUILD__);
//--- 재설정 근거 코드는 OnInit()에서도 얻을 수 있습니다
   Print(__FUNCTION__," EA 재설정 중에 초기화 해제 근거 코드를 수신할 수 있습니다.");
//--- 초기화 해제 근거 코드를 가져오는 첫 번째 방법
   Print(__FUNCTION__," _UninitReason = ",getUninitReasonText(_UninitReason));
//--- 초기화 해제 근거 코드를 가져오는 두 번째 방법  
   Print(__FUNCTION__," UninitializeReason() = ",getUninitReasonText(UninitializeReason()));
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert 초기화 해제 함수                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- 초기화 해제 근거 코드를 가져오는 첫 번째 방법
   Print(__FUNCTION__," Deinitialization reason code = ",reason);
//--- 초기화 해제 근거 코드를 가져오는 두 번째 방법
   Print(__FUNCTION__," _UninitReason = ",getUninitReasonText(_UninitReason));
//--- 초기화 해제 근거 코드를 가져오는 세 번째 방법  
   Print(__FUNCTION__," UninitializeReason() = ",getUninitReasonText(UninitializeReason()));
  }
//+------------------------------------------------------------------+
//| 초기화 해제 근거 코드에 대한 텍스트 설명을 반환 |
//+------------------------------------------------------------------+
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="프로그램 "+__FILE__+" 이 컴파일되었습니다";break;
      case REASON_REMOVE:
         text="프로그램 "+__FILE__+" 이 차트에서 제거되었습니다";break;
      case REASON_TEMPLATE:
         text="차트에 새 템플릿이 적용되었습니다";break;
      default:text="또 다른 근거";
     }
//---
   return text;
  }

더 보기

OnInit, Event handling functions, Program running, Client terminal events, Uninitialization reason codes, Visibility scope and lifetime of variables, Creating and deleting objects