ホーム » FX自動売買基礎と応用 » MT5で多色ローソク足の表示ツールを作成する【MQLプログラミングの基礎】

MT5で多色ローソク足の表示ツールを作成する【MQLプログラミングの基礎】

1.ファイルの新規作成

この記事では、指定した出来高(ボリューム)に合わせて、ローソク足の色を変化させるツールを作成します。

※この記事はMQL5の内容です。

インジケーターの表示スタイルとしてローソク足を描画したり、色を指定して変化させたりする方式は、MT4にはありませんでした。

MT5で新たに追加された機能となります。

MetaEditorの「新規作成」アイコンをクリックしてMQLウィザードを開始します。

MQLウィザード新規作成_MT5で多色ローソク足の表示ツールを作成する【MQLプログラミングの基礎】

「カスタムインディケータ」を選択して「次へ」をクリック。

一般プロパティ_MT5で多色ローソク足の表示ツールを作成する【MQLプログラミングの基礎】

ファイル名は「Colorful_Candle.mq5」とします。

色変化の判定値(VOLUME)を追加し、タイプは「int」、初期値は「200」として「次へ」をクリック。

イベントハンドラ_MT5で多色ローソク足の表示ツールを作成する【MQLプログラミングの基礎】

イベントハンドラは一番上のOnCalculateのみを選択し、「次へ」をクリック。

描画プロパティ_MT5で多色ローソク足の表示ツールを作成する【MQLプログラミングの基礎】

「カスタムインディケータの描画プロパティ」では、ローソク足表示用のバッファ「Candle」を追加します。

タイプは「Color Candles」を選択してください。

色は6色利用するので、左から「Red、DodgerBlue、White、HotPink、Aqua、Yellow」の順で指定します(「カラー」の下の白い四角形をダブルクリックすると、色を選択できます)。

「完了」をクリックすれば、ファイルのベースが作成されます。

2.ローソク足を表示

OnCalculate関数内に下記を追記し、ローソク足を表示させます。


   int limit = prev_calculated > 0 ? prev_calculated - 1 : 0;
   for (int i = limit; i < rates_total; i++) {
      CandleBuffer1[i] = open[i];
      CandleBuffer2[i] = high[i];
      CandleBuffer3[i] = low[i];
      CandleBuffer4[i] = close[i];
      CandleColors[i] = 0;
   }

多色ローソク足を表示する指標スタイル「DRAW_COLOR_CANDLES」は5つのバッファを持ち、最初の4つがローソク足の4本値です(始値・高値・安値・終値の順)。

5つ目が色を番号指定するバッファとなっています。

上記のfor文にて、全足のバッファに4本値を入力しています。

現在の回路の状態では、全ての足に色番号0を指定しているので、全足が赤色となります。

コンパイルしてチャートにセットすると、赤いローソク足の表示が確認できます。

ローソク足1色表示_MT5で多色ローソク足の表示ツールを作成する【MQLプログラミングの基礎】

3.ローソク足を色分け表示

下記のルールで色分けします。

①ティックボリュームがパラメーターVOLUME未満

  • ・陽線:Red
  • ・陰線:DodgerBlue
  • ・十字線:White

②ティックボリュームがパラメーターVOLUME以上

  • ・陽線:HotPink
  • ・陰線:Aqua
  • ・十字線:Yellow

条件に合わせて色分けするため、for文内の「CandleColors[i] = 0;」を下記に書き換えます。


      if (tick_volume[i] < VOLUME) {
         if (close[i] > open[i]) CandleColors[i] = 0; // 陽線
         else if (close[i] < open[i]) CandleColors[i] = 1; // 陰線
         else CandleColors[i] = 2; // 十字線
      } else {
         if (close[i] > open[i]) CandleColors[i] = 3; // 陽線
         else if (close[i] < open[i]) CandleColors[i] = 4; // 陰線
         else CandleColors[i] = 5; // 十字線
      }

上記までの作業で、今回の多色ローソク足ツールは完成です。

コンパイルすると、条件に合わせての色変化を確認できます。

多色ローソク足表示_MT5で多色ローソク足の表示ツールを作成する【MQLプログラミングの基礎】

4.ソースコード

今回、作成したソースコードは下記の通りです。


//+------------------------------------------------------------------+
//|                                              Colorful_Candle.mq5 |
//|                                  Copyright 2025, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_plots   1
//--- plot Candle
#property indicator_label1  "Candle"
#property indicator_type1   DRAW_COLOR_CANDLES
#property indicator_color1  clrRed,clrDodgerBlue,clrWhite,clrHotPink,clrAqua,clrYellow
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input int      VOLUME=200;
//--- indicator buffers
double         CandleBuffer1[];
double         CandleBuffer2[];
double         CandleBuffer3[];
double         CandleBuffer4[];
double         CandleColors[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,CandleBuffer1,INDICATOR_DATA);
   SetIndexBuffer(1,CandleBuffer2,INDICATOR_DATA);
   SetIndexBuffer(2,CandleBuffer3,INDICATOR_DATA);
   SetIndexBuffer(3,CandleBuffer4,INDICATOR_DATA);
   SetIndexBuffer(4,CandleColors,INDICATOR_COLOR_INDEX);
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int32_t rates_total,
                const int32_t 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 int32_t &spread[])
  {
//---
   int limit = prev_calculated > 0 ? prev_calculated - 1 : 0;
   for (int i = limit; i < rates_total; i++) {
      CandleBuffer1[i] = open[i];
      CandleBuffer2[i] = high[i];
      CandleBuffer3[i] = low[i];
      CandleBuffer4[i] = close[i];
      if (tick_volume[i] < VOLUME) {
         if (close[i] > open[i]) CandleColors[i] = 0; // 陽線
         else if (close[i] < open[i]) CandleColors[i] = 1; // 陰線
         else CandleColors[i] = 2; // 十字線
      } else {
         if (close[i] > open[i]) CandleColors[i] = 3; // 陽線
         else if (close[i] < open[i]) CandleColors[i] = 4; // 陰線
         else CandleColors[i] = 5; // 十字線
      }
   }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

本記事の監修者・HT FX

2013年にFXを開始し、その後専業トレーダーへ。2014年からMT4/MT5のカスタムインジケーターの開発に取り組む。ブログでは100本を超えるインジケーターを無料公開。投資スタイルは自作の秒足インジケーターを利用したスキャルピング。

EA(自動売買)を学びたい方へオススメコンテンツ

EA運用の注意点

OANDAではEA(自動売買)を稼働するプラットフォームMT4/MT5の基本的な使い方について、画像や動画付きで詳しく解説しています。MT4/MT5のインストールからEAの設定方法までを詳しく解説しているので、初心者の方でもスムーズにEA運用を始めることが可能です。またOANDAの口座をお持ちであれば、独自開発したオリジナルインジケーターを無料で利用することもできます。EA運用をお考えであれば、ぜひ口座開設をご検討ください。


本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。

この記事をシェアする