オシレーター系のテクニカル指標は、相場の「売られ過ぎ」「買われ過ぎ」に使われる指標です。
相場の値動きが、一定の範囲で行ったり来たりすることに注目して造られています。
オシレーター系のテクニカル指標で、最も使われているのは「RSI」でしょうか。
ですが、今回は「RSI」ではなく、「ストキャスティクス(ストキャス)」をご紹介します。
「RSI」と「ストキャスティクス」どちらを使えば良いのか?
オシレーター系のテクニカル指標の「RSI」と「ストキャスティクス」は、同じような使い方になります。
どちらも「売られ過ぎ」「買われ過ぎ」を判断する「上限」「下限」ラインに到達した後の「反転」を狙ってエントリーします。
・範囲の下限に来たら「売られ過ぎ」のため、「買い」エントリー
・範囲の上限に来たら「買われ過ぎ」のため、「売り」エントリー
・範囲の上限に来たら「買われ過ぎ」のため、「売り」エントリー
どちらを使えば良いかと言うと、自分が使いやすい方を使えば良いと思います。
僕が使いやすいのが「ストキャス」なので、今回は「ストキャス」にしています。
MQL4では、「RSI」は「iRSI関数」、「ストキャスティクス」は「iStochastic関数」を使います。
iStochastic関数の書式
double iStochastic(
string symbol, // 通貨ペア
int timeframe, // 時間軸
int Kperiod, // %K期間
int Dperiod, // %D期間
int slowing, // スローイング
int method, // 移動平均の種類
int applied_field, // 価格
int mode, // ラインの種類
int shift // シフト
);

iStochastic関数の引数
例えば、MT4の初期値で価格を取得する場合、
引数例)
引数名 | 設定値 | 設定内容 |
---|---|---|
symbol | NULL | 現在の通貨ペア |
timeframe | 0 | 現在の時間軸 |
Kperiod | 5 | %K期間 |
Dperiod | 3 | %D期間 |
slowing | 3 | スローイング |
method | 0 | 単純移動平均(Simple) |
applied_field | 0 | 安値/高値(Low/High) |
mode | MODE_MAIN | メインのライン |
shift | 0 | 現在の足 |
ゴールデンクロス、デッドクロスでエントリーするコード


ストキャスティクスの下限「20」以下で「メイン」と「シグナル」の「ゴールデンクロス」で、エントリーしよう。
「売られ過ぎ」ゾーンで「買いエントリー」する場面ですね。
ストキャスの初期値で、判定してみましょう。
コード例)
// ストキャス(%K=5, %D=3, SLOW=3, メイン)
double stMain = iStochastic (NULL, 0, 5, 3, 3, 0, 0, MODE_MAIN, 0); //現在足
double stMain_1 = iStochastic (NULL, 0, 5, 3, 3, 0, 0, MODE_MAIN, 1); //1本前足
// ストキャス(%K=5, %D=3, SLOW=3, シグナル)
double stSignal = iStochastic (NULL, 0, 5, 3, 3, 0, 0, MODE_SIGNAL, 0); //現在足
double stSignal_1 = iStochastic (NULL, 0, 5, 3, 3, 0, 0, MODE_SIGNAL, 1); //1本前足
//ストキャスクロス判定
if( stMain >= stSignal && stMain_1 < stSignal_1 && // ゴールデンクロス
stMain <= 20 && stMain <= 20 // 下限20以下
){
// ここでエントリー処理
}
逆に「買われ過ぎ」ゾーンで、「売りエントリー」する場合は、
コード例)
// ストキャス(%K=5, %D=3, SLOW=3, メイン)
double stMain = iStochastic (NULL, 0, 5, 3, 3, 0, 0, MODE_MAIN, 0); //現在足
double stMain_1 = iStochastic (NULL, 0, 5, 3, 3, 0, 0, MODE_MAIN, 1); //1本前足
// ストキャス(%K=5, %D=3, SLOW=3, シグナル)
double stSignal = iStochastic (NULL, 0, 5, 3, 3, 0, 0, MODE_SIGNAL, 0); //現在足
double stSignal_1 = iStochastic (NULL, 0, 5, 3, 3, 0, 0, MODE_SIGNAL, 1); //1本前足
//ストキャスクロス判定
if( stMain <= stSignal && stMain_1 > stSignal_1 && // ゴールデンクロス
stMain >= 80 && stMain >= 80 // 下限20以下
){
// ここでエントリー処理
}
ストキャスなどのオシレーター系は、タイミングを計る際に使うことが多くなります。
トレンドフォロー系のインジケーターと一緒に使うと、トレンドの流れに乗るタイミングが分かりやすくて良いですね。
また、エントリーのタイミングで、「矢印」や「アラート」「メール」などの通知をしたい場合は、下記の記事も合わせて読んでみて下さい。