このインジケーターは、NRTRアルゴリズム(Nick Rypock Trailing Reverse)を使って移動平均の値を補正します。
このインジケーターを用いたブレイクアウトトレーディングシステムに基づいて、GODZILLAというエキスパートアドバイザーが、2006年の自動売買選手権で3位を獲得しました。
スムージングアルゴリズムは、以下の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に固定されています。
このインジケーターは、SmoothAlgorithms.mqhライブラリのクラスを使用しています(これをterminal_data_folder\MQL5\Includeにコピーする必要があります)。クラスの使用方法については、記事「追加バッファを使用せずに中間計算用の価格系列を平均化する」で詳しく説明されています。

インジケーターの入力パラメータ:
//+-----------------------------------+ //| インジケーター入力パラメータ | //+-----------------------------------+ input Smooth_Method MA_Method1=MODE_SMA; // 最初のスムージング平均方法 input int Length1=12; // 最初のスムージング深さ input int Phase1=15; // 最初のスムージングパラメータ //---- JJMAの場合、Phase1は-100 ... +100の範囲で変化し、遷移過程の品質に影響を与えます; //---- VIDIAではPhase1はCMO期間、AMAでは遅い移動平均の期間です。 input Smooth_Method MA_Method2=MODE_JJMA; // 2番目のスムージング平均方法 input int Length2= 5; // 2番目のスムージング深さ input int Phase2=15; // 2番目のスムージングパラメータ //---- JJMAの場合、Phase2は-100 ... +100の範囲で変化し、遷移過程の品質に影響を与えます; //---- VIDIAではPhase2はCMO期間、AMAでは遅い移動平均の期間です。 input Applied_price_ IPC=PRICE_CLOSE; // 価格定数 /* インジケーター計算はこの価格で行われます (1-CLOSE, 2-OPEN, 3-HIGH, 4-LOW, 5-MEDIAN, 6-TYPICAL, 7-WEIGHTED, 8-SIMPLE, 9-QUARTER, 10-TRENDFOLLOW, 11-0.5 * TRENDFOLLOW.) */ input uint Step=30; // フラットオシレーションのサイズ //---- このパラメータはフラットとして認識されるオシレーションのサイズを決定します(デジタルピッチをポイントで離散化) input uint Max_DEV=55; // X2MAからの価格の端末偏差で、平均値は変わりません input int Shift=0; // インジケーターの水平シフト(バー単位) input int PriceShift=0; // インジケーターの垂直シフト(ポイント単位)