チャート上に常に置いておく固定テキスト
チャート上に常に表示させておきたい情報ってありますよね。いま動いてるcBotのバージョン情報とか、cBotが解析した現在のトレンド情報とか、内容はいろいろだと思いますが、要は時間経過でローソク足とともに流れていっては都合が悪い情報です。
普通にチャート上からマウスで描き込むテキストはローソク足の場所に紐づくため、時間経過で流れて行ってしまうのですが、プログラムからはチャート上に固定のテキストが描画できます。
ChartStaticText インターフェース
チャート上の決まった場所に表示するテキストです。Chart.DrawStaticText(...)で描きます。
public interface ChartStaticText : ChartObject
もちろんChartObjectを継承してるんですが、実はコイツだけはIsIntaractiveプロパティが無効です。チャート上に表示されたStaticTextはマウスでは動かせません。
あとChartTextでは指定できるFontSizeも指定できません。(cTrader ver3.8時点)
プロパティ
(string) Text {get; set;}
テキストの内容を取得、設定します。
(Color) Color {get; set;}
テキストの色を取得、設定します。
(HorizontalAlignment) HorizontalAlignment {get; set;}
横位置を取得、設定します。なお、Stretchはテキストボックスが引き伸ばされるだけなので表示上はCenterと同じです。
(VerticalAlignment) VerticalAlignment {get; set;}
縦位置を取得、設定します。同上。
ChartObjectのプロパティ
Name、Commentなど。
HorizontalAlignment列挙型
テキストの横位置をいずれかで表します。
Left | 左 |
Center | 中央 |
Right | 右 |
Stretch | 左右に引き伸ばす |
VerticalAlignment列挙型
テキストの縦位置をいずれかで表します。
Top | 上 |
Center | 中央 |
Bottom | 下 |
Stretch | 上下に引き伸ばす |
位置はこれらの組み合わせなので全部で9種類となります。
サンプルコード
//cBot名とcTraderのバージョン情報をチャート右上に表示する
var text = this.ToString() + " ( on ctrader ver" + Application.Version.ToString() + ")";
Chart.DrawStaticText("version_info", text, VerticalAlignment.Top, HorizontalAlignment.Left, Color.White);
細かな位置が指定できなかったり、フォントサイズが小さかったりと、今一つ使いにくいのですが今後のアップデートに期待しましょう。