시스템트레이딩 게시글

MetaTrader 4의 ChartEvent 테스트 예제

첨부파일
17875.zip (4.97 KB, 다운로드 1회)

안녕하세요, 트레이더 여러분! 오늘은 MetaTrader 4에서 사용할 수 있는 'Test_ChartEvent.mq4' Expert Advisor에 대해 알아보겠습니다. 이 EA는 다양한 ChartEvent를 시연하는 예제입니다. 키보드 이벤트, 마우스 클릭 및 이동 이벤트, 그리고 사용자 정의 이벤트를 포함하고 있습니다. 도움을 원하신다면 'H' 키를 눌러보세요. 'M' 키를 누르면 MOUSE_MOVE 이벤트 모드로 전환됩니다.

이 소스 코드는 MetaTrader 4와 MetaTrader 5 모두에서 작동합니다.

함수 프로토타입

  • bool Obj_Create()
  • bool Obj_Delete()
  • bool Obj_Move(int hSens,int vSens) - 객체를 이동합니다.
  • void Print_Info() - 객체에 대한 정보를 출력합니다.
  • int MouseMove(int aXX,int aYY,string sState) - 마우스 이동 이벤트를 처리합니다.

전역 변수

  • int gChartNo=0
  • int gSubWinNo=0
  • string gsObj_Name_selected="" - 현재 선택된 객체의 이름입니다.

사용자 정의 이벤트

세 가지 종류의 사용자 정의 이벤트가 정의되어 있습니다:

  • #define cMyEvent_1 0
  • #define cMyEvent_2 1
  • #define cMyEvent_3_broadcast 2

OnTimer() 함수

이 함수는 사용자 정의 ChartEvent를 주기적으로 생성합니다. 특히, cMyEvent_3_broadcast 이벤트는 모든 열린 차트 창에 대해 생성됩니다.

클래스 예제

클래스 "CObjectMan"은 차트의 객체 기능을 처리하기 위해 생성되었습니다. 두 개의 인스턴스(gObjectMan1, gObjectMan2)가 선언되어 있으며, 이 두 인스턴스에 연결된 그래픽 객체의 이름은 각각 "Green Button"과 "Yellow Button"입니다.

이벤트 처리

void OnChartEvent():

"CHARTEVENT_KEYDOWN" 이벤트:

  1. 4 방향 키(화살표) 또는 디지털 패널의 4 방향 키로 선택된 객체를 이동합니다.
  2. 'H': 도움말 정보를 출력합니다 (전문가 로그 창).
  3. 'I': 두 객체의 위치 정보를 출력합니다.
  4. 'M': MOUSE_MOVE 이벤트를 활성화합니다.

사용자 정의 이벤트

이 이벤트에 대한 정보를 출력합니다. 특히 MyEvent_3_broadcast 이벤트에 대해 출력합니다.

객체 이벤트

  • CHARTEVENT_OBJECT_CHANGE, CHARTEVENT_OBJECT_DRAG, CHARTEVENT_OBJECT_DELETE - 해당 객체의 이름을 출력합니다.
  • CHARTEVENT_OBJECT_CLICK - 클릭한 객체의 이름을 출력하고, 방향 키로 이동할 객체의 이름을 선택합니다.

마우스 이벤트

  • CHARTEVENT_CLICK - 클릭한 바의 정보: 가격(시가, 종가) 및 바의 시간 정보를 출력합니다.
  • CHARTEVENT_MOUSE_MOVE (참고: CHART_EVENT_MOUSE_MOVE) - 포함된 구간의 정보: 바의 수, 가격 변동을 출력합니다.

ChartEvent 테스트 예제

시연

다음 테스트를 수행할 수 있습니다:

  • 두 개의 객체(버튼) 중 하나를 클릭하여 선택한 후 화살표 키를 사용해 선택된 객체를 이동합니다.
  • 그래픽 바를 클릭하고 로그 탭에서 바의 정보를 확인합니다.
  • 'M' 키를 눌러 MOUSE_MOVE 이벤트 모드로 전환합니다. Ctrl+F를 눌러 십자선을 표시한 후 드래그 앤 드롭 작업을 수행합니다. 로그 메시지가 보이지 않으면 입력 매개변수 "iLogLevel"을 변경해보세요.

연관 포스트

댓글 (0)