iStochastic()関数は、ストキャスティクスの値を取得するために使用します。
なお、MetaTrader4(MT4)におけるストキャスティクスの値は、多くの書籍やwebページで紹介されている計算式とは異なった計算式によって算出されています。
MT4におけるストキャスティクスの値を算出する計算式は、以下のとおりです。
多くの書籍やwebページで紹介されているストキャスティクス(以下「通常のストキャスティクス」という。)の計算式については、「こちら」(作成方法については「こちら」)を参照してください。
iStochastic()関数は、以下のように定義されています。
double iStochastic(
string symbol,
int timeframe,
int Kperiod,
int Dperiod,
int slowing,
int method,
int price_field,
int mode,
int shift
);
各引数の意味は、以下のとおりです。
- string symbol
ストキャスティクスの値を計算する通貨ペア名を指定します。
通貨ペア名は、「気配値表示ウィンドウ」に表示されているとおりに記述します。
特定の通貨ペア名を指定せず、EA等を適用したチャートの通貨ペアのストキャスティクスの値を取得したい場合は、「NULL」と記述します。 - int timeframe
以下の表に従って、ストキャスティクスの値を計算する時間軸を指定します。種 類 定 数 内 容 PERIOD_CURRENT 0 現在の時間足 PERIOD_M1 1 1分足 PERIOD_M5 5 5分足 PERIOD_M15 15 15分足 PERIOD_M30 30 30分足 PERIOD_H1 60 1時間足 PERIOD_H4 240 4時間足 PERIOD_D1 1440 日 足 PERIOD_W1 10080 週 足 PERIOD_MN1 43200 月 足 - int Kperiod
%K期間を指定します。 - int Dperiod
%D期間を指定します。 - int slowing
スローイング期間を指定します。
「1」と指定すると、メインラインは通常のストキャスティクスの%Kラインとなり、シグナルラインは%Dラインとなります(いわゆる「ファーストストキャスティクス」。)。
「2以上」に指定すると、メインラインは%Dラインとなり、シグナルラインはSDラインとなります(いわゆる「スローストキャスティクス」。ただし、上述のように、MT4のストキャスティクスの計算式は通常のストキャスティクスの計算式とは異なるので、通常のストキャスティクスの%Dライン及びSDラインの値とは異なる値が算出されます。)。 - int method
以下の表に従って、シグナルラインを算出する移動平均の種類を指定します。種 類 定 数 内 容 MODE_SMA 0 単純移動平均線 MODE_EMA 1 指数移動平均線 MODE_SMMA 2 平滑移動平均線 MODE_LWMA 3 線形加重移動平均線 - int price_field
ストキャスティクスの値の計算に使用する価格データを指定します。
高値・安値を基にしてストキャスティクスの値を計算したい場合は「0」と記述します。
終値を基にしてストキャスティクスの値を計算したい場合は「1」と記述します。 - int mode
ライン番号を指定します。
メインラインの値を取得したい場合は「0」と記述します。
シグナルラインの値を取得したい場合は「1」と記述します。 - int shift
ストキャスティクスの値を取得したいバーの位置を指定します。
ストキャスティクスの値を取得したいバーが現在のバーであれば「0」、1本前のバーであれば「1」、2本前のバーであれば「2」……と記述します。
具体例
2本前のバーの%Kの値が2本前のバーの%Dの値以下で、かつ、1本前のバーの%Kの値が1本前のバーの%Dの値よりも大きい場合であれば、買いエントリーしたい場合は、以下のように記述します。
double K_Line_1 = iStochastic(NULL,0,5,3,1,0,0,0,1);
double K_Line_2 = iStochastic(NULL,0,5,3,1,0,0,0,2);
double D_Line_1 = iStochastic(NULL,0,5,3,1,0,0,1,1);
double D_Line_2 = iStochastic(NULL,0,5,3,1,0,0,1,2);
if(K_Line_2 <= D_Line_2 && K_Line_1 > D_Line_1)
{
int Ticket
= OrderSend(Symbol(),OP_BUY,0.1,Ask,10,0,0,
NULL,1459,0,Magenta);
}