본문 바로가기
트레이딩/메타트레이더 코딩

OnInit, OnDeinit . EA에서 1회만 실행 위한 코드 구조

by i.got.it 2025. 3. 4.

 

개요  

- 메타트레이더 EA의  필수 이벤트 핸들러 함수인 OnInit, OnDeinit 이 실행되는  시점은 EA 로딩 , 언로딩 시점 외에도 입력 파라미터 변경, 챠트의 타임프레임 변경 시 등에서도 여러 번 실행되기 때문에 EA 실행 이후 1회만 실행되어야 하는 것들 실행 위한 코드 작성법.  

 

 

아래 코드는 가장 기본적인 OnInit, OnDeinit 함수 형태이다. 

int OnInit()
{


    return INIT_SUCCEEDED; 
}

void OnDeinit(const int reason)
{

}

 

 

 

OnInit, OnDeinit 에서 EA 실행 이후 1회만 실행 위한 코드 구조 

- 요점 

OnDeinit 실행될때마다 인자로 전달되는 OnDeinit 사유를 전역 변수 REASON_USING_IN_ONINIT (초기화는 -1로 했음) 라는 변수에 받게 하고 OnInit 실행 시 이 변수값을 참조하여 EA 실행 이후 첫 실행되는 OnInit 시점에서 처리할 사항, 사용자 입력이 변경된 경우 처리할 사항 등을 분리 처리 하도록 한다. 

EA 실행이후 첫 실행되는 OnInit에서 주로 이뤄지는 처리는 클래스 인스턴스 동적 생성류이다.

동적 생성한 것들을 제거하는 것은 OnDeinit 의  OnlyOnceExec_OnDeinit();  에서 이뤄지게 한다. 



// OnDeinit 에서 REASON 값을 받아서 OnInit 에서 확인하기 위한 변수. 
// 이 변수값은 ea 초기 실행시점에만 -1이므로 OnInit 내에서 1회 실행만 원하는 경우에도 활용가능. 
int REASON_USING_IN_ONINIT = -1; 

int OnInit()
{
    if(REASON_USING_IN_ONINIT == -1) // EA 실행되고 첫 실행되는 OnInit()인 경우 
    {
        OnlyOnceExec_OnInit(); 
    }
    else if(REASON_USING_IN_ONINIT == REASON_PARAMETERS) // 사용자가 파라메타 수정한 경우 
    {
        Proc_Parameter_OnInit();
    }

    return INIT_SUCCEEDED; 
}

void OnDeinit(const int reason)
{
    REASON_USING_IN_ONINIT = reason; 

    // reason 값이 REASON_CHARTCLOSE (차트 닫힘) / REASON_REMOVE (EA 제거)일 때 / MT5종료 인 경우에 실행할것들. 예. 클래스 인스턴스 동적 생성한것 삭제
    if(reason == REASON_CHARTCLOSE || reason == REASON_REMOVE || reason == REASON_CLOSE)
    {
        OnlyOnceExec_OnDeinit(); 
    }

}

 

 

위 코드 의 앞부분에 , 클래스 동적 생성, 제거하는 예 들 구현된 EA 코드 패턴 예.

 

 

 

 

 

 

연관

 

 

 

메타트레이더 5. 체계정리. 활용법/지식

MetaTrader 5  메타트레이더 5 , 메타에디터, MQL5 활용정보 체계정리. 본 글에서 주요 정리대상 정보  1. 메타트레이더 5 사용법.2. MQL5 언어 기반 "직접 코딩"하여 메타프레이더5에서 자동매매 달성

igotit.tistory.com

 

 

 

 

 

시스템 트레이딩. System Trading.

System Trading  자동매매 시스템 구현/운용 위한 실전 정보.자동매매뿐만 아니라 손매매시에도 유용한 정보.증권사 API 기반 자동매매 시스템 개발 . - API 활용 방법 정리.상용툴 S/W 기반 자동매매

igotit.tistory.com

 

 

 

 

 


첫 등록 : 2025.03.04

최종 수정 : 

단축 주소 : https://igotit.tistory.com/5995


 

댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5