MQL4のiBands関数は、ボリンジャーバンド指標の値を計算し取得するために使用される重要な関数です。以下にiBands関数の詳細と使用方法を説明します。
目次
iBands関数の概要
iBands関数は、指定されたパラメータに基づいてボリンジャーバンドの値を計算し、その結果を返します。この関数は、トレンドの強さや方向性、そして価格の変動範囲を分析するのに役立ちます。
関数の構文
double iBands(
string symbol, // 通貨ペア
int timeframe, // 時間軸
int period, // 平均期間
double deviation, // 標準偏差
int bands_shift, // バンドシフト
int applied_price, // 適用価格
int mode, // ラインインデックス
int shift // シフト
);
以下は、パラメータの説明を表にまとめたものです。
パラメータ | 説明 |
---|---|
symbol | 計算対象の通貨ペア(例:USDJPY)。NULLを指定すると現在のチャートシンボルが使用されます。 |
timeframe | 時間軸(例:PERIOD_H1, PERIOD_D1)。0を指定すると現在のチャートの時間軸が使用されます。 |
period | 移動平均の計算期間。 |
deviation | 標準偏差の倍数。通常は2.0が使用されます。 |
bands_shift | バンドの水平方向のシフト。通常は0です。 |
applied_price | 計算に使用する価格タイプ(例:PRICE_CLOSE, PRICE_OPEN)。 |
mode | 取得するバンドの種類(MODE_UPPER, MODE_MAIN, MODE_LOWER)。 |
shift | 現在のバーからのシフト数。0は現在のバーを意味します。 |
使用例
以下は、iBands関数を使用して上部バンド、中央バンド、下部バンドの値を取得する例です。
double upperBand = iBands(NULL, 0, 20, 2.0, 0, PRICE_CLOSE, MODE_UPPER, 0);
double middleBand = iBands(NULL, 0, 20, 2.0, 0, PRICE_CLOSE, MODE_MAIN, 0);
double lowerBand = iBands(NULL, 0, 20, 2.0, 0, PRICE_CLOSE, MODE_LOWER, 0);
この例では、現在のチャートシンボルと時間軸を使用し、20期間の移動平均、2.0の標準偏差、終値を基準として計算しています。
ボリンジャーバンドの解釈
- バンドの幅が広がる:ボラティリティの増加を示唆
- バンドの幅が狭まる:ボラティリティの減少を示唆
- 価格が上部バンドに接近:過買いの可能性
- 価格が下部バンドに接近:過売りの可能性
- 価格がバンドの外に出る:強いトレンドの可能性
iBands関数を使用することで、これらの情報を自動的に取得し、EAやカスタムインジケータに組み込むことができます。
サンプルソース
以下は、MQL4でiBands関数を使用したボリンジャーバンドを利用するEA(エキスパートアドバイザー)のサンプルコードです。このEAは、価格がボリンジャーバンドの上部または下部を超えたときに売買を行います。
//+------------------------------------------------------------------+
//| Bollinger Bands EA Sample |
//| Copyright 2020, Example Co. |
//+------------------------------------------------------------------+
#property strict
//--- input parameters
input int BB_Period = 20; // ボリンジャーバンドの期間
input double BB_Deviation = 2.0; // 標準偏差
input double Lots = 0.1; // ロットサイズ
input int SL = 100; // 損切り(ポイント)
input int TP = 100; // 利確(ポイント)
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double upperBand = iBands(NULL, 0, BB_Period, BB_Deviation, 0, PRICE_CLOSE, MODE_UPPER, 0);
double lowerBand = iBands(NULL, 0, BB_Period, BB_Deviation, 0, PRICE_CLOSE, MODE_LOWER, 0);
double currentPrice = Close[0];
// Check for buy condition
if(currentPrice < lowerBand)
{
if(OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, Ask - SL * Point, Ask + TP * Point, "Buy Order", 0, 0, clrGreen) < 0)
Print("Error opening buy order: ", GetLastError());
}
// Check for sell condition
if(currentPrice > upperBand)
{
if(OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, Bid + SL * Point, Bid - TP * Point, "Sell Order", 0, 0, clrRed) < 0)
Print("Error opening sell order: ", GetLastError());
}
}
//+------------------------------------------------------------------+
コードの説明
- BB_Period: ボリンジャーバンドの計算に使用する期間を設定します。
- BB_Deviation: 標準偏差を設定します。通常は2.0が使用されます。
- Lots: 取引するロットサイズを指定します。
- SL: 損切りポイントを設定します。
- TP: 利確ポイントを設定します。
EAの動作
- 現在の価格がボリンジャーバンドの下部を下回った場合、買い注文を出します。
- 現在の価格がボリンジャーバンドの上部を上回った場合、売り注文を出します。
このEAは非常にシンプルなロジックで動作しますが、実際の取引に使用する際は、より詳細な市場分析やリスク管理を考慮する必要があります。