- OnStart
- OnInit
- OnDeinit
- OnTick
- OnCalculate
- OnTimer
- OnTrade
- OnTradeTransaction
- OnBookEvent
- OnChartEvent
- OnTester
- OnTesterInit
- OnTesterDeinit
- OnTesterPass
OnCalculate
함수는 가격 데이터 변경을 처리하기 위해 Calculate 이벤트가 발생할 때 지표에서 호출됩니다. 두 가지 함수 유형이 있습니다. 이 중 하나만 단일 지표 내에서 사용할 수 있습니다.
데이터 배열을 기반으로 계산
int OnCalculate(
|
현재 시간 프레임 시계열을 기반으로 계산
int OnCalculate(
|
매개변수
rates_total
[in] 계산 지표에서 사용할 수 있는 price[] 배열 또는 입력 시리즈의 크기. 두 번째 기능 유형에서 매개변수 값은 차트에서 시작되는 막대 수에 해당합니다.
prev_calculated
[in] 이전 호출 중 OnCalculate() 기능으로 반환된 값을 포함. 이 기능은 이전 기능 실행 이후 변경되지 않은 막대를 건너 뛰도록 설계되었습니다.
시작
[in] price[] 배열의 의미 있는 인덱스 값부터 시작합니다. 그러면 올바른 값이 없는 누락 또는 초기 데이터를 건너뛸 수 있습니다.
price[]
[in] 계산을 위한 값의 배열. 가격 시계열 또는 계산된 지표 버퍼 중 하나를 price[] 배열로 전달할 수 있습니다. 계산을 위한 전달된 데이터 유형은 _AppliedTo 사전 정의된 변수를 사용하여 정의할 수 있습니다.
time{}
[in] 막대 열기 시간 값이 있는 배열.
open[]
[in] 시가 값이 포함된 배열.
high[]
[in] 고가 값이 포함된 배열.
low[]
[in] 저가 값이 포함된 배열.
close[]
[in] 종가 값이 포함된 배열.
tick_volume[]
[in] 틱 볼륨 값이 포함된 배열.
volume[]
[in] 거래 볼륨 값이 포함된 배열.
spread[]
[in] 막대를 위한 스프레드 값이 포함된 배열.
반환 값
int 유형 값은 다음 함수 호출 시 prev_calculated 매개변수로 전달됩니다.
참고
OnCalculate() 기능이 0이면 클라이언트 터미널의 DataWindow에 아무런 지표 값도 표시되지 않습니다.
OnCalculate() 함수의 마지막 호출 이후 가격 데이터가 변경된 경우 (더 깊은 내역이 로드되었거나 내역 공백이 채워진 경우) prev_calculated 입력 매개변수의 값은 터미널 자체에서 0으로 설정됩니다.
time[], open[], high[], low[], close[], tick_volume[], volume[] 및 spread[] 배열에서 인덱싱 방향을 정의하려면 ArrayGetAsSeries() 기능을 호출. 기본값을 사용하지 않으려면 배열과 함께 사용할 ArraySetAsSeries() 기능을 호출.
첫 번째 기능 유형을 사용하는 경우 사용자가 지표를 실행할 때 매개변수 탭에서 price[] 배열로 필요한 시계열 또는 지표를 선택합니다. 이렇게 하려면 "적용 대상" 필드의 드롭다운 목록에서 필요한 요소를 지정.
다른 mql5 프로그램에서 사용자 지정 지표 값을 가져오려면 iCustom() 기능이 사용됩니다. 후속 작업에 대한 지표 핸들을 반환합니다. 필요한price [] 배열 또는 다른 지표의 핸들을 지정할 수도 있습니다. 이 매개변수는 사용자 지정 지표의 입력 변수 목록에서 마지막 매개변수를 전달해야 합니다.
OnCalculate() 기능에 의해 반환되는 값과 prev_calculated 초 입력 매개변수 사이의 연결을 사용해야 합니다. 기능을 호출할 때 prev_calculated 매개변수에는 이전 호출 중 OnCalculate() 함수가 반환한 값이 포함됩니다. 따라서 이 기능의 이전 실행 이후 변경되지 않은 막대에 대한 반복적인 계산을 방지하기 위해 사용자 지정 지표를 계산하기 위한 리소스 절약 알고리즘을 구현할 수 있습니다.
샘플 지표
//+------------------------------------------------------------------+
|
추가 참조
ArrayGetAsSeries, ArraySetAsSeries, iCustom, 이벤트 처리 기능, 프로그램 작동, 클라이언트 터미널 이벤트, 시계열 및 지표에 액세스