보조지표 게시글

OnCalculate 파라미터에서 값 확인하기 - MetaTrader 5용 유틸리티

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

안녕하세요, 트레이더 여러분! 오늘은 MetaTrader 5에서 사용 가능한 유용한 유틸리티인 'OnCalculate_Values'에 대해 알아보려고 해요. 이 도구는 초보 지표 프로그래머나 OnCalculate 함수가 제공하는 값들을 살펴보고 싶은 분들에게 많은 도움이 될 거예요.

이 지표는 다음의 정보를 표시합니다:
1) 가장 최근 OnCalculate 호출로부터 제공된 값
2) 이전 OnCalculate 호출로부터의 값
3) OnCalculate가 처음 실행된 때의 값
4) 각 배열의 시리즈 값, as_series 또는 not_series로, 디스플레이를 클릭하면 시리즈 값을 변경할 수 있는 기능이 있어요.

버전 1.10에서는 배열이 시리즈로 설정되어 있는지 아닌지를 동적으로 변경할 수 있는 기능이 추가되었습니다. 텍스트를 클릭하는 것만으로도 가능해요. 또한, 창 바와 첫 번째 표시 바 값이 차트 변경에 맞춰 동적으로 설정됩니다. ON/OFF 디스플레이는 다음 OnCalculate 실행 시 어떤 설정이 적용될지를 보여줍니다.

버전 1.20에서는 지표가 배열을 as_series 또는 not_series로 설정할 수 있는 기능이 추가되었습니다. 이 또한 텍스트 클릭으로 가능해요. 이제 지표는 시간 배열의 양 끝과 iMA 버퍼의 양 끝도 표시합니다. 이러한 변화는 as_series와 not_series 배열 간의 차이를 명확히 하기 위한 것입니다. 또한, 디스플레이는 이제 필요에 따라 OnTimeEvent 핸들러를 사용하여 갱신되므로, OnCalculate의 실행 시간이 약 300ms에서 1ms 이하로 줄어들었어요. 실행 시간을 확인하는 코드는 OnCalculate에 남아 있으며, 주석을 해제하면 실행 밀리초를 표시할 수 있습니다.

다음 이미지는 OnCalculate_Values 유틸리티가 표시하는 값을 보여줍니다. '/'로 구분된 세 가지 값, 즉 '가장 최근 값', '이전 값', '첫 번째 값'을 확인해 보세요. OnCalculate 값은 매 OnCalculate 이벤트 때마다 'as_series' 또는 'not_series'로 설정됩니다. 배열 설정이 'ON'일 때는 그렇지 않으면 터미널의 기본값으로 남습니다. 배열 이름 뒤의 괄호 안 값은 해당 값이 어떤 바에서 유래했는지를 나타내며, 인덱스 '0' 값 또는 '최대 인덱스의 값'입니다.

OnCalculate Values Display

코드는 각 바의 Open 가격을 iMA로 제공하는 단일 지표 라인을 구현합니다. 이는 'BarsCalculated' 함수를 사용하기 위한 버퍼를 제공하고, 'as_series' 또는 'not_series'로 설정했을 때 지표의 디스플레이를 보여주기 위한 것입니다. iMA_Val[0]을 클릭하면 iMA 버퍼가 as_series 또는 not_series로 설정되며, 이는 클릭 시 단 한 번만 이루어집니다. iMA 지표 배열은 OnCalculate 호출 시마다 설정되지 않아요.

디스플레이 객체(OBJ_LABEL)의 각 속성을 보유하는 배열 컬렉션이 있습니다:

"ArrayGetAsSeries" 함수는 OnCalculate 파라미터의 배열이 시간 시리즈 배열인지 아닌지를 확인하는 데 사용되며, 디스플레이는 결과를 보여줍니다(As_Series 또는 Not_Series). 이 디스플레이는 초기에는 배열이 시리즈가 아니거나, 시리즈로 설정된 후 한 호출에서 다음 호출로 넘어가는 경우를 보여줍니다. SetAsSeries 함수는 설정이 'ON'일 때만 시리즈로 설정하며, 'OFF'일 경우 기본값으로 되돌립니다. 'as series'를 false로 설정하지는 않아요.

3개의 멤버 배열인 ary_OnCalcVals는 OnCalculate 파라미터에서 발견된 1) 가장 최근 값, 2) 이전 값, 3) 첫 번째 값을 보유합니다. CopyNewToOld 및 MoveNewTo 함수는 각 디스플레이 파라미터의 현재 값을 가져와 ary_OnCalcVals에 제공된 역사적 저장소에 넣습니다.

연관 포스트

댓글 (0)