ホーム テクニカル指標 投稿

ノイズ削減付きストキャスティクス - MetaTrader 4用インジケーター

添付ファイル
9279.zip (2.09 KB, ダウンロード 0回)

説明:

感度機能を備えた標準ストキャスティクスオシレーター。

このインジケーターは標準のストキャスティクスと同じパラメータを持ちながら、追加の「感度」パラメータ(パラメータウィンドウのSens)があります。

これにより、事前に定義された閾値以下の振幅のみを考慮することができ、多くの誤信号を削減できます。

古典的なレーンストキャスティクスは、%K(K期間)値で定義されたバーの最大価格と最小価格の間に現在の価格を位置づけますが、例えば1ポイントと100ポイントの極端な違いを区別しません。この二つの場合、結果は同じになり、買われ過ぎ/売られ過ぎのシグナルが生成されます。

しかし、閾値を使用することで、重要な振幅のみを考慮できます。

図1(EURUSD, 1M)には、価格チャート、標準ストキャスティクス、および提案されたインジケーターが示されています。

画像:

図1.

インジケーターのフィールドはiStochasticと同様ですが、追加のパラメータSens(感度)があります。

出力バッファは同じで、0がストキャスティクスの値、1がシグナルラインです。

double iCustom(string symbol, int timeframe, "_StochNR", int %Kperiod, int %Dperiod, 
int slowing, int method, int price_field, int mode, int shift); // StochNR 追加のSensフィールド

double iStochastic(string symbol, int timeframe, int %Kperiod, int %Dperiod, 
int slowing, int method, int price_field, int mode, int shift) // 標準ストキャスティクス

実際の使用においては、上記のように呼び出すことも可能ですが、別の方法で行う方が良いです。自分のストキャスティクス関数に以下のコードを追加してください:

double Stoch(int Kperiod, int Slowing, int PriceField, double sens, int i) {
   // 最大価格と最小価格
   double max,min,c;
   for(int j=i; j<i+Slowing; j++) {
      if(PriceField==1) { // Closeの場合
         max+=Close[ArrayMaximum(Close,Kperiod,j)];
         min+=Close[ArrayMinimum(Close,Kperiod,j)];
        }
      else { // High/Lowの場合
         max+=High[ArrayMaximum(High,Kperiod,j)];
         min+=Low[ArrayMinimum(Low,Kperiod,j)];
        }
      c+=Close[j];
     }
   
   double delta=max-min;
   if(delta<sens) {
      sens/=2;
      max+=sens; min-=sens;
     }
   delta=max-min;
   if(delta==0) double s0=1;
   else s0=(c-min)/delta;

   return(100*s0);
  }

シグナルラインが必要な場合、追加の移動平均をその値に適用する必要があります。別の方法として、iCustomの1番目のバッファから取得することもできますが、遅くなります。

ご覧の通り、今や名前がより情報を提供する形になっており、価格計算のタイプが含まれています。感度が0より大きい場合、その値がオシレーターの名前に追加されます。


編集者の注記:

これは元のロシア語バージョンのミラー翻訳であることに注意してください。

著者への質問、提案、コメントがある場合は、こちらに投稿するのが良いでしょう。

このコードが取引や教育目的に役立った場合は、著者に感謝の気持ちを忘れずに伝えましょう。

関連記事

コメント (0)