트레이딩/메타트레이더 코딩
MQL5. 외부 프로그램으로 실시간 데이터 송신 . SendMessage, PostMessage, WM_COPYDATA
i.got.it
2024. 9. 6. 18:22
개요
- 메타트레이더5 . EA 에서 외부 프로그램(=프로세스) 으로 실시간 데이터 송신 가능.
- 아래 이미지는 메타트레이더 (바이빗 MT5 )의 종목 챠트에 ea 배치하고 OnTick 시점에 ask, bid 등의 틱 정보를 외부 프로그램으로 실시간 송신 중.
- 아래 코드예는 64비트용으로 제작되었기 때문에 64비트인 메타트레이더5 에서만 정상 동작하며, 32비트인 MT4 에서는 정상 동작 안된다. 또한, 통신 상대방도 64비트 프로그램이어야 정상 통신 가능하다.
SendMessage, PostMessage , FindWindow
생성자: CCy_WindowMessage(string name_wnd_tgt, int msg = WM_USER + 1) - 대상 윈도우 이름과 메시지 ID를 초기화.
FindWindow(): 대상 윈도우 핸들을 찾고, 실패 시 오류 메시지 출력.
SendMessage(long wparam, long lparam): SendMessageW 함수를 사용해 메시지 전송.
PostMessage(long wparam, long lparam): PostMessageW 함수를 사용해 비동기로 메시지 전송.
사용 방법
- 인스턴스 생성: CCy_WindowMessage msg("윈도우 이름", WM_USER + 1);
- 메시지 전송: msg.SendMessage(wParam, lParam);
- 비동기 메시지 전송: msg.PostMessage(wParam, lParam);
SendMessage with WM_COPYDATA
- 앞의 클래스 CCy_WindowMessage 의 SendMessage 호출하면서 WM_COPYDATA 송신.
상위정리
첫 등록 : 2024.09.06
최종 수정 : 2024.09.09
단축 주소 : https://igotit.tistory.com/5820