OnChartEvent
이 함수는 ChartEvent 이벤트가 발생할 때 지표와 EA로 호출됩니다. 이 함수는 사용자 또는 MQL5 프로그램에 의해 수행된 차트 변경 사항을 처리하기 위한 것입니다.
void OnChartEvent() |
Parameters
id
[in] Event ID from the ENUM_CHART_EVENT 열거값.
lparam
[in] long 타입 이벤트 파라미터
dparam
[in] double 타입 이벤트 파라미터
sparam
[in] string 타입 이벤트 파라미터
반환 값
반환값 없음
참고
사전 정의된 OnChartEvent() 함수를 사용하여 처리할 수 있는 이벤트 유형에는 13가지가 있습니다. 커스텀 이벤트를 위해 CHARTEVENT_CUSTOM 에서부터 CHARTEVENT_CUSTOM_LAST 까지 65535개 ID가 제공됩니다. 커스텀 이벤트를 생성하려면 EventChartCustom() 함수를 사용하십시오.
ENUM_CHART_EVENT 열거값의 간단한 이벤트 설명:
- CHARTEVENT_KEYUP — 차트 창에 입력 포커스가 있는 경우 키보드 키를 놓으면 발생;
- CHARTEVENT_KEYDOWN — 차트 창이 포커스에 있을 때 키보드의 키를 누름;
- CHARTEVENT_MOUSE_MOVE — 마우스 및 마우스 버튼 클릭 이동 (CHART_EVENT_MOUSE_MOVE가 차트에서 참인 경우);
- CHARTEVENT_OBJECT_CREATE — 그래픽 개체 생성 (CHART_EVENT_OBJECT_CREATE가 차트에서 참인 경우);
- CHARTEVENT_OBJECT_CHANGE — 속성 대화 상자를 통해 개체 속성 변경;
- CHARTEVENT_OBJECT_DELETE — 그래픽 개체 삭제 (CHART_EVENT_OBJECT_DELETE가 차트에서 참인 경우);
- CHARTEVENT_CLICK — 차트에서 클릭;
- CHARTEVENT_OBJECT_CLICK — 차트에 속하는 그래픽 개체를 마우스 클릭;
- CHARTEVENT_OBJECT_DRAG — 마우스를 사용하여 그래픽 개체 끌기;
- CHARTEVENT_OBJECT_ENDEDIT — 그래픽 개체의 편집 입력 상자에서 텍스트 편집 완료 (OBJ_EDIT);
- CHARTEVENT_CHART_CHANGE — 차트 변경;
- CHARTEVENT_CUSTOM+n — 사용자 지정 이벤트 ID (여기서 n은 0 ~ 65535 범위). CHARTEVENT_CUSTOM_LAST 에는 마지막으로 허용된 커스텀 이벤트 ID(CHARTEVENT_CUSTOM+65535)가 포함되어 있습니다.
모든 MQL5 programs은 어플리케이션의 메인 스레드 이외의 스레드에서 작동합니다. 메인 어플리케이션 스레드는 모든 Windows 시스템 메시지를 처리하고, 그 결과 자체 어플리케이션에 대한 Windows 메시지를 생성합니다. 예를 들어, 차트(WM_MOUSE_MOVE event)에서 마우스를 이동하면 응용 프로그램 창의 후속 렌더링을 위한 여러 시스템 메시지가 생성되며 차트에서 시작된 experts 및 지표에 내부 메시지가 전송됩니다. EA 또는 지표가 마우스 이동 이벤트를 이미 수신한 상태에서 주 애플리케이션 스레드가 아직 WM_PAINT 시스템 메시지를 처리하지 않은(따라서 수정된 차트를 렌더링하지 않은) 상황이 발생할 수 있습니다. 이 경우 차트 속성 CHART_FIRST_VISIBLE_BAR은 차트를 렌더링한 후에만 변경됩니다.
각 이벤트 유형에 대해 OnChartEvent() 함수의 입력에는 해당 이벤트를 처리하는 데 필요한 특정 값이 포함됩니다. 표에는 파라미터를 통해 전달된 이벤트와 값이 나와 있습니다.
Event | 'id' 파라미터 값 | 'lparam' 파라미터 값 | 'dparam' 파라미터 값 | 'sparam' 파라미터 값 |
|---|---|---|---|---|
키 릴리스 이벤트 | CHARTEVENT_KEYUP | 릴리즈된 키 코드 | 이벤트 반복 횟수는 항상 1입니다. | 제어자 키의 상태를 설명하는 비트 마스크 문자열 값. WM_KEYUP message를 확인하세요 |
Keypress 이벤트 | CHARTEVENT_KEYDOWN | 누른 키 코드 | 키가 눌려 있는 동안 이벤트 반복 횟수 | 제어자 키의 상태를 설명하는 비트 마스크 문자열 값. WM_KEYDOWN message를 확인하세요 |
마우스 이벤트 (CHART_EVENT_MOUSE_MOVE가 차트에서 참인 경우) | CHARTEVENT_MOUSE_MOVE | X 좌표 | Y 좌표 | 마우스 키의 상태를 설명하는 비트 마스크의 문자열 값 |
마우스 휠 이벤트 (CHART_EVENT_MOUSE_WHEEL가 차트에서 참인 경우) | CHARTEVENT_MOUSE_WHEEL | 커서의 키와 마우스 버튼, X 및 Y 좌표에 대한 플래그. 다음 예제의 설명을 보십시오 | 마우스 휠 스크롤의 델타 값 | — |
그래픽 개체 생성 (CHART_EVENT_OBJECT_CREATE가 차트에서 참인 경우) | CHARTEVENT_OBJECT_CREATE | — | — | 생성된 그래픽 개체의 이름 |
속성 대화 상자를 통해 개체 속성 변경 | CHARTEVENT_OBJECT_CHANGE | — | — | 변경된 그래픽 개체의 이름 |
그래픽 개체 제거 (CHART_EVENT_OBJECT_DELETE가 차트에서 참인 경우) | CHARTEVENT_OBJECT_DELETE | — | — | 제거된 그래픽 개체의 이름 |
차트에서 마우스 클릭 | CHARTEVENT_CLICK | X 좌표 | Y 좌표 | — |
그래픽 개체에 마우스 클릭 | CHARTEVENT_OBJECT_CLICK | X 좌표 | Y 좌표 | 이벤트가 발생한 그래픽 개체의 이름 |
마우스를 사용하여 그래픽 개체 이동 | CHARTEVENT_OBJECT_DRAG | — | — | 이동된 그래픽 개체의 이름 |
"입력 필드" 그래픽 객체 입력 상자에서 텍스트 편집 완료 | CHARTEVENT_OBJECT_ENDEDIT | — | — | 텍스트 편집이 완료된 "입력 필드" 그래픽 개체의 이름 |
속성 대화창을 통해 차트 크기 조정 또는 차트 속성 수정 | CHARTEVENT_CHART_CHANGE | — | — | — |
커스텀 이벤트(N 번호) | CHARTEVENT_CUSTOM+N | EventChartCustom() 함수에 의해 정의된 값 | EventChartCustom() 함수에 의해 정의된 값 | EventChartCustom() 함수에 의해 정의된 값 |
샘플 차트 이벤트 리스너:
//+------------------------------------------------------------------+ |
더 보기
EventChartCustom, Types of chart events, Event handling functions, Program running, Client terminal events