작성자: Dmitriy.
UltraMFI는 머니 플로우 인덱스(MFI)를 기반으로 한 지표로, 여러 신호선 분석을 통해 시장의 흐름을 파악합니다. 이 지표의 신호선 계산 알고리즘은 다음과 같습니다. 입력 파라미터는 다음과 같습니다:
- StartLength - 첫 번째 신호선의 최소 초기 값;
- Step - 기간 변화의 단계;
- StepsTotal - 기간 변화의 총 개수.
신호선의 기간 값은 산술급수를 통해 계산되며, 공식은 다음과 같습니다:
SignalPeriod(번호) = StartLength + 번호 * Step,
여기서 번호 변수는 0에서 StepsTotal까지의 값을 가집니다. 계산된 기간 값들은 변수 배열에 추가되어 각 지표 틱에서 스무딩된 Larry Williams의 Percent Range 지표 값을 얻는 데 사용됩니다. 각 스무딩의 현재 추세 방향과 전체 MFI 스무딩 값의 긍정적 및 부정적 추세 수를 결정합니다.
긍정적 및 부정적 추세의 최종 수치는 다시 스무딩되어 지표 라인을 형성하며, 이 라인은 DRAW_FILLING 스타일 클래스를 통해 색상 구름으로 표시됩니다.
이 지표에서 추세 방향은 구름의 색상으로 결정되며, 그 힘은 구름의 너비로 판단됩니다. 과매수(UpLevel) 및 과매도(DnLevel) 수준은 지표 최대 범위의 백분율로 설정할 수 있습니다.
스무딩 알고리즘은 총 10가지 버전 중에서 선택할 수 있습니다:
- SMA - 단순 이동 평균;
- EMA - 지수 이동 평균;
- SMMA - 스무딩 이동 평균;
- LWMA - 선형 가중 이동 평균;
- JJMA - JMA 적응 평균;
- JJurX - 초선형 평균;
- ParMA - 포물선 평균;
- T3 - 틸슨의 다중 지수 스무딩;
- VIDYA - Tushar Chande의 알고리즘을 이용한 스무딩;
- AMA - Perry Kaufman의 알고리즘을 이용한 스무딩.
각 스무딩 알고리즘에 따라 Phase1과 Phase2 파라미터는 의미가 다릅니다. 예를 들어, JMA의 경우 -100에서 +100 사이의 외부 Phase 변수이며, T3는 시각화를 위해 100을 곱한 스무딩 비율입니다. VIDYA는 CMO 오실레이터 기간이며, AMA는 느린 EMA 기간입니다. 다른 알고리즘에서는 이 파라미터가 평균화에 영향을 미치지 않습니다. AMA의 빠른 EMA 기간은 기본값으로 2로 고정되어 있습니다.
이 지표는 SmoothAlgorithms.mqh 라이브러리 클래스를 사용하며, 이를
//+----------------------------------------------+ //| Indicator input parameters | //+----------------------------------------------+ input int MFI_Period=13; // MFI 지표 기간 input ENUM_APPLIED_VOLUME VolumeType=VOLUME_TICK; // MFI 지표 볼륨 //---- input Smooth_Method W_Method=MODE_JJMA; // 스무딩 방법 input int StartLength=3; // 초기 평균화 기간 input int WPhase=100 // 스무딩 파라미터 // JJMA의 경우 -100 ... +100 범위에서 변동하며 과도기 품질에 영향; // VIDIA의 경우 CMO 기간, AMA의 경우 느린 이동 평균 기간 //---- input uint Step=5 // 기간 변화 단계 input uint StepsTotal=10; // 기간 변화의 수 //---- input Smooth_Method SmoothMethod=MODE_JJMA; // 스무딩 방법 input int SmoothLength=3; // 스무딩 깊이 input int SmoothPhase=100 // 스무딩 파라미터 // JJMA의 경우 -100 ... +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; // 수준의 너비 //+----------------------------------------------+

Fig. 1. UltraMFI 지표