iBands関数の働き・役割
iBands関数は、ボリンジャーバンドに関する計算を行い、そのハンドル値を返します。
※ハンドルとは、インジケータの値を取得する為の鍵のようなものです。
ボリンジャーバンドは相場のボラティリティを視覚化し、価格がバンドの上限や下限に達することで売買シグナルを見つけるのに役立ちます。
※ボリンジャーバンドに関する詳細は↓の記事リンクをご参照ください。
iBands関数の引数について
int iBands(
string symbol, // 銘柄名
ENUM_TIMEFRAMES period, // 期間
int bands_period, // 平均線の計算の期間
int bands_shift, // 指標の水平シフト
double deviation, // 標準偏差
ENUM_APPLIED_PRICE applied_price // 価格の種類またはハンドル
);
symbol (string)
symbolは、データが指標計算に使用される銘柄名を指定します。
- 例:
"EURUSD"
period (ENUM_TIMEFRAMES)
periodは、チャートの時間枠を指定します。
- 例:
PERIOD_H1
(1時間足)
bands_period (int)
bands_periodは、ボリンジャーバンドの平均期間を指定します。
- 例:
20
bands_shift (int)
bands_shiftは、ボリンジャーバンドの水平シフトを指定します。
※水平シフトは、ボリンジャーバンドを右または左に移動させるバー数を設定します。これにより、過去のデータに対してどのようにボリンジャーバンドが表示されるかを調整できます
例: 0
(シフトなし)
deviation (double)
deviationは、ボリンジャーバンドの標準偏差の倍率を指定します。
- 例:
2.0
※標準偏差についての詳細は↓の記事をご参照ください。
applied_price (ENUM_APPLIED_PRICE)
applied_priceは、使用される価格の種類を指定します。
- 例:
PRICE_CLOSE
(終値)
iBands関数の戻り値について
iBands関数は、指定された条件に基づいて計算されたボリンジャーバンドのハンドルを返します。計算に失敗した場合はINVALID_HANDLEを返します。
※INVALID_HANDLEについての詳細は↓の記事をご参照ください
iBands関数を使う際の注意点
MQL4とは違い、MQL5ではボリンジャーバンドの値の取得がiBands関数だけでは完結しません。MQL4では指定されたインデックスのボリンジャーバンドの値を直接返していましたが、MQL5のiBands関数が返すのはあくまでボリンジャーバンドのハンドル値です。
MQL5では、ボリンジャーバンドの値を取得するためにiBands関数を使用する際、以下の工程をたどる必要があります。
- 値を格納する配列の宣言
- iBands関数によるハンドル(ボリンジャーバンドの値を取得する鍵のようなもの)の取得
- ArraySetAsSeries関数による、配列の時系列セット
- CopyBuffer関数による、ボリンジャーバンドの値情報を配列にコピー
これらのステップを踏むことで、iBands関数を用いてボリンジャーバンドの各値を正確に取得することができます。
iBands関数を使ったサンプルコード
以下に、iBands関数を使用してボリンジャーバンドを取得し、エキスパートログに出力するサンプルコードを示します。
// OnStart関数はスクリプトの実行が開始されたときに自動的に呼び出されます
void OnStart()
{
// 使用する通貨ペアと時間枠を設定します
string symbol = "EURUSD";
ENUM_TIMEFRAMES period = PERIOD_H1;
// ボリンジャーバンドの設定値を定義します
int bands_period = 20;
int bands_shift = 0;
double deviation = 2.0;
ENUM_APPLIED_PRICE applied_price = PRICE_CLOSE;
// ボリンジャーバンドの指標ハンドルを取得します
int handle = iBands(symbol, period, bands_period, bands_shift, deviation, applied_price);
// 指標ハンドルが有効かどうか確認します
if(handle == INVALID_HANDLE)
{
Print("iBands指標ハンドルの取得に失敗しました");
return;
}
// ボリンジャーバンドの上限、中間、下限の値を取得します
double upperBand[];
double middleBand[];
double lowerBand[];
CopyBuffer(handle, 1, 0, 3, upperBand);
CopyBuffer(handle, 0, 0, 3, middleBand);
CopyBuffer(handle, 2, 0, 3, lowerBand);
// 取得したボリンジャーバンドの値をエキスパートログに出力します
Print("ボリンジャーバンドの上限: ", upperBand[0]);
Print("ボリンジャーバンドの中間: ", middleBand[0]);
Print("ボリンジャーバンドの下限: ", lowerBand[0]);
}
サンプルコードに使われた関数や文法要素の簡単な解説
void OnStart()
OnStart関数はスクリプトが実行されるときに自動的に呼び出される関数です。
string symbol = “EURUSD”;
symbolは、通貨ペアを表す文字列変数を定義しています。
ENUM_TIMEFRAMES period = PERIOD_H1;
periodは、チャートの時間枠を設定するための変数を定義しています。
int handle = iBands(…)
iBands関数は、今回解説した、ボリンジャーバンドのハンドルを取得するための関数です。引数としてシンボル名、時間枠、平均期間、シフト値、標準偏差、適用価格を取ります。
CopyBuffer(handle, 1, 0, 3, upperBand);
CopyBuffer関数は、指標バッファからデータをコピーするための関数です。指定されたハンドルとバッファ番号を使って、データを配列にコピーします。
Print(…)
Print関数は、エキスパートログにメッセージを出力するための関数です。
iSAR関数/iStochastic関数/iMA関数/iATR関数/iRSI関数
————————————————————————————–
※当サイトでは、プログラミング経験ゼロの方でも、プログラミングの基礎から学べる
をメインコンテンツとして展開しています。
→【クライマックス編・これまでにやってきたことを全て使ってEAを完成させる】
第0回から、順を追って勉強していけばプログラミングの経験がなくてもMQL5を使って、MT5用のEAが作れるように書いています。最初は難しいと感じるかもしれませんが、繰り返し勉強していく事で自然とスキルが身についていくはずです。興味ある方は是非ご覧ください。
コメント