MQL4学習におけるiBands関数の使い方(サンプルソースあり)

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は非常にシンプルなロジックで動作しますが、実際の取引に使用する際は、より詳細な市場分析やリスク管理を考慮する必要があります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

池田 直哉 池田 直哉 メタプロアカデミー創業者・講師

オリジナルのEAを作ることができるようになるWebスクール【メタプロアカデミー】を運営しています。プログラミング未経験の方が最短1ヵ月で勝てるオリジナルEAが作れるようになります。

目次