안녕하세요, 트레이더 여러분! 오늘은 메타트레이더 5에서 사용할 수 있는 독특한 지표인 UltraXMA에 대해 소개해 드릴게요. 이 지표는 여러 이동 평균의 트렌드를 통합하여 보여주는 강력한 도구입니다.
UltraXMA의 기본 원리는 다음과 같은 이동 평균 계산 알고리즘을 기반으로 합니다. 이 지표의 입력 파라미터는 다음과 같습니다:
- StartLength - 첫 번째 신호 라인의 최소 초기 값;
- Step - 기간 변경 단계;
- StepsTotal - 기간 변경의 총 수.
이동 평균의 각 기간 값은 산술 수열을 이용해 계산됩니다:
XMAPeriod(Number) = StartLength + Number * Step
여기서 Number 변수는 0부터 StepsTotal까지의 값을 가집니다. 이렇게 구해진 기간 값들은 배열에 추가되어 각 지표 틱에서 XMA 이동 평균의 팬 값을 가져오는 데 사용됩니다. 현재 트렌드의 방향과 전체 이동 평균 팬 값의 긍정적 및 부정적 트렌드 수를 계산합니다. 최종적으로 긍정적 및 부정적 트렌드 수가 다시 스무딩되어 색상 구름을 형성하는 지표 라인으로 사용됩니다. 이 구름은 DRAW_FILLING 스타일 클래스를 통해 표시됩니다.
이 지표에서 트렌드 방향은 구름의 색상에 의해 결정되며, 힘은 구름의 너비에 의해 결정됩니다. 또한, 과매수(UpLevel)와 과매도(DnLevel) 수준을 설정할 수 있으며, 이는 지표의 최대 진폭에서 백분율로 설정됩니다.
스무딩 알고리즘은 총 10가지 옵션 중에서 선택할 수 있습니다:
- SMA - 단순 이동 평균;
- EMA - 지수 이동 평균;
- SMMA - 스무딩 이동 평균;
- LWMA - 선형 가중 이동 평균;
- JJMA - JMA 적응 평균;
- JurX - 초선형 스무딩;
- ParMA - 포물선 스무딩;
- T3 - 틸슨의 다중 지수 스무딩;
- VIDYA - 투샤르 찬드의 알고리즘을 이용한 스무딩;
- AMA - 페리 카우프먼의 알고리즘을 이용한 스무딩.
각 스무딩 알고리즘에 대한 Phase 파라미터는 서로 다른 의미를 가집니다. 예를 들어, JMA의 Phase 변수는 -100에서 +100으로 변하며, T3는 시각화를 위해 100을 곱한 스무딩 비율을 사용합니다. VIDYA는 CMO 오실레이터의 기간을 사용하고, AMA는 느린 EMA 기간을 사용합니다. 다른 알고리즘에서는 이 파라미터가 스무딩에 영향을 미치지 않습니다. AMA의 빠른 EMA 기간은 기본값인 2로 고정되어 있습니다.
UltraXMA는 SmoothAlgorithms.mqh 라이브러리 클래스를 사용합니다. 이 클래스는 "추가 버퍼 없이 중간 계산을 위한 가격 시리즈 평균화"라는 기사에 자세히 설명되어 있습니다.
지표 입력 파라미터:
//+----------------------------------------------+ //| 지표 입력 파라미터 | //+----------------------------------------------+ 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 Applied_price_ IPC=PRICE_CLOSE; // 적용 가격 //---- input uint UpLevel=80; // 과매수 수준 input uint DnLevel=20; // 과매도 수준 input color UpLevelsColor=Red; // 과매수 수준 색상 input color DnLevelsColor=Red; // 과매도 수준 색상 input STYLE Levelstyle=DASH_; // 수준 스타일 input WIDTH LevelsWidth=Width_1; // 수준 너비
