今回はチャート上に任意の文字列を表示する方法をご紹介いたします。
文字列を表示する方法は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引数に価格を指定することで、ある時間帯のある価格をアンカーポイントとしたテキストを設置します。
ObjectSetText(objName, text, 12, "Meiryo UI", clrYellow);ObjectSetText()関数を使用することで、以下のような設定を行うことができます。
- 表示したいテキスト
- フォントサイズ
- フォントの種類
- フォントカラー
他にも以下のやり方がありますが、ObjectSetText()関数を使えば1行で済むのでオススメです。
ラベルオブジェクトを表示する
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()関数を使用することで、フォントカラーなどをまとめて設定することができます。
テキストオブジェクトとラベルオブジェクトの違い
どちらもチャート上に文字列を表示するためのオブジェクトですが、
・テキストは価格と時刻を指定して配置
・ラベルは座標を指定して配置
という明確な違いがあります。
ラベルオブジェクトはアンカーポイントに時刻を含みますので、新しくチャートが形成されるにつれて文字列が左に流れて(チャートに付随して)いきます。
それに対しテキストオブジェクトは座標で固定しますので、新しくチャートが形成されても常に同じ位置に文字列が表示されます。
- チャートの特定の場所にメモなどをする場合にはテキストオブジェクト
- 勝率を表示する場合など、文字列を常に同じ位置に表示したい場合にはラベルオブジェクト
と使い分けましょう。
