여러분, 오늘은 메타트레이더4에서 활용할 수 있는 레벨 인디케이터에 대해 알아보겠습니다. 이 인디케이터는 특정 설정에서 지정한 trigLv 레벨을 기준으로 움직이며, 이 레벨이 deviation 범위 내에서 교차할 때 모바일 기기로 푸시 알림을 보내줍니다. 알림 기능이 활성화되어 있다면 알림 소리도 함께 울리죠.
레벨 인디케이터는 지정한 trigLv와 deviation 범위를 시각적으로 표시해줍니다. 이때 사용자는 인디케이터 설정에서 스타일, 색상, 두께를 조정할 수 있습니다. 여러 레벨의 인디케이터를 차트에 추가하여 그 교차 신호를 활용할 수 있는 점이 큰 장점입니다.
한 가지 유의할 점은, trigLv 레벨은 한 바에서 한 번만 작동하며, 다음 바가 열릴 때까지 재작동하지 않습니다. 이를 통해 각 틱에서 너무 잦은 신호가 발생하는 것을 방지할 수 있습니다.

//+------------------------------------------------------------------+ //| 레벨 인디케이터 코드 | //+------------------------------------------------------------------+ int OnInit() { string name; double dv; color color_; name = "alert.lv-"; dv = deviation * SymbolInfoDouble(NULL, SYMBOL_POINT); color_ = (alert || notification) ? lineColor : inactivityColor; for (int n = 0; n <= INT_MAX && !IsStopped(); n++) { if (ObjectFind(0, name + (string)n) != 0) { if (!lv.Create(0, name + (string)n, 0, trigLv)) return INIT_FAILED; lv.Width(lineWidth); lv.Style(lineStyle); lv.Color(color_); dvH.Create(0, "alert.dvH-" + (string)n, 0, trigLv + dv); dvH.Width(1); dvH.Style(STYLE_DOT); dvH.Color(color_); dvL.Create(0, "alert.dvL-" + (string)n, 0, trigLv - dv); dvL.Width(1); dvL.Style(STYLE_DOT); dvL.Color(color_); break; } } if (!alert && !notification) Print("레벨 인디케이터. 레벨 ", lv.Price(0), "은 비활성 상태입니다!"); if (trigLv == 0.0) Alert("레벨 인디케이터. 'trigLv' 파라미터를 원하는 값으로 설정하세요!"); return(INIT_SUCCEEDED); }