MetaTrader4
ノイズ削減付きストキャスティクス - MetaTrader 4用インジケーター
説明:
感度機能を備えた標準ストキャスティクスオシレーター。
このインジケーターは標準のストキャスティクスと同じパラメータを持ちながら、追加の「感度」パラメータ(パラメータウィンドウの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より大きい場合、その値がオシレーターの名前に追加されます。
編集者の注記:
これは元のロシア語バージョンのミラー翻訳であることに注意してください。
著者への質問、提案、コメントがある場合は、こちらに投稿するのが良いでしょう。
このコードが取引や教育目的に役立った場合は、著者に感謝の気持ちを忘れずに伝えましょう。
2009.11.23