실제 저자:
dm34@mail.ru
이 지표는 WPR (래리 윌리엄스의 퍼센트 범위, %)를 기반으로 하며, 여러 신호선 분석을 통해 작동합니다. 신호선 계산 알고리즘은 다음과 같습니다. 지표 입력 매개변수는 다음과 같습니다:
- StartLength - 첫 번째 신호선의 최소 초기 값;
- Step - 주기 변경 단계;
- StepsTotal - 주기 변경 횟수.
신호선의 주기 값은 산술 급수를 이용해 계산됩니다:
SignalPeriod(숫자) = StartLength + 숫자 * Step,
여기서 Number 변수의 값은 0부터 StepsTotal까지 변화합니다. 얻은 주기 값들은 변수 배열에 추가되어 각 지표 틱에서 부드러운 래리 윌리엄스의 퍼센트 범위 지표 값을 얻는 데 사용됩니다. 각 부드러운 값의 현재 추세 방향이 계산되고, 전체 WPR 부드러운 값 배열에 대한 긍정적 및 부정적 추세의 수가 결정됩니다. 최종 긍정적 및 부정적 추세 수치는 다시 부드럽게 처리되어 지표 선을 형성하며, 이 선들은 DRAW_FILLING 스타일 클래스를 통해 색상 구름으로 표시됩니다.
이 지표에서 추세 방향은 구름 색상으로 결정되며, 추세의 세기는 구름의 너비로 결정됩니다. 과매수(UpLevel) 및 과매도(DnLevel) 레벨은 지표 최대 진폭의 백분율로 설정할 수 있습니다.
부드럽게 하는 알고리즘은 10가지 가능한 버전 중에서 선택할 수 있습니다:
- SMA - 단순 이동 평균;
- EMA - 지수 이동 평균;
- SMMA - 부드러운 이동 평균;
- LWMA - 선형 가중 이동 평균;
- JJMA - JMA 적응 평균;
- JurX - 초선형 부드럽게 하기;
- ParMA - 포물선 부드럽게 하기;
- T3 - 틸슨의 다중 지수 부드럽게 하기;
- VIDYA - 투샤르 찬드의 알고리즘을 이용한 부드럽게 하기;
- AMA - 페리 카우프먼 알고리즘을 이용한 부드럽게 하기.
Phase1과 Phase2 매개변수는 서로 다른 부드럽게 하기 알고리즘에 대해 전혀 다른 의미를 가집니다. JMA의 경우 외부 Phase 변수는 -100에서 +100까지 변합니다. T3의 경우 부드럽게 하기 비율은 시각화를 위해 100배 곱해집니다. VIDYA의 경우 CMO 오실레이터 주기이며, AMA는 느린 EMA 주기입니다. 다른 알고리즘에서는 이 매개변수들이 부드럽게 하는 데 영향을 미치지 않습니다. AMA의 빠른 EMA 주기는 고정 값이며 기본값은 2입니다. 지수 비율도 AMA의 경우 2로 설정되어 있습니다.
이 지표는 SmoothAlgorithms.mqh 라이브러리 클래스를 사용합니다 (터미널 데이터 폴더의 MQL5/Include 폴더에 복사해야 함). 클래스 사용에 대한 자세한 내용은 "중간 계산을 위한 가격 시리즈 평균" 기사에서 확인할 수 있습니다.
UltraWPR 지표의 컴파일된 파일을 터미널 데이터 폴더의 MQL5/Indicators에 배치하세요.
지표 입력 매개변수:
//+----------------------------------------------+ //| 지표 입력 매개변수 | //+----------------------------------------------+ input int WPR_Period=13; // WPR 지표 주기 //---- input Smooth_Method W_Method=MODE_JJMA; // 부드럽게 하기 방법 input int StartLength=3; // 초기 부드럽게 하기 주기 input int WPhase=100; // 부드럽게 하기 매개변수 //---- input uint Step=5; // 주기 변경 단계 input uint StepsTotal=10; // 주기 변경 횟수 //---- input Smooth_Method SmoothMethod=MODE_JJMA;// 부드럽게 하기 방법 input int SmoothLength=3; // 부드럽게 하기 깊이 input int SmoothPhase=100; // 부드럽게 하기 매개변수 //---- input uint UpLevel=80; // 과매수 레벨, % input uint DnLevel=20; // 과매도 레벨, % input color UpLevelsColor=Blue; // 과매수 레벨 색상 input color DnLevelsColor=Blue; // 과매도 레벨 색상 input STYLE Levelstyle=DASH_; // 레벨 스타일 input WIDTH LevelsWidth=Width_1; // 레벨 너비
