MetaTrader5
UltraCCI - MetaTrader 5用インジケーターの紹介
実作者: dm34@mail.ru UltraCCIは、CCI(商品チャネル指数)に基づくインジケーターで、複数の信号ラインのトレンド方向を分析します。信号ラインの計算アルゴリズムは以下の通りです。インジケーターの入力パラメーターは、以下のようなソースデータを持っています: StartLength - 最初の信号ラインの最小初期値; Step - 期間の変更ステップ; StepsTotal - 期間変更の回数。 信号ラインの各期間値は、算術数列を用いて次のように計算されます: SignalPeriod(Number) = StartLength + Number * Step ここで、Number変数の値はゼロからStepsTotalまでの範囲です。得られた期間値は変数配列に追加され、各インジケーターのティックで使用され、スムージングされたRSIインジケーターの値の配列を取得します。各スムージングの現在のトレンド方向が計算され、CCIスムージング値全体の正と負のトレンドの数が決定されます。最終的な正と負のトレンド数もスムージングされ、DRAW_FILLINGスタイルクラスを使用して表示されるカラークラウドとして形成されます。 このインジケーターでのトレンド方向はクラウドの色によって決定され、その強さはクラウドの幅によって示されます。インジケーターの最大振幅からのパーセント値で設定される過剰買い(UpLevel)および過剰売り(DnLevel)レベルを使用することができます。 また、インジケーターはトレンド力の変化速度を示すカラー点の方向を決定する機能も提供します。トレンド力が増加する場合、これらの点の色はクラウドの色と一致し、そうでない場合は反対の色になります。 スムージングアルゴリズムは、以下の10のバージョンから選択できます: SMA - 単純移動平均; EMA - 指数移動平均; SMMA - スムージング移動平均; LWMA - 線形加重移動平均; JJMA - JMA適応平均; JurX - 超線形スムージング; ParMA - 放物線スムージング; T3 - ティルソンの多重指数スムージング; VIDYA - Tushar Chandeのアルゴリズムを使用したスムージング; AMA - Perry Kaufmanのアルゴリズムを使用したスムージング。 なお、異なるスムージングアルゴリズムに対するフェーズパラメータは全く異なる意味を持ちます。JMAの場合は、-100から+100まで変化する外部フェーズ変数です。T3の場合は視覚化を向上させるために100倍されるスムージング比率で、VIDYAの場合はCMOオシレーターの期間、AMAの場合は遅いEMAの期間です。他のアルゴリズムでは、これらのパラメータはスムージングには影響しません。AMAの早いEMA期間は固定値で、デフォルトでは2です。AMAの累乗比も2です。 このインジケーターは、SmoothAlgorithms.mqhライブラリクラスを使用しています(terminal_data_folder\MQL5\Includeにコピーする必要があります)。クラスの使用方法は、「追加バッファを使用しない中間計算のための価格系列の平均化」という記事で詳しく説明されています。 インジケーター入力パラメータ: //+----------------------------------------------+
//| インジケーター入力パラメータ |
//+----------------------------------------------+
input int CCI_Period=13; // CCIインジケーター期間
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=DarkViolet; // 過剰買いレベルの色
input color DnLevelsColor=DarkViolet; // 過剰売りレベルの色
input STYLE Levelstyle=DASHDOTDOT_; // レベルスタイル
input WIDTH LevelsWidth=Width_1; // レベル幅
//+----------------------------------------------+
2012.02.02