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