【MQL4テクニック】チャートに文字列を表示する方法。ラベルとテキストの違いとは?

MQL4テクニック

今回はチャート上に任意の文字列を表示する方法をご紹介いたします。

文字列を表示する方法は2種類ありますので、それぞれの特徴と共に紹介していきます。

テキストオブジェクトを表示する

string objName = "textObj";
string text = "表示したいテキスト";
ObjectCreate(objName, OBJ_TEXT, 0, Time[5], Close[5]);
ObjectSetText(objName, text, 12, "Meiryo UI", clrYellow);

それでは順番にコードの意味を解説していきます。

ObjectCreate(objName, OBJ_TEXT, 0, Time[5], Close[5]);

オブジェクトタイプを『OBJ_TEXT』と指定することで、テキストオブジェクトを作成します。

また第4引数に時間、第5引数に価格を指定することで、ある時間帯のある価格をアンカーポイントとしたテキストを設置します。

Time[5],Close[5]の場合では、オブジェクト作成時点で5本前の足の終値に表示するという意味です。

ObjectSetText(objName, text, 12, "Meiryo UI", clrYellow);

ObjectSetText()関数を使用することで、
・表示したいテキスト
・フォントサイズ
・フォントの種類
・フォントカラー
をまとめて設定することができます。

他にも以下のやり方がありますが、

string objName = "textObj";
string text = "表示したいテキスト";
ObjectSetString(0, objName, OBJPROP_TEXT, text); 
ObjectSetString(0, objName, OBJPROP_FONT, "Meiryo UI");
ObjectSetInteger(0, objName, OBJPROP_FONTSIZE, 12);
ObjectSetInteger(0, objName, OBJPROP_COLOR, clrWhite);

ObjectSetText()関数を使えば1行で済むのでオススメです。

あなたのやりたいことがきっと見つかる!
MQL4テクニック 逆引き集 はこちら

ラベルオブジェクトを表示する

string objName = "textObj";
string text = "表示したいテキスト";
ObjectCreate(objName, OBJ_LABEL, 0, 0, 0);
ObjectSetText(objName, text, 12, "Meiryo UI",clrYellow);
ObjectSetInteger(0, objName, OBJPROP_XDISTANCE, 50);
ObjectSetInteger(0, objName, OBJPROP_YDISTANCE, 50);

それでは順番にコードの意味を解説していきます。

ObjectCreate(objName, OBJ_LABEL, 0, 0, 0);

オブジェクトタイプを『OBJ_LABEL』と指定することで、ラベルオブジェクトを作成します。

ObjectSetText(objName, text, 12, "Meiryo UI", clrWhite);

ObjectSetText()関数を使用することで、
・表示したいテキスト
・フォントサイズ
・フォントの種類
・フォントカラー
をまとめて設定することができます。

ObjectSetInteger(0, objName, OBJPROP_XDISTANCE, 50);
ObjectSetInteger(0, objName, OBJPROP_YDISTANCE, 50);

ラベルオブジェクトを表示する、X座標とY座標を指定します。

テキストオブジェクトとラベルオブジェクトの違い

どちらもチャート上に文字列を表示するためのオブジェクトですが、
・テキストは価格と時刻を指定して配置
・ラベルは座標を指定して配置
という明確な違いがあります。

ラベルオブジェクトはアンカーポイントに時刻を含みますので、新しくチャートが形成されるにつれて文字列が左に流れて(チャートに付随して)いきます。

それに対しテキストオブジェクトは座標で固定しますので、新しくチャートが形成されても常に同じ位置に文字列が表示されます。

  • チャートの特定の場所にメモなどをする場合にはテキストオブジェクト
  • 勝率を表示する場合など、文字列を常に同じ位置に表示したい場合にはラベルオブジェクト

と使い分けましょう。

POINT

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

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