개요
- 이벤트 드리븐 방식으로 포지션 생성,제거(청산) 시점 검출 코드 클래스로 구현.
백그라운드.
- 메타트레이더 EA 구현시 포지션 정보를 함수 호출하여 폴링으로 확인하는건 이 코드예 에서 처럼 간단하게 구현가능하다.
- 그러나, 포지션 변경이 언제 생길지 알수 없는데 수시로 함수호출하는 폴링방식으로 포지션의 생성 , 청산을 확인 하는 코드는 비효율적일 수 밖에 없기에, 이벤트 드리븐 방식으로 포지션 생성/청산 시점 검출방식으로 구현되어야 한다.
- 포지션 생성, 청산시 호출되는 이벤트핸들러는 OnTrade() 이며, 이곳에서 구현하면 되는데, OnTrade 로는 포지션외에 주문관련 이벤트를 비롯하여 여러 가지 이벤트 요인에 의하여 호출된다.
- OnTrade() 로 포지션 생성/청산 정보 검출하려면 사용자가 직접 로직을 설계하고 필요에 맞게 구현해야한다.
코드 구현 개념.
1. CHashMap<long, int> map_PosiSymbol; 맵에는 항상 현재 시점 심볼1개(EA 적용중인 챠트의 심볼)포지션 오픈된것만 저장해두는 용도.
2. 초기 EA 실행시점 심볼의 모든 포지션 ticket 을 맵의 키에 저장 .
3. 이벤트 핸들러 OnTrade 에서 클래스 함수 OnTrade_CyManagerPosi(); 호출해두면 함수 내부적으로 포지션 신규 생성, 제거된것 검출 이뤄짐.
실행샷
- 상기 코드를 메타트레이더에서 실행시켜보면 아래 화면의 Experts 출력부분에 포지션 추가, 제거시마다 해당 정보 검출되어 표현.
재료들
상위정리
첫 등록 : 2020.11.09
최종 수정 :
단축 주소 : https://igotit.tistory.com/2692
'트레이딩 > 메타트레이더 코딩' 카테고리의 다른 글
MQL5. CSymbolInfo. class for easy access to the symbol properties. (0) | 2020.11.21 |
---|---|
MQL5. Symbol Specification (0) | 2020.11.21 |
MQL5. CArray. 동적 배열 (0) | 2020.11.09 |
MQL5. CHashMap iteration.반복 (0) | 2020.11.09 |
MQL5. 포지션 함수, 클래스 활용코드 . 심볼1개의 모든 포지션등. (3) | 2020.11.08 |
댓글