Donchian channelのダウンロードと解説|MT4インジケーター

Donchian Channelアイキャッチ
  • URLをコピーしました!

ドンチャンチャネルのインジケーターがMT4に欲しいです。

ホシノ

FXの不労所得だけで年収2000万を達成しました。
このお悩みに誠意をもって回答します。

BBF_MQL5-202400601
リアルトレード公開|EA BBF

このページでわかること・できること

〇Donchian channelインジケーターのダウンロード

〇Donchian channelとはどんなインジケーターなのか?

目次

Donchian channelのダウンロード

インジケーターのファイルはここからダウンロードできる。
ダウンロードするファイルは.ex4ファイルとなっているため、MT4のインジケーターフォルダへ移動すれば使用可能となる。

Donchian channelインジケーターのインストール

ダウンロードしたDonchian channelインジケーターはMT4のデータフォルダからindicatorsフォルダを探しファイルを移動する。

ファイル>データフォルダを開く>MQL4>indicators

indicatorsフォルダにファイルを移動し、MT4を再起動するとインストールが完了する。

Donchian channelインジケーターとは?

ドンチャンチャネルチャート画像
ドンチャンチャネル

Donchian Channelは、Richard Donchianによって開発されたトレンドフォローのインジケーターだ。特定の期間における最高値と最安値をチャート上に表示し、トレンドの方向性やボラティリティを視覚的に捉えることができる。Donchian Channelは、価格が一定期間の範囲内でどの位置にあるのかを示し、トレンドの発見やブレイクアウトの予測に役立つ。

Donchian Channelの構成

Donchian Channelは、3つのラインで構成されている。

  1. 上限ライン(Upper Line):
    • 指定された期間内の最高値をプロットする。
  2. 下限ライン(Lower Line):
    • 指定された期間内の最安値をプロットする。
  3. 中央ライン(Middle Line):
    • 上限ラインと下限ラインの中間値をプロットする。

計算方法

Donchian Channelの計算手順は以下。

データの準備

  • 期間(Period):計算に使用する過去のデータの期間数。例えば、20期間と設定した場合、過去20バーのデータを使用する。
  • 価格データ:高値(High)、安値(Low)、終値(Close)などの価格データ。

2. 上限ラインの計算

指定した期間内の最高値を計算する。例えば、期間が20の場合、過去20期間の中で最も高い高値を見つける。

[math]{Upper Line}_t = \max(\text{High}_{t-19}, \text{High}_{t-18}, \ldots, \text{High}_t)[/math]

3. 下限ラインの計算

指定した期間内の最安値を計算する。例えば期間が20の場合、過去20期間の中で最も低い安値を見つける。

[math]{Lower Line}_t = \min(\text{Low}_{t-19}, \text{Low}_{t-18}, \ldots, \text{Low}_t)[/math]

4. 中央ラインの計算

上限ラインと下限ラインの中間値を計算する。

[math]{Middle Line}_t = \frac{\text{Upper Line}_t + \text{Lower Line}_t}{2}[/math]

使用方法

  1. トレンドの識別:
    • 上限ラインと下限ラインが広がっている場合、ボラティリティが高いことを示す。
    • ラインが狭まっている場合、ボラティリティが低いことを示す。
  2. ブレイクアウトの検出:
    • 価格が上限ラインを超えると、上昇トレンドの可能性がある。
    • 価格が下限ラインを下回ると、下降トレンドの可能性がある。
  3. トレードのエントリーとエグジット:
    • トレーダーは、価格が上限ラインを超えた時に買いポジションを取り、下限ラインを下回った時に売りポジションを取ることができる。
    • 利益確定や損切りのポイントとしても使用できる。

パラメータ

DonchianChannelパラメーター画面
DonchianChannelインジケーターのパラメーター画面
  1. 計算期間(Period):
    • Donchian Channelの計算に使用する期間を設定する。一般的には20期間が使用されるが、トレーダーの戦略に応じて調整が可能。
  2. 価格タイプ(Price Type):
    • どの価格を使用するか設定する(例:高値、安値、終値など)。
  3. ラインのスタイルと色(Line Style and Color):
    • 各ラインの表示スタイルや色を設定できる。これにより、チャート上での視認性が向上する。
  4. シフト(Shift):
    • ラインを現在の価格から何バー後ろにシフトするかを設定できる。
  5. アラート機能(Alerts):
    • チャネルの上限または下限を突破したときにアラートを発する機能を追加できる。これにより、トレーダーは重要な価格変動を見逃さないようにできる。

チャートにインジケーターが適用される期間

Donchian Channelは指定された期間の最高値と最安値を基に計算されるため、計算には過去のデータが必要となる。したがって、指定された期間(デフォルトは20期間)の足にインジケーターは表示されない。

Donchian Channelのプログラム

//+------------------------------------------------------------------+
//|                                               DnchianChannel.mq4 |
//|                                     Copyright 2024, FX-Bonus.net |
//|                                            https://fx-bonus.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, FX-Bonus.net"
#property link      "https://fx-bonus.net/"
#property version   "1.00"
#property strict

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Green

//--- input parameters
input int period = 20;                         // 計算期間
input ENUM_APPLIED_PRICE priceType = PRICE_CLOSE; // 使用する価格タイプ
input color upperColor = Blue;                 // 上限ラインの色
input color lowerColor = Red;                  // 下限ラインの色
input color middleColor = Green;               // 中央ラインの色
input int lineWidth = 1;                       // ラインの太さ
input int shift = 0;                           // ラインのシフト
input bool alertsOnBreakout = false;           // ブレイクアウトアラート

//--- indicator buffers
double UpperBuffer[];
double LowerBuffer[];
double MiddleBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   // Indicator buffers mapping
   SetIndexBuffer(0, UpperBuffer);
   SetIndexBuffer(1, LowerBuffer);
   SetIndexBuffer(2, MiddleBuffer);
   
   // Indicator lines descriptions
   SetIndexLabel(0, "Upper Line");
   SetIndexLabel(1, "Lower Line");
   SetIndexLabel(2, "Middle Line");
   
   // Indicator styles
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, lineWidth, upperColor);
   SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, lineWidth, lowerColor);
   SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, lineWidth, middleColor);

   // Indicator parameters
   IndicatorShortName("Donchian Channel (" + IntegerToString(period) + ")");
   
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   // 必要なバー数が不足している場合は計算しない
   if (rates_total < period) return 0;
   
   // 初期化の範囲を決定
   int start = (prev_calculated == 0) ? period : prev_calculated - 1;
   
   // 指定期間の高値と安値を計算
   for(int i = start; i < rates_total; i++)
     {
      double highestHigh = high[i];
      double lowestLow = low[i];
      
      for(int j = 1; j < period; j++)
        {
         if(i - j < 0) break;
         if(high[i - j] > highestHigh) highestHigh = high[i - j];
         if(low[i - j] < lowestLow) lowestLow = low[i - j];
        }
        
      UpperBuffer[i + shift] = highestHigh;
      LowerBuffer[i + shift] = lowestLow;
      MiddleBuffer[i + shift] = (highestHigh + lowestLow) / 2;
      
      // ブレイクアウトのアラート
      if(alertsOnBreakout && i > start)
        {
         if(close[i - 1] <= UpperBuffer[i - 1] && close[i] > UpperBuffer[i])
           Alert("価格が上限Donchian Channelを上抜けました: ", TimeToString(time[i], TIME_DATE|TIME_MINUTES));
         if(close[i - 1] >= LowerBuffer[i - 1] && close[i] < LowerBuffer[i])
           Alert("価格が下限Donchian Channelを下抜けました: ", TimeToString(time[i], TIME_DATE|TIME_MINUTES));
        }
     }
   
   return(rates_total);
  }
//+------------------------------------------------------------------+

ソースコードを詳しく解説

このコードは、MetaTrader 4 (MT4) プラットフォーム上で動作するカスタムインジケーター「Donchian Channel」をMQL4言語で実装したものだ。このインジケーターは、特定の期間内の最高値と最安値を基に上限ライン、下限ライン、中央ラインを描画する。

コードの詳細解説

1. プロパティの設定

#property strict

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Green
  • #property strict:
    • コードの厳密なエラーチェックを有効する。
  • #property indicator_chart_window:
    • インジケーターをメインチャートウィンドウに描画する。
  • #property indicator_buffers 3:
    • 3つのバッファ(上限ライン、下限ライン、中央ライン)を使用することを示す。
  • #property indicator_color1 Blue#property indicator_color2 Red#property indicator_color3 Green:
    • 各バッファのデフォルトの色を設定する。

2. 入力パラメータ

input int period = 20;                         // 計算期間
input ENUM_APPLIED_PRICE priceType = PRICE_CLOSE; // 使用する価格タイプ
input color upperColor = Blue;                 // 上限ラインの色
input color lowerColor = Red;                  // 下限ラインの色
input color middleColor = Green;               // 中央ラインの色
input int lineWidth = 1;                       // ラインの太さ
input int shift = 0;                           // ラインのシフト
input bool alertsOnBreakout = false;           // ブレイクアウトアラート
  • period:
    • Donchian Channelの計算期間を指定。
  • priceType:
    • 使用する価格タイプ(終値、始値、高値、安値など)を指定。
  • upperColor, lowerColor, middleColor:
    • 各ラインの色を指定。
  • lineWidth:
    • ラインの太さを指定。
  • shift:
    • ラインのシフトを指定。
  • alertsOnBreakout:
    • ブレイクアウト時にアラートを表示するかどうかを指定。

3. インジケーターバッファの定義

double UpperBuffer[]; double LowerBuffer[]; double MiddleBuffer[];

  • UpperBuffer:
    • 上限ラインの値を保持するバッファ。
  • LowerBuffer:
    • 下限ラインの値を保持するバッファ。
  • MiddleBuffer:
    • 中央ラインの値を保持するバッファ。

4. OnInit関数

int OnInit()
  {
   // Indicator buffers mapping
   SetIndexBuffer(0, UpperBuffer);
   SetIndexBuffer(1, LowerBuffer);
   SetIndexBuffer(2, MiddleBuffer);
   
   // Indicator lines descriptions
   SetIndexLabel(0, "Upper Line");
   SetIndexLabel(1, "Lower Line");
   SetIndexLabel(2, "Middle Line");
   
   // Indicator styles
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, lineWidth, upperColor);
   SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, lineWidth, lowerColor);
   SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, lineWidth, middleColor);

   // Indicator parameters
   IndicatorShortName("Donchian Channel (" + IntegerToString(period) + ")");
   
   return(INIT_SUCCEEDED);
  }
  • SetIndexBuffer:
    • 各バッファをインジケーターのインデックスにマッピングする。
  • SetIndexLabel:
    • 各バッファにラベルを設定。
  • SetIndexStyle:
    • 各バッファの描画スタイルを設定。
  • IndicatorShortName:
    • インジケーターの短い名前を設定。

5. OnCalculate関数

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   // 必要なバー数が不足している場合は計算しない
   if (rates_total < period) return 0;
   
   // 初期化の範囲を決定
   int start = (prev_calculated == 0) ? period : prev_calculated - 1;
   
   // 指定期間の高値と安値を計算
   for(int i = start; i < rates_total; i++)
     {
      double highestHigh = high[i];
      double lowestLow = low[i];
      
      for(int j = 1; j < period; j++)
        {
         if(i - j < 0) break;
         if(high[i - j] > highestHigh) highestHigh = high[i - j];
         if(low[i - j] < lowestLow) lowestLow = low[i - j];
        }
        
      UpperBuffer[i + shift] = highestHigh;
      LowerBuffer[i + shift] = lowestLow;
      MiddleBuffer[i + shift] = (highestHigh + lowestLow) / 2;
      
      // ブレイクアウトのアラート
      if(alertsOnBreakout && i > start)
        {
         if(close[i - 1] <= UpperBuffer[i - 1] && close[i] > UpperBuffer[i])
           Alert("価格が上限Donchian Channelを上抜けました: ", TimeToString(time[i], TIME_DATE|TIME_MINUTES));
         if(close[i - 1] >= LowerBuffer[i - 1] && close[i] < LowerBuffer[i])
           Alert("価格が下限Donchian Channelを下抜けました: ", TimeToString(time[i], TIME_DATE|TIME_MINUTES));
        }
     }
   
   return(rates_total);
  }
  • OnCalculate:
    • インジケーターのメイン計算関数。
  • if (rates_total < period) return 0;:
    • 必要なバー数が不足している場合、計算をスキップする。
  • int start = (prev_calculated == 0) ? period : prev_calculated - 1;:
    • 計算の開始位置を決定します。初回計算時はperiodから開始し、それ以降は前回の計算位置から再開する。
  • 指定期間内の高値と安値を計算:
    • 内部ループで指定期間内の最高値と最安値を計算する。
  • UpperBuffer[i + shift] = highestHigh;:
    • 上限ラインの値を設定。
  • LowerBuffer[i + shift] = lowestLow;:
    • 下限ラインの値を設定。
  • MiddleBuffer[i + shift] = (highestHigh + lowestLow) / 2;:
    • 中央ラインの値を設定。
  • ブレイクアウトのアラート:
    • alertsOnBreakouttrueの場合、価格が上限ラインを上抜けた場合や下限ラインを下抜けた場合にアラートを表示する。

まとめ

このDonchian Channelインジケーターは、特定の期間内の最高値と最安値を基にトレンドを視覚的に示し、ブレイクアウトのシグナルを提供する。これにより、トレーダーはトレンドの方向性を把握し、適切なトレードのエントリーポイントを見つけることができる。

MT4インジケーターまとめ

  • URLをコピーしました!
  • URLをコピーしました!

このEAを使って、将来の見通しが立ちました

収入を増やしたい、将来のための資産が欲しい、支払いに縛られない自由な生活がしたい

このEAを使うと将来が見通せます。

22年以上で無敗の安定取引。リスク0%運用も可能なロジック。年利100%越えの上級者向け取引も可能。

マネーマシンとして育て上げることで大きな不労所得を得られます。

BBF-Girl
ドリームEA_BBF 無料ダウンロード
BBF_MQL5-202400601
リアルトレード公開|EA BBF

ポジション監視の時間

集中力は続いてますか?


オートクローズツールを使ってポジション管理を自動化


自動ポジション管理だから万が一でも大丈夫

あなたは空いた時間を自由に、効率的に使えます

自動決済ルールは独自にカスタム可能

ストップ、リミット変更にも対応。

エントリー後のポジション管理をすべて自動化できるトレーディングサポートツール。

トレード中のちょっとした離席など、念のためセットといった使い方も可能。

MT4用自動決済ツール【AutoCloseTool】は無料で入手できます。

オートクローズツール

取引ごとにキャッシュバックが発生します

もらわないだけ損している
取引ごとに毎回発生する現金のキャッシュバック
海外FXのキャッシュバックはメリットしかないサービスです

取引ごとにキャッシュバック
目次