보조지표 게시글

캔들 크기 지표: MetaTrader 5에서 바의 크기를 이해하자

첨부파일
18269.zip (2.74 KB, 다운로드 0회)

이번 포스팅에서는 MetaTrader 5에서 사용하는 캔들 크기 지표에 대해 알아보겠습니다. 이 지표는 바의 크기를 반영하며, 크기는 다음 공식으로 계산됩니다: "차감"에서 "피감"을 뺀 값입니다. 여기서 "피감"과 "차감"은 네 가지 값(시가, 고가, 저가, 종가) 중 하나일 수 있습니다.

캔들 크기를 표시할 바의 수는 입력 매개변수(InpNumberOfBars)에서 제한할 수 있습니다. 이 숫자는 새로운 바가 열려도 변하지 않습니다.


바와 그래픽 객체의 동기화에 대하여

그래픽 객체 관리

객체의 이름은 m_arr_names[] 배열에 저장되며, 그 크기는 InpNumberOfBars 입력과 동일합니다. 왜 단순 문자열 변수 대신 배열을 사용하는 걸까요? 이는 미래를 대비한 일종의 예비 공간입니다.

객체 이름 형성

각 'index' 바에 해당하는 객체의 이름은 다음 공식으로 형성됩니다:

name[index] = m_prefix + ("high_" 또는 "low_") + TimeToString(time[index])

모든 객체 삭제가 필요할 때

지표는 다음과 같은 경우에 언로드됩니다:

  • 차트에서 지표를 제거할 때;
  • 터미널을 닫을 때 (지표가 차트에서 실행 중일 경우);
  • 템플릿을 로드할 때, 지표가 이 차트에서 실행 중일 경우;
  • 지표가 실행 중인 차트를 닫을 때;
  • 이전 프로필의 차트 중 하나에서 지표가 실행 중일 경우 프로필을 변경할 때;
  • 지표가 실행 중인 차트의 심볼 및/또는 시간 프레임을 변경할 때;
  • 지표 입력을 변경할 때.

따라서, 생성된 그래픽 객체를 완전히 삭제합니다:

  • OnDeinit()에서;
  • OnInit()에서 (혹시라도 삭제되지 않은 고아 객체가 있을 경우);
  • OnCalculate()에서, prev_calculated==0인 경우.

우리는 또한 m_arr_names[] 배열을 정리합니다:

  • OnCalculate()에서, prev_calculated==0이거나 prev_calculated!=rates_total인 경우.

그래픽 객체의 일정한 수 유지:

새로운 바가 나타나면 prev_calculated!=rates_total 조건이 발생합니다. 이 경우, 모든 객체가 삭제되고 m_arr_names[] 배열이 정리됩니다.

연관 포스트

댓글 (0)