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

Mike 2009.11.23 20:07 37 0 0
添付ファイル

説明:

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

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

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

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

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

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

画像:

図1.

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

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

doubleiCustom(string symbol,int timeframe,"_StochNR",int%Kperiod,int%Dperiod,int slowing,int method,int price_field,int mode,int shift);// StochNR 追加のSensフィールドdoubleiStochastic(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