TextOut 関数
この関数は、取引チャート上に直接テキストを出力します。
カスタム配列 (バッファ) にテキストを表示し、その操作の結果を返します。配列は、グラフィックリソースを作成するように設計されています。
データ型と構成・戻り値
bool TextOut(①, ②, ③, ④, ⑤, ⑥, ⑦, ⑧, ⑨);戻り値は、処理が成功した場合は true、それ以外は falseが返されます。
引数 [9]
TextOut関数は 9個の引数で構成されます。
| 番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 | 
|---|---|---|---|---|---|
| ① | text | const string | - | - | 表示するテキスト。バッファに書き込まれます。テキストは一行で表示されます。 | 
| ② | x | int | - | - | 表示するテキストのX座標のアンカーポイント。 | 
| ③ | y | int | - | - | 表示するテキストのY座標のアンカーポイント。 | 
| ④ | anchor | uint | - | - | 表示するテキストの位置。水平方向と垂直方向の2つのフラグを組み合わせて設定します。 | 
| ⑤ | &data[] | uint | - | - | テキストを書き込むバッファ。バッファはグラフィックリソースの作成に使用されます。 | 
| ⑥ | width | uint | pixel | - | バッファの幅。 | 
| ⑦ | height | uint | pixel | - | バッファの高さ。 | 
| ⑧ | color | uint | - | - | テキストの色。 | 
| ⑨ | color_format | enum | - | - | カラーフォーマット。ENUM_COLOR_FORMAT 列挙値から選択。 | 
引数④の水平方向と垂直方向のフラグ。
水平方向のフラグ
| フラグ名 | 説明 | 
|---|---|
| TA_LEFT | 境界ボックスの左側をアンカーポイントに設定。 | 
| TA_CENTER | 境界ボックスの中心をアンカーポイントに設定。 | 
| TA_RIGHT | 境界ボックスの右側をアンカーポイントに設定。 | 
垂直方向のフラグ
| フラグ名 | 説明 | 
|---|---|
| TA_TOP | 境界ボックスの上側をアンカーポイントに設定。 | 
| TA_VCENTER | 境界ボックスの中心をアンカーポイントに設定。 | 
| TA_BOTTOM | 境界ボックスの下側をアンカーポイントに設定。 | 
使用例
TextOut関数によるテキストの表示
TextOut関数を使って、取引チャート上に設定したテキストを出力します。
次のコードはインジケータ用のコードです。インジケータ用コードの作成方法についてはこちらを参考にしてください。
コード
// TextOut関数によるテキストの表示
#property strict
#property indicator_chart_window     // メインウィンドウに表示
#define IMG_WIDTH  150               // 描画 幅  pixel
#define IMG_HEIGHT 150               // 描画 高さpixel
uint ExtImg[IMG_WIDTH * IMG_HEIGHT]; // 描画 配列(バッファ)
int i=0;
void OnInit() {
   ObjectsDeleteAll();
   ArrayFill(ExtImg, 0, IMG_WIDTH * IMG_HEIGHT, 0);
   ObjectCreate(0, "TEST", OBJ_BITMAP_LABEL, 0, 0, 0);
   ObjectSetString(0, "TEST", OBJPROP_BMPFILE, "::IMG"); 
}
void OnDeinit(const int reason) { //終了処理
   ObjectsDeleteAll();            // オブジェクトテキストをEA削除時消すための処理
}
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[])
{
   ArrayFill(ExtImg, 0, IMG_WIDTH * IMG_HEIGHT ,0);
   
   TextSetFont("MS Pゴシック", 20, FONT_UNDERLINE|FW_EXTRABOLD, 450);   
   
   string text = "Tick数" + (string)i++;
   TextOut(text, 30, 100, TA_LEFT|TA_TOP, ExtImg, IMG_WIDTH, IMG_HEIGHT, clrWhite, COLOR_FORMAT_XRGB_NOALPHA);
   
   ResourceCreate("::IMG", ExtImg, IMG_WIDTH, IMG_HEIGHT, 0, 0, IMG_WIDTH, COLOR_FORMAT_XRGB_NOALPHA);
   ChartRedraw();
   
   return(rates_total);
}インジケータ用コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果


