【口座縛りをもっと便利に】インジケータ・EA サーバー認証システムをリリース! 詳しくはこちら

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

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

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

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

目次

ChartSetInteger関数を使用する

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

引数の意味は以下です。

引数名詳細
chart_idチャートIDを指定します。
0を指定することで、現在のチャートを指定できます。
prop_idチャートプロパティIDを指定します。
背景色を変更する場合は『CHART_COLOR_BACKGROUND』
valueプロパティの値

サンプルコード

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関数で変更後の色を指定します。

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

POINT

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

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

役に立ったらシェアをお願いします
  • URLをコピーしました!
  • URLをコピーしました!
目次