【MQL4テクニック】自動で背景色を変更する方法。チャート監視の負担を大幅に軽減!
条件を満たした際などに、自動で背景色を変更する方法をご紹介します。
チャートを複数表示している場合、どの通貨ペアからアラートが出たかを探し回った経験はないでしょうか?
背景色を変更することで条件が満たされたチャートを一目で判断することができるので、チャートを監視する負担を大幅に軽減することができます。
ChartSetInteger関数を使用する
ChartSetInteger関数は、チャートのプロパティを設定するための関数です。
bool ChartSetInteger(long chart_id, int prop_id, long value);
引数の意味は以下です。
引数名 | 詳細 |
---|---|
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関数で変更後の色を指定します。
その際に、条件を満たさない場合の動きを必ず記載してください。
これを書き忘れてしまうと、一度条件を満たしたチャートが再度満たさなくなった場合でも背景色が戻らなくなってしまうので注意してください。
ダウンロードリンク
「すぐに使いたい!」という方はこちらからダウンロードしてください。
RSI-bgColorをダウンロードサンプルコードに加え、以下の機能を追加しています。
- アラート機能
- RSIのパラメータ変更
- RSI表示
パラメータはこちら
GitHubにもアップしています。