클라이언트 터미널 이벤트

Init #

클라이언트 터미널이 프로그램(Expert Advisor 또는 커스텀 지표)을 로드하고 글로벌 변수 초기화 프로세스를 시작하면 곧바로 Init 이벤트가 전송되며, Init 이벤트는 OnInit() 이벤트 핸들러가 처리합니다. 이 이벤트는 또한 금융상품 및/또는 차트 시간 변경 후, 프로그램이 MetaEditor에서 다시 컴파일된 후, Expert Advisor 또는 커스텀 지표의 설정 창에서 입력 매개 변수가 변경된 후에 생성됩니다. 계정 변경 후 Expert Advisor도 초기화됩니다. 스크립트에 대해 Init 이벤트가 생성되지 않습니다.

Deinit #

글로벌 변수가 초기화 해제되고 프로그램(Expert Advisor 또는 커스텀 지표)이 언로드되기 전에 클라이언트 터미널은 Deinit 이벤트를 프로그램으로 전송합니다. 클라이언트 터미널이 닫혔을 때, 차트가 닫혔을 때, 보안 및/또는 기간이 변경되기 직전에, 성공적인 프로그램 재컴파일에서, 입력 매개 변수가 변경되었을 때, 계정 변경 시에도 Deinit가 생성됩니다.

The 초기화 취소 사유는 매개 변수에서 얻을 수 있으며, OnDeinit() 함수에 전달됩니다. OnDeinit() 함수 실행은 2.5초로 제한됩니다. 이 시간 동안 기능이 완료되지 않으면 강제로 종료됩니다. 스크립트에 대해 Deinit 이벤트가 생성되지 않습니다.

Start #

Start는 스크립트 또는 서비스를 로드한 후 시작하는 특별한 이벤트입니다. 이것은 OnStart 함수로 제어됩니다. 시작 이벤트는 EA 및 커스텀 지표에 전달되지 않습니다.

NewTick #

새로운 견적이 있을 경우 NewTick 이벤트가 생성되며, 첨부된 Expert Advisor의 OnTick()에 의해 처리됩니다. 새 견적을 받을 때 이전 견적서의 OnTick 함수가 처리되는 경우 해당 이벤트가 계속 진행되지 않기 때문에 Expert Advisor가 새 견적을 무시합니다.

프로그램이 실행되는 동안 수신되는 모든 새 따옴표는 OnTick()이 완료될 때까지 무시됩니다. 그런 다음 새 견적을 받은 후에만 기능이 실행됩니다. NewTick 이벤트는 자동 거래가 허용되는지 여부에 관계없이 생성됩니다 ("자동 거래 허용/금지" 버튼). 자동 거래 금지는 Expert Advisor가 계속 작업하는 동안 Expert Advisor의 거래 요청을 보낼 수 없다는 것을 의미합니다.

적절한 버튼을 눌러 자동 거래를 금지해도 OnTick() 함수의 현재 실행이 중지되지는 않습니다.

Calculate #

Calculate 이벤트는 Init 이벤트가 전송된 직후 및 가격 데이터의 변경 시 지표에 대해서만 생성됩니다. 이것은 OnCalculate 함수로 처리됩니다.

Timer #

타이머 이벤트는 EventSetTimer 함수로로 타이머를 활성화한 Expert Advisor의 클라이언트 터미널에서 주기적으로 생성됩니다. 일반적으로 이 기능은 OnInit에 의해 호출됩니다. 타이머 이벤트 처리는 OnTimer X 기능에 의해 수행됩니다. Expert Advisor의 작동이 완료된 후에는 일반적으로 OnDeinit 함수에서 호출되는 EventKillTimer 함수를 사용하여 타이머를 파괴할 필요가 있습니다.

Trade #

트레이드 이벤트는 트레이드 서버에서 트레이드 작업이 완료되면 생성됩니다. 트레이드 이벤트는 다음 거래 작업들에 대해 OnTrade() 함수로 처리됩니다.

  • 보류 중인 주문의 전송, 수정 또는 제거;
  • 대금 또는 유효기간이 충분하지 않은 보류 주문의 취소;
  • 보류 중인 주문의 활성화;
  • 포지션(또는 그 일부) 오프닝, 추가, 또는 클로징
  • 오픈 포지션의 수정 (스탑 변경 – 스탑 로스 및/또는 이익 획득).

TradeTransaction #

거래 계정에 대해 몇 가지 확실한 작업을 수행할 때 거래 상태가 변경됩니다. 이러한 조치는 다음을 포함합니다.

  • OrderSendOrderSendAsync 함수를 사용하여 클라이언트 터미널의 모든 MQL5 응용프로그램에서 거래 요청 전송 및 추가 실행;
  • 터미널 그래픽 인터페이스를 통해 거래 요청 전송 및 추가 실행;
  • 서버에서 보류 중인 주문 및 주문 활성화 중지;
  • 거래 서버 측에서 작업을 수행.

이러한 조치의 결과로 다음과 같은 트레이드 트랜잭션이 수행됩니다.

  • 거래 요청 처리;
  • 오픈 오더 변경;
  • 주문 내역 변경;
  • 거래 내역 변경;
  • 포지션 변경.

예를 들어, 시장 매수 주문을 보낼 때, 그것은 처리되고, 계정에 대한 적절한 매수 주문이 생성되고, 그 주문이 실행되어 오픈 매수 주문 목록에서 제거되고, 그런 다음, 주문 내역에 적절한 거래가 추가되고, 새로운 포지션이 생성됩니다. 이 모든 행동들은 트레이드 트랜잭션입니다. 이러한 거래가 터미널에 도착하는 것은 TradeTransaction 이벤트입니다. 이 이벤트는 OnTradeTransaction 함수로 처리됩니다.

Tester #

내역 정보에 대한 Expert Advisor 테스트가 끝나면 Tester 이벤트가 생성됩니다. 이벤트는 OnTester() 함수로 처리됩니다.

TesterInit #

TesterInit 이벤트는 첫 번째 최적화가 통과하기 전에 전략 테스터에서 최적화의 시작과 함께 생성됩니다. TesterInit 이벤트는 OnTesterInit() 함수로 처리됩니다.

TesterPass #

TesterPass 이벤트는 새 데이터 프레임을 수신할 때 생성됩니다. TesterPass 이벤트는 OnTesterPass() 함수로 처리됩니다.

TesterDeinit #

TesterDeinit 전략 테스터에서 Expert Advisor의 최적화가 종료된 후에 생성됩니다. TesterDeinit 이벤트는 OnTesterDeinit() 함수로 처리됩니다.

ChartEvent #

ChartEvent 이벤트 생성은 사용자가 차트로 작업할 때 클라이언트 터미널에서 가능합다.

  • 키 스트로크, 차트 창이 포커스에 있을 때;
  • 그래픽 개체가 생성됐을 때;
  • 그래픽 개체가 삭제됐을 때
  • 차트의 그래픽 개체를 마우스로 클릭
  • 마우스를 사용한 그래픽 개체 이동
  • LabelEdit에서 텍스트 편집의 끝.

또한 EventChartCustom 함수를 사용하여 모든 mql5 프로그램에 의해 Expert Advisor에게 전송될 수 있는 커스텀 이벤트 ChartEvent도 있습니다. 이 이벤트는 OnChartEvent 함수로 처리됩니다.

BookEvent #

BookEvent 이벤트는 Depth Of Market 변경 후 클라이언트 터미널에서 생성되며, OnBookEvent 함수에 의해 처리됩니다. 지정된 심볼에 대해 BookEvent 생성을 시작하려면 MarketBookAdd 함수를 사용하여 이 이벤트에 심볼을 구독해야 합니다.

지정된 심볼에 대한 BookEvent 구독을 취소하려면 MarketBookRelease 함수를 호출해야 합니다. BookEvent 이벤트는 방송형 이벤트로, 이 이벤트에 대해 Expert Advisor 1명만 가입해도 충분하며, OnBookEvent 이벤트 핸들러가 있는 다른 모든 Expert Advisor도 이를 수신합니다. 이러한 이유로 핸들러에 매개 변수로 전달되는 심볼 이름을 분석해야 합니다.

참고 항목

Event handlers, Program running