이벤트 핸들링

MQL5 언어는 특정 사전 정의된 이벤트를 처리합니다. 이러한 이벤트를 처리하는 기능은 MQL5 프로그램에 정의되어야 합니다. 함수 이름, 반환 유형, 매개변수 세트(있는 경우)가 있으며, 해당 유형은 이벤트 처리 기능의 설명과 엄격히 일치해야 합니다.

클라이언트 터미널 이벤트 처리기는 반환 및 매개변수 유형을 사용하여 이벤트를 처리하는 기능을 식별합니다. 특정 함수에 일부 매개변수가 있거나 아래 설명과 일치하지 않는 반환 유형이 있는 경우 이러한 기능을 사용하여 이벤트를 처리할 수 없습니다.

기능

설명

OnStart

이 기능은 스크립트에 설정된 작업을 수행하기 위해 시작 이벤트가 발생하면 호출됩니다

OnInit

이 기능은 MQL5 프로그램을 초기화하기 위해 Init 이벤트가 발생하면 지표 및 EA에 호출됩니다

OnDeinit

이 기능은 시작된 MQL5 프로그램을 초기화 하기 위해 Deinit 이벤트가 발생하면 지표 및 EA에 호출됩니다

OnTick

이 기능은 새 시세를 핸들링하기 위해 NewTick 이벤트가 발생하면 EA에 호출됩니다

OnCalculate

이 기능은 가격 데이터 변경을 처리하기 위해 계산 이벤트가 발생하면 지표에 호출됩니다

OnTimer

이 기능은 고정된 시간 간격으로 터미널에 의해 생성된 타이머 주기 이벤트동안 지표와 EA에 호출됩니다

OnTrade

이 기능은 거래 서버에서 트레이딩 작업이 끝날 때 생성된 트레이드 이벤트 중에 EA에 호출됩니다

OnTradeTransaction

이 기능은 거래 요청 실행 결과를 처리하기 위해 거래 트랜잭션 이벤트가 발생할 때 EA에 호출됩니다

OnBookEvent

이 기능은 시장 깊이 변화를 처리하기 위해 BookEvent 이벤트가 발생하면 EA에 호출됩니다

OnChartEvent

이 기능은 사용자 또는 MQL5 프로그램에 의해 수행된 차트 변경을 처리 하기 위해 ChartEvent 이벤트가 발생하면 지표 및 EA에 호출됩니다

OnTester

이 기능은 내역 데이터에 대해 EA를 테스트를 한 후 테스터 이벤트가 발생하면 EA에 호출됩니다

OnTesterInit

이 기능은 전략 테스터에서 최적화하기 전에 필요한 작업을 수행하기 위해 TesterInit 이벤트가 발생하면 EA에 호출됩니다

OnTesterDeinit

이 기능은 전략 테스터에서 EA 최적화 후 TesterDeinit 이벤트가 발생하면 EA에 호출됩니다

OnTesterPass

이 기능은 전략 테스터에서 EA 최적화 중 새 데이터 프레임 도착을 처리하기 위해 TesterPass 이벤트가 발생하면 EA에 호출됩니다

클라이언트 터미널이 열린 해당 차트에 수신 이벤트를 보냅니다. 또한 차트 (차트 이벤트) 또는 mql5 프로그램 (사용자 지정 이벤트)에 의해 이벤트가 생성될 수 있습니다. 그래픽 개체 생성/삭제 이벤트 생성은CHART_EVENT_OBJECT_CREATECHART_EVENT_OBJECT_DELETE 차트 속성을 설정하여 활성화/비활성화할 수 있습니다. 각 mql5 애플리케이션 및 차트에는 새로 도착한 모든 이벤트가 배치되는 자체 이벤트 대기열이 있습니다.

프로그램은 실행 중인 차트에서만 이벤트를 가져옵니다. 모든 이벤트는 영수증 순서에 따라 하나씩 처리됩니다. 대기열에 이미 NewTick 이벤트가 포함되어 있거나 이 이벤트가 처리 중인 경우 새 NewTick 이벤트는 mql5애플리케이션 대기열에 추가되지 않습니다. 마찬가지로 ChartEvent가 이미 mql5 프로그램 대기열에 있거나 이러한 이벤트를 처리하고 있는 경우 이 유형의 새 이벤트가 대기열에 배치되지 않습니다. 타이버 이벤트 처리는 동일한 방식으로 처리되며 타이머 이벤트가 이미 대기열에 있거나 처리 중인 경우 새 타이머 이벤트가 대기열에 설정되지 않습니다.

이벤트 대기열은 크기가 제한적이지만 충분하므로 올바르게 개발된 프로그램에서 대기열 오버플로우가 발생할 가능성이 낮습니다. 대기열이 오버플로우 되면 새 이벤트가 대기열에 설정되지 않고 삭제됩니다.

무한 루프를 사용하여 이벤트를 처리하지 않는 것이 좋습니다. 단일 시작 이벤트를 처리하는 스크립트는 예외일 수 있습니다.

라이브러리는 이벤트를 처리하지 않습니다.