著者: dm34@mail.ru
このインディケーターは、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の場合、これは-100から+100の範囲で変化する外部Phase変数です。T3の場合、これは視覚化を改善するために100倍されたスムージング比率であり、VIDYAの場合はCMOオシレーターの期間、AMAの場合は遅いEMAの期間となります。他のアルゴリズムでは、これらのパラメータはスムージングに影響しません。AMAの早いEMA期間は固定値で、デフォルトで2に設定されています。AMAの指数の比率も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; // レベル幅
