皆さん、こんにちは!今日は、MetaTrader 5で使える「UltraXMA」というインジケーターについてお話ししたいと思います。このインジケーターは、同様の移動平均のファンからトレンドの統合的な値をもとにしており、スムージング期間の算術的進行を利用しています。
まず、このインジケーターの計算アルゴリズムについて見ていきましょう。インジケーターの入力パラメーターは以下の通りです:
- StartLength - 最初の信号ラインの最小初期値;
- Step - 期間の変化ステップ;
- StepsTotal - 期間の変化の総数。
各期間の値は、算術的進行を用いて計算されます:
XMAPeriod(Number) = StartLength + Number * Step
ここで、Numberの変数は0からStepsTotalまでの範囲で変動します。得られた期間の値は、変数配列に追加され、各インジケーターのティックでXMA移動平均ファン値の配列を取得するために使用されます。各スムージングの現在のトレンドの方向と、全体の移動平均ファン値の正のトレンドおよび負のトレンドの数が計算されます。最終的な正のトレンドと負のトレンドの数はさらにスムージングされ、色付きの雲を形成するインジケーターラインとして使用されます。
このインジケーターにおけるトレンドの方向は雲の色によって、力は雲の幅によって決まります。また、インジケーターの最大振幅からのパーセント値で設定された過剰買い(UpLevel)および過剰売り(DnLevel)レベルも利用可能です。
スムージングアルゴリズムは、次の10種類のバージョンから選択できます:
- SMA - 簡単移動平均;
- EMA - 指数移動平均;
- SMMA - スムーズ移動平均;
- LWMA - 線形加重移動平均;
- JJMA - JMA適応平均;
- JurX - ウルトラリニアスムージング;
- ParMA - パラボリックスムージング;
- T3 - ティルソンの複数指数スムージング;
- VIDYA - Tushar Chandeのアルゴリズムを使用したスムージング;
- AMA - Perry Kaufmanのアルゴリズムを使用したスムージング。
なお、異なるスムージングアルゴリズムに対するPhaseパラメーターは、まったく異なる意味を持ちます。JMAの場合は外部のPhase変数が-100から+100まで変化し、T3の場合はスムージング比率が100倍されて視覚化されます。VIDYAはCMOオシレーターの期間を、AMAは遅いEMAの期間を使用します。他のアルゴリズムでは、これらのパラメーターはスムージングに影響を与えません。AMAの高速EMA期間は固定値で、デフォルトで2です。
このインジケーターは、SmoothAlgorithms.mqhライブラリのクラスを使用します(ターミナルデータフォルダのMQL5\Includeにコピーする必要があります)。クラスの使用方法は、「追加バッファを使用せずに中間計算のための価格系列の平均化」という記事で詳しく説明されています。
インジケーターの入力パラメーター:
//+----------------------------------------------+ //| インジケーターの入力パラメーター | //+----------------------------------------------+ 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; // レベルの幅

コメント 0