
템플릿 작동 방식
이 지표는 원하는 오실레이터를 기반으로 다이버전스를 플로팅하기 위한 템플릿을 제공합니다.
어떤 오실레이터를 선택하느냐에 따라(CCI, RSI 또는 본인 맞춤형 지표) 코드의 해당 부분을 수정할 수 있습니다:
///////////////////////////////////////////// //지표 데이터를 지표 버퍼에 로드합니다 //RSI를 원하는 지표로 쉽게 교체할 수 있습니다 int BARS=MathMax(rates_total-IndicatorCounted()-pivots_period,1); for(int i=BARS;i>=0;i--) { indicatorBuffer[i]=iRSI(_Symbol, PERIOD_CURRENT, 14, PRICE_CLOSE, i); } //지표 로드 섹션 종료 /////////////////////////////////////////////
신호 버퍼
이 지표는 생성된 신호를 추적하기 위해 아래와 같이 네 개의 서로 다른 버퍼를 가지고 있습니다. 해당 버퍼가 비어있지 않은 값을 가질 때마다 신호가 발생합니다.
SetIndexBuffer(3,bull_reg_divBuffer); SetIndexBuffer(4,bear_reg_divBuffer); SetIndexBuffer(5,bull_hid_divBuffer); SetIndexBuffer(6,bear_hid_divBuffer);
입력 섹션
input int pivots_period=5; //지표 피벗을 찾기 위한 기간 input int alert_confirm_candles=1; //#신호 확인을 위한 캔들 수(0=알림 비활성화)
피벗 고점과 피벗 저점을 indicatorBuffer에서 찾는 것은 pivots_period 입력에 따라 달라집니다. 이 값을 크게 선택하면 더 큰 스윙을 검색하여 가능한 다이버전스를 찾습니다.
또한 alert_confirm_candles 입력은 신호 확인을 위해 얼마나 많은 바를 기다릴지를 정의합니다. 다이버전스 지표는 대부분 후행 지표이며 많은 잘못된 신호를 발생시킵니다. 이 값을 크게 선택하면 더 오랫동안 기다리게 되어 잘못된 신호의 수가 줄어듭니다. 즉, 즉각적인 신호를 원하느냐, 확인된 신호를 원하느냐의 타협입니다.
일반적으로 pivots_period는 < 2로 설정할 수 없습니다.
재도색 문제
피벗 계산에 의존하는 지표는 최근 고점/저점의 확인을 얻기 위해 pivots_period만큼 기다려야 합니다. 따라서 이 지표는 pivots_period 이전으로 신호를 재도색해야 합니다.
BARS=MathMax(rates_total-IndicatorCounted()-pivots_period,pivots_period); for(int i=BARS;i>=0;i--) { PHBuffer[i]=pivothigh(indicatorBuffer, pivots_period, pivots_period, i); PLBuffer[i]=pivotlow(indicatorBuffer, pivots_period, pivots_period, i); bull_reg_divBuffer[i]=BullRegDiv(i); bear_reg_divBuffer[i]=BearRegDiv(i); bull_hid_divBuffer[i]=BullHidDiv(i); bear_hid_divBuffer[i]=BearHidDiv(i); }