【MQL4テクニック】自動で背景色を変更する方法。チャート監視の負担を大幅に軽減!

MQL4テクニック

条件を満たした際などに、自動で背景色を変更する方法をご紹介します。

チャートを複数表示している場合、どの通貨ペアからアラートが出たかを探し回った経験はないでしょうか?

背景色を変更することで条件が満たされたチャートを一目で判断することができるので、チャートを監視する負担を大幅に軽減することができます。

ChartSetInteger関数を使用する

ChartSetInteger関数は、チャートのプロパティを設定するための関数です。

bool ChartSetInteger(long chart_id, int prop_id, long value);

引数の意味は以下です。

引数名詳細
chart_idチャートIDを指定します。
0を指定することで、現在のチャートを指定できます。
prop_idチャートプロパティIDを指定します。
背景色を変更する場合は『CHART_COLOR_BACKGROUND』
valueプロパティの値
あなたのやりたいことがきっと見つかる!
MQL4テクニック 逆引き集 はこちら

サンプルコード

RSIが70以上、又は30以下のチャートの背景色を変更します。

以下サンプルコードです。

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[])
{

   double RSI = iRSI(Symbol(), Period(), 14, PRICE_CLOSE, 0);

   if (RSI <= 30 || RSI >= 70){
      ChartSetInteger(0, CHART_COLOR_BACKGROUND, clrDarkBlue);
   }else{
      ChartSetInteger(0, CHART_COLOR_BACKGROUND, clrBlack);
   }

   return(rates_total);

条件が満たされたチャートは自動で背景色が切り替わります。

簡単にコードの説明をしていきます。

   if (RSI <= 30 || RSI >= 70){
      ChartSetInteger(0, CHART_COLOR_BACKGROUND, clrDarkBlue);
   }else{
      ChartSetInteger(0, CHART_COLOR_BACKGROUND, clrBlack);
   }

if分の中には背景色を変更する条件を記載し、ChartSetInteger関数で変更後の色を指定します。

その際に、条件を満たさない場合の動きを必ず記載してください。
これを書き忘れてしまうと、一度条件を満たしたチャートが再度満たさなくなった場合でも背景色が戻らなくなってしまうので注意してください。

ダウンロードリンク

「すぐに使いたい!」という方はこちらからダウンロードしてください。

RSI-bgColorをダウンロード

サンプルコードに加え、以下の機能を追加しています。

  • アラート機能
  • RSIのパラメータ変更
  • RSI表示

パラメータはこちら

GitHubにもアップしています。

POINT

こちらの記事で悩みが解決されない場合は、
MQL4 User Community に参加してお気軽にご質問ください。

MQL4初心者の方や開発に行き詰った方の悩みを、 様々なソフトウェアやツールを開発してきた経験豊富なエンジニアたちが解決いたします。