iStochastic 関数
この関数は、任意に設定したパラメータのストキャスティクスの値を計算して、その値を取得します。ストキャスティクスはオシレータ系のインジケータに分類されます。
ストキャスティクス
ストキャスティクスは、FXトレードにおいてよく使われるテクニカル指標の1つで、価格がどれだけ上昇・下降しているかを示すオシレーターです。価格が一定期間内にどの程度の範囲で変動したかを基に計算され、0~100の範囲内で値を示します。
ストキャスティクスは、価格が上昇トレンドである場合には80以上、下降トレンドである場合には20以下でオーバーセル(過剰売り)となり、逆に価格が上昇トレンドである場合には20以下、下降トレンドである場合には80以上でオーバーボート(過剰買い)となります。
これらの値が一定期間続くと、価格が反転する可能性が高くなります。また、ストキャスティクスの値同士を比較することで、価格が上昇する可能性が高いか下降する可能性が高いかを判断することもできます。
MT4でチャート上にストキャスティクスをプロットする時はナビゲーター中のインディケータ → 「Stochastic」インジケータを使用します。
(ストキャスティクスの計算式)
ストキャスティクスの計算式は、以下のようになります。
%K = (直近の価格 - 過去n日間の最安値) ÷ (過去n日間の最高値 - 過去n日間の最安値) × 100
%D = %Kのm日間の単純移動平均
通常、ストキャスティクスでは、n=5、m=3が用いられますが、それぞれの線を計算するために必要な日数は、テクニカルアナリストやトレーダーによって異なる場合があります。
(ストキャスティクスの使い方)
ストキャスティクスの値は、市場が買われすぎや売られすぎの状態にあるかどうかを判断するために使うことができます。
一般的に、%Kと%Dのラインが80%以上で推移すると買われすぎ、20%以下で推移すると売られすぎとみなされます。また、%Kと%Dのラインがクロスするときにも売買のサインになります。
例えば、%Kが%Dを上抜け(ゴールデンクロス)したら買い、下抜け(デッドクロス)したら売りと判断します。
データ型と構成・戻り値
double iStochastic(①, ②, ③, ④, ⑤, ⑥, ⑦, ⑧, ⑨);
戻り値は、任意に設定したパラメータのストキャスティクスの値を計算して、その値を返します。
引数 [9]
iStochastic関数は 9個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | symbol | string | - | - | 計算対象の通貨ペア名。 「NULL」は選択チャートの通貨ペア名が選択されます。 |
② | timeframe | int | - | - | 時間軸。ENUM_TIMEFRAMES 列挙値から選択。 「0」は現在チャートの時間軸が選択されます。 |
③ | Kperiod | int | - | - | %Kの計算期間。%Kを計算するバーの数を数値で設定します。 |
④ | Dperiod | int | - | - | %Dの計算期間。%Dを計算するバーの数を数値で設定します。 |
⑤ | slowing | int | - | - | スローイングの計算期間。スローイングを計算するバーの数を数値で設定します。 |
⑥ | method | int | - | - | 移動平均の方法。 ENUM_MA_METHOD 列挙値から選択。 |
⑦ | price_field | int | - | - | 価格フィールドの設定(0か1を選択)。 0:Low/High 1:Close/Close ※通常は1が使われます。 |
⑧ | mode | int | - | - | 結果で算出する線を選択。 iStochastic関数のインジケータライン識別子から選択。 |
⑨ | shift | int | - | - | ストキャスティクスの値を算出するバーの位置。 現在のバーから指定した時間軸のバー数だけ過去へシフトします。例えば、現在のバーからの計算は「0」、 1つ前のバーから計算する時は「1」になります。 |
※⑦の引数「price_field」について、
どちらの価格を使うかは、ストキャスティックの感度やノイズ耐性に影響します。一般的には、Low/Highの方が Close/Closeよりも感度が高く、ノイズに弱いです。
「price_field」が 0(Low/High)の場合は、%Kは以下のようになります。
%K = (C - L5) ÷ (H5 - L5) ✕ 100
ここで、Cは現在の終値、L5は過去5期間の最安値、H5は過去5期間の最高値です。この式は、現在の価格が過去5期間のレンジの中でどれだけ上昇したかを示します。
例えば、現在の価格が過去5期間の最高値と同じなら、%Kは100になります。現在の価格が過去5期間の最安値と同じなら、%Kは0になります。現在の価格が過去5期間のレンジの中央にあるなら、%Kは50になります。
「price_field」が 1(Close/Close)の場合は、%Kは以下のようになります。
%K = (C - C5) ÷ (H5 - L5) ✕ 100
ここで、Cは現在の終値、C5は過去5期間の前日終値です。この式は、現在の価格が前日終値に対してどれだけ変化したかを示します。
例えば、現在の価格が前日終値よりも高いなら、%Kは正の値になります。現在の価格が前日終値よりも低いなら、%Kは負の値になります。現在の価格が前日終値と同じなら、%Kは 0になります。
使用例
iStochastic関数による%Kと%Dの値の計算
iStochastic関数を使って、現在の%Kと%Dの値を計算します。
コード
// iStochastic関数による%Kと%Dの値の計算
#property strict
void OnInit() {
int Kperiod = 5; // %Kの計算期間
int Dperiod = 3; // %Dの計算期間
int slowing = 3; // スローイングの計算期間
double K = iStochastic(NULL, 0, Kperiod, Dperiod, slowing, 0, 0, 0, 0); // %K
double D = iStochastic(NULL, 0, Kperiod, Dperiod, slowing, 0, 0, 1, 0); // %D
Print("ストキャスティクス %K:", K);
Print("ストキャスティクス %D:", D);
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)