- OnStart
- OnInit
- OnDeinit
- OnTick
- OnCalculate
- OnTimer
- OnTrade
- OnTradeTransaction
- OnBookEvent
- OnChartEvent
- OnTester
- OnTesterInit
- OnTesterDeinit
- OnTesterPass
OnBookEvent
이 기능은 BookEvent 이벤트가 발생할 때 지표와 EA로 호출됩니다. Depth of Market 변화에 대처하기 위한 것입니다.
void OnBookEvent(
|
매개변수
심볼
[in] BookEvent가 도착한 심볼의 이름
반환 값
값 반환이 없음
참고
모든 기호에 대한 BookEvent 이벤트를 받으려면 MarketBookAdd() 기능을 사용하여 구독하면 이 기호에 대한 이벤트를 받을 수 있습니다. 특정 기호에 대한 BookEvent 수신 신청을 취소하려면 MarketBookRelease() 기능을 호출.
BookEvent는 전체 차트 내에서 브로드캐스트됩니다. 즉, 차트의 애플리케이션이 MarketBookAdd 기능을 사용하여 BookEvent를 구독하는 경우 다른 모든 지표와 EA가 동일한 차트에서 시작되고 OnBookEvent() 처리기도 이 이벤트를 수신하게 됩니다. 따라서 OnBookEvent() 처리기에 전달된 심볼 이름을 심볼 매개변수로 분석해야 합니다.
동일한 차트에서 실행 중인 모든 애플리케이션에 대해 심볼별로 정렬된 별도의 BookEvent 카운터가 제공됩니다. 즉, 각 차트에 서로 다른 심볼에 대한 구독이 여러 개 있을 수 있으며 각 심볼에 대해 카운터가 제공됩니다. BookEvent를 구독 및 구독 취소하면 한 차트 내에서 지정된 심볼에 대한 구독 카운터가 변경됩니다. 즉, 동일한 심볼이지만 구독 카운터 값이 서로 다른 두 개의 BookEvent 인접 차트가 있을 수 있습니다.
초기 구독 카운터 값은 0입니다. 각 MarketBookAdd() 호출 시 차트에서 지정된 기호에 대한 구독 카운터 1씩 증가합니다(MarketBookAdd()의 차트 심볼 및 심볼은 일치하지 않아도 됨). MarketBookRelease()를 호출하면 차트에서 지정된 심볼에 대한 구독 카운터가 1만큼 줄어듭니다. 모든 기호에 대한 BookEvent 이벤트는 카운터가 0이 될 때까지 차트 내에서 브로드캐스트됩니다. 따라서 MarketBookAdd () 호출이 포함된 각 MQL5 프로그램은 각 작업이 끝날 때 MarketBookRelease ()를 사용하여 각 심볼에 대한 이벤트를 올바르게 구독 취소하는 것이 중요합니다. 이를 위해서는 전체 MQL5 프로그램 수명 동안 각 호출마다 MarketBookAdd() 및 MarketBookRelease() 호출 횟수가 균등해야 합니다. 프로그램 내에서 플래그 또는 사용자 지정 구독 카운터를 사용하면 BookEvent 이벤트를 안전하게 작업할 수 있으며 동일한 차트 내의 타사 프로그램에서 이 이벤트를 가져오기 위한 구독을 사용하지 않도록 설정할 수 있습니다.
BookEvent 이벤트는 건너뛰지 않으며 이전 BookEvent 처리를 아직 완료하지 않은 경우에도 항상 대기열에 배치됩니다.
예
//+------------------------------------------------------------------+
|
추가 참조
MarketBookAdd, MarketBookRelease, MarketBookGet, OnTrade, OnTradeTransaction, OnTick, 이벤트 핸들링 기능, 프로그램 작동, 클라이언트 터미널 이벤트