説明:
感度機能を備えた標準ストキャスティクスオシレーター。
このインジケーターは標準のストキャスティクスと同じパラメータを持ちながら、追加の「感度」パラメータ(パラメータウィンドウの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