著者:
dm34@mail.ru
このインジケーターは、WPR(ラリー・ウィリアムズ・パーセントレンジ、%)に基づいており、複数のシグナルラインを分析します。シグナルラインの計算アルゴリズムは以下の通りです。インジケーターの入力パラメーターは次のとおりです:
- StartLength - 最初のシグナルラインの最小初期値;
- Step - 期間変更のステップ;
- StepsTotal - 期間変更の回数。
シグナルラインの期間値は、算術級数を用いて計算されます:
SignalPeriod(Number) = StartLength + Number * Step,
ここで、Number変数の値は0からStepsTotalの範囲です。得られた期間の値は変数配列に追加され、各インジケーターのティックでスムーズなラリー・ウィリアムズ・パーセントレンジインジケーターの値を取得するために使用されます。各スムージングの現在のトレンドの方向が計算され、WPRのスムーズな値全体の正と負のトレンドの数も決定されます。最終的な正と負のトレンドの数は再度スムージングされ、DRAW_FILLINGスタイルクラスを使用して表示されるカラーファイバーを形成するインジケーターラインとして使用されます。
このインジケーターのトレンド方向はクラウドの色によって決まり、その強さはクラウドの幅によって決まります。インジケーターの最大振幅からのパーセント値で設定された過剰買い(UpLevel)と過剰売り(DnLevel)のレベルを使用できます。
スムージングアルゴリズムは、以下の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です。AMAの指数も2に等しいです。
このインジケーターはSmoothAlgorithms.mqhライブラリのクラスを使用しています(ターミナルデータフォルダーのMQL5/Includeにコピーする必要があります)。クラスの使用については、「追加バッファを使用せずに中間計算のための価格系列の平均化」の記事で詳しく説明されています。
UltraWPRインジケーターのコンパイル済みファイルをターミナルデータフォルダーのMQL5/Indicatorsに配置してください。
インジケーター入力パラメーター:
//+----------------------------------------------+ //| インジケーター入力パラメーター | //+----------------------------------------------+ input int WPR_Period=13; // WPRインジケーター期間 //---- 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; // レベル幅
