실제 저자:
dm34@mail.ru
안녕하세요, 트레이더 여러분! 오늘은 MetaTrader 5에서 사용할 수 있는 UltraRSI 지표에 대해 알아보겠습니다. 이 지표는 상대강도지수(RSI)를 기반으로 하며, 여러 신호 선을 분석하는 특징이 있습니다. 자, 그럼 이 지표의 작동 원리를 살펴볼까요?
- StartLength: 첫 번째 신호 선의 최소 초기 값;
- Step: 기간 변화 단계;
- StepsTotal: 기간 변화의 수.
신호 선의 기간 값은 산술 수열을 이용해 계산됩니다:
SignalPeriod(Number) = StartLength + Number * Step,
여기서 Number 변수의 값은 0부터 StepsTotal까지의 범위를 가집니다. 이렇게 얻은 기간 값들은 배열에 추가되어, 지표의 각 틱에서 부드러운 RSI 지표 값의 배열을 생성하는 데 사용됩니다. 각 부드러움에 대한 현재 추세의 방향을 계산하고, 전체 RSI 부드러운 값 배열에 대한 긍정적 및 부정적 추세의 수를 결정합니다. 최종적인 긍정적 및 부정적 추세의 수는 다시 부드럽게 처리되어, DRAW_FILLING 스타일 클래스를 통해 표시되는 색상 구름을 형성합니다.
이 지표의 추세 방향은 구름의 색상으로 결정되며, 구름의 너비는 추세의 강도를 나타냅니다. 또한, 지표 최대 진폭의 퍼센트 값으로 설정된 과매수(UpLevel) 및 과매도(DnLevel) 레벨을 사용할 수 있습니다.
부드럽게 처리하는 알고리즘은 총 10가지 버전 중에서 선택할 수 있습니다:
- SMA - 단순 이동 평균;
- EMA - 지수 이동 평균;
- SMMA - 부드러운 이동 평균;
- LWMA - 선형 가중 이동 평균;
- JJMA - JMA 적응 평균;
- JurX - 초선형 부드럽게 처리하기;
- ParMA - 포물선 부드럽게 처리하기;
- T3 - 틸슨의 다중 지수 부드럽게 처리하기;
- VIDYA - Tushar Chande의 알고리즘을 이용한 부드럽게 처리하기;
- AMA - Perry Kaufman의 알고리즘을 이용한 부드럽게 처리하기.
Phase1과 Phase2 파라미터는 각기 다른 부드럽게 처리하는 알고리즘에 따라 전혀 다른 의미를 가집니다. JMA의 경우 외부 Phase 변수는 -100에서 +100까지 변할 수 있습니다. T3의 경우는 시각화를 위해 100배한 부드럽게 처리 비율이며, VIDYA는 CMO 오실레이터 기간이고, AMA는 느린 EMA 기간입니다. 다른 알고리즘에서는 이 파라미터가 부드럽게 처리하는 데 영향을 주지 않습니다. AMA의 경우 빠른 EMA 기간은 기본값이 2로 고정되어 있으며, 거듭제곱 비율도 2입니다.
이 지표는 SmoothAlgorithms.mqh 라이브러리 클래스를 사용합니다(터미널 데이터 폴더의 MQL5">Include에 복사해야 함). 이 클래스의 사용법은 "추가 버퍼를 사용하지 않고 중간 계산을 위한 가격 시계열 평균화"라는 기사에서 자세히 설명되어 있습니다.
지표 입력 파라미터:
//+----------------------------------------------+ //| 지표 입력 파라미터 | //+----------------------------------------------+ input int RSI_Period=13; // RSI 지표 기간 input ENUM_APPLIED_PRICE Applied_price=PRICE_CLOSE; // 적용 가격 //---- 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; // 레벨 너비
