引数名 | 初期値 | I/O | 詳細 |
text | - | In | 表示(出力)するテキスト。
テキストはバッファに書き込まれます。 単一行のテキストのみ書き込まれます。 |
x | - | In | テキスト表示するアンカーポイントのX座標
|
y | - | In | テキスト表示するアンカーポイントのY座標
|
anchor | - | In | アンカータイプ。
表示されるテキストのアンカーポイントの位置を指定します。 事前に定義された9つのメソッドから選択します。 値は2つのフラグを組み合わせて設定します。 フラグは水平方向と垂直方向のテキスト整列フラグです。 フラグの詳細は備考に記載しています。 |
data[] | - | Out | 出力バッファ。
このバッファにテキストが表示(出力)されます。 バッファはグラフィカルリソース作成に使用します。 |
width | - | In | バッファの幅(ピクセル)
|
height | - | In | バッファの高さ(ピクセル)
|
color | - | In | テキストの色
|
color_format | - | In | カラーフォーマット。
ENUM_COLOR_FORMAT列挙の値を指定します。 |
整列方向 | フラグ | 詳細 |
水平方向 | TA_LEFT | 境界ボックスの左側をアンカーポイントに設定 |
水平方向 | TA_CENTER | 境界ボックスの中心(水平方向)をアンカーポイントに設定 |
水平方向 | TA_RIGHT | 境界ボックスの右側をアンカーポイントに設定 |
垂直方向 | TA_TOP | 境界ボックスの上側をアンカーポイントに設定 |
垂直方向 | TA_VCENTER | 境界ボックスの中心(垂直方向)をアンカーポイントに設定 |
垂直方向 | TA_BOTTOM | 境界ボックスの下側をアンカーポイントに設定 |
#property strict // strictは絶対に削除しない事 #property indicator_chart_window // カスタムインジケータをチャートウインドウに表示する #define IMG_WIDTH 200 // 描画サイズ幅 #define IMG_HEIGHT 200 // 描画サイズ高さ uint ExtImg[IMG_WIDTH*IMG_HEIGHT]; // 描画配列(バッファ) //+------------------------------------------------------------------+ //| 初期化イベント //|------------------------------------------------------------------| void OnInit() { ObjectsDeleteAll(); ArrayFill(ExtImg,0, IMG_WIDTH * IMG_HEIGHT ,0); // 描画配列バッファを0クリア ObjectCreate(0,"CLOCK",OBJ_BITMAP_LABEL,0,0,0); // OBJ_BITMAP_LABELオブジェクト作成 // CLOCKオブジェクトに書き込む為のグラフィカルオブジェクトリソース名を指定 ObjectSetString(0,"CLOCK",OBJPROP_BMPFILE,"::IMG"); EventSetTimer(1); // OnTimerセット[分解能:1sec] } //+------------------------------------------------------------------+ //| アンロードイベント //|------------------------------------------------------------------| void OnDeinit(const int reason){ ObjectDelete(0,"CLOCK"); // CLOCKオブジェクト削除 } //+------------------------------------------------------------------+ //| タイマーイベント //|------------------------------------------------------------------| void OnTimer() { string out_text; ArrayFill(ExtImg,0, IMG_WIDTH * IMG_HEIGHT ,0); // 描画バッファ配列を0クリア out_text = TimeToStr(TimeLocal(),TIME_DATE | TIME_SECONDS); // 現在PCの日時を取得 // 描画メソッドのフォント設定(MSゴシック, 10.0pt, 30度) TextSetFont("MS ゴシック",-100,FW_EXTRABOLD, 300); TextOut(out_text,30,100,TA_LEFT|TA_TOP, // 出力テキスト設定 ExtImg,IMG_WIDTH,IMG_HEIGHT,clrWhite,COLOR_FORMAT_XRGB_NOALPHA); ResourceCreate("::IMG",ExtImg,IMG_WIDTH,IMG_HEIGHT, // グラフィカルリソース(IMG)作成 0,0,IMG_WIDTH,COLOR_FORMAT_XRGB_NOALPHA); ChartRedraw(); // チャートを強制再描画 } //+------------------------------------------------------------------+ //| OnCalculate(tick受信)イベント //| カスタムインジケータ専用のイベント関数 //+------------------------------------------------------------------+ 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[], // Tick出来高 const long &volume[], // Real出来高 const int &spread[]) // スプレッド { return( rates_total ); // 戻り値設定:次回OnCalculate関数が呼ばれた時のprev_calculatedの値に渡される }
#property strict // strictは絶対に削除しない事 #property indicator_chart_window // カスタムインジケータをチャートウインドウに表示する #define IMG_WIDTH 200 // 描画サイズ幅 #define IMG_HEIGHT 200 // 描画サイズ高さ input ENUM_COLOR_FORMAT clr_format = COLOR_FORMAT_XRGB_NOALPHA; // カラーフォーマット uint ExtImg[IMG_WIDTH*IMG_HEIGHT]; // 描画配列(バッファ) //+------------------------------------------------------------------+ //| 初期化イベント //|------------------------------------------------------------------| void OnInit() { ObjectCreate(0,"CLOCK",OBJ_BITMAP_LABEL,0,0,0); // OBJ_BITMAP_LABELオブジェクト作成 // CLOCKオブジェクトに書き込む為のグラフィカルオブジェクトリソース名を指定 ObjectSetString(0,"CLOCK",OBJPROP_BMPFILE,"::IMG"); EventSetTimer(1); // OnTimerセット[分解能:1sec] } //+------------------------------------------------------------------+ //| アンロードイベント //|------------------------------------------------------------------| void OnDeinit(const int reason){ ObjectDelete(0,"CLOCK"); // CLOCKオブジェクト削除 } //+------------------------------------------------------------------+ //| タイマーイベント //|------------------------------------------------------------------| void OnTimer() { double arr_corner; // 矢印コーナー uint width,high; // 受信した文字列サイズ用変数 int posi_x,posi_y; // テキスト文字列アンカーポイントの現在座標算出用変数 datetime nowtime; // ローカルPCの時間取得用 double temp_angle; int icount; nowtime = TimeLocal(); // ローカルPCの時間取得 ArrayFill(ExtImg,0, IMG_WIDTH * IMG_HEIGHT ,0); // 時計描画バッファ配列を0クリア TextSetFont("Arial",-200,FW_EXTRABOLD,0); // 時計の時間表示の描画フォント設定 // 時計の時間表示描画 for(icount=1 ; icount <= 12 ; icount++) { TextGetSize( (string)(icount),width,high); // 時間表示テキストサイズを取得 arr_corner= -((icount*300)%3600*M_PI)/1800; // 時間表示位置の角度算出[rad] posi_x = IMG_WIDTH /2- (int)(sin(arr_corner)*80+0.5+width/2); // 角度を元にX座標を計算 posi_y = IMG_HEIGHT/2- (int)(cos(arr_corner)*80+0.5+high /2); // 角度を元にY座標を計算 TextOut((string)(icount),posi_x,posi_y,TA_LEFT|TA_TOP, // ExtImg[]バッファに時計表示の時間を出力 ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format); } // 秒針設定 temp_angle = (2700 + TimeSeconds(nowtime)*(3600/60) ) % 3600; // 現在の秒針の角度算出[(0.1度] TextSetFont("Arial",-200,FW_THIN,- (int)(temp_angle)); // 現在の秒針を描画する為のフォント設定 TextGetSize("-------",width,high); // 秒針のサイズ取得 arr_corner= -(temp_angle*M_PI)/1800; // 秒針の角度変換[rad] posi_x=IMG_WIDTH /2- (int)(sin(arr_corner)*high/2+0.5); // 角度を元にX座標を計算 posi_y=IMG_HEIGHT/2- (int)(cos(arr_corner)*high/2+0.5); // 角度を元にY座標を計算 TextOut("-------",posi_x,posi_y,TA_LEFT|TA_TOP, // ExtImg[]バッファに秒針表示の時間を出力 ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format); // 分針設定 temp_angle = (2700 + TimeMinute(nowtime)*(3600/60)) % 3600; // 現在の分針の角度算出[(0.1度] TextSetFont("Arial",-200,FW_EXTRABOLD,- (int)(temp_angle)); // 現在の分針を描画する為のフォント設定 TextGetSize("----->",width,high); // 分針のサイズ取得 arr_corner=-(temp_angle*M_PI)/1800; // 分針の角度変換[rad] posi_x=IMG_WIDTH /2- (int)(sin(arr_corner)*high/2+0.5); // 角度を元にX座標を計算 posi_y=IMG_HEIGHT/2- (int)(cos(arr_corner)*high/2+0.5); // 角度を元にY座標を計算 TextOut("----->",posi_x,posi_y,TA_LEFT|TA_TOP, // ExtImg[]バッファに分針表示の時間を出力 ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format); // 時針設定 temp_angle = (2700 + (TimeHour(nowtime)%12) *(3600/12)) % 3600; // 現在の時針の角度算出[(0.1度] TextSetFont("Arial",-200,FW_EXTRABOLD,- (int)(temp_angle)); // 現在の時針を描画する為のフォント設定 TextGetSize("==>",width,high); // 時針のサイズ取得 arr_corner=-(temp_angle*M_PI)/1800.0; // 時針の角度変換[rad] posi_x=IMG_WIDTH /2- (int)(sin(arr_corner)*high/2+0.5); // 角度を元にX座標を計算 posi_y=IMG_HEIGHT/2- (int)(cos(arr_corner)*high/2+0.5); // 角度を元にY座標を計算 TextOut("==>",posi_x,posi_y,TA_LEFT|TA_TOP,ExtImg, // ExtImg[]バッファに時針表示の時間を出力 IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format); // 出力 ResourceCreate("::IMG",ExtImg,IMG_WIDTH,IMG_HEIGHT, // グラフィカルリソース(IMG)作成 0,0,IMG_WIDTH,clr_format); ChartRedraw(); // チャートを強制再描画 } //+------------------------------------------------------------------+ //| OnCalculate(tick受信)イベント //| カスタムインジケータ専用のイベント関数 //+------------------------------------------------------------------+ 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[], // Tick出来高 const long &volume[], // Real出来高 const int &spread[]) // スプレッド { return( rates_total ); // 戻り値設定:次回OnCalculate関数が呼ばれた時のprev_calculatedの値に渡される }