オブジェクトプロパティ

グラフィックオブジェクトは、オブジェクトタイプに応じて、多数のプロパティを有することができます。オブジェクトプロパティの値の設定と取得は、グラフィックオブジェクトを使う作業の関連する関数によって行われます。

テクニカル分析で使われる全てのオブジェクトは、価格と時間の座標ごとのチャート上にアンカーを持っています。(トレンドライン、チャンネル、フィボナッチツールなど)しかし、インターフェイスの改善の為に設計されたサポートオブジェクト群があり、これらは常にチャートの可視部分にアンカーを持っています。(メインチャートウィンドウまたはインディケータのサブウィンドウ)

オブジェクト

インディケータ

X/Y

Width/Height

Date/Price

OBJPROP_CORNER

OBJPROP_ANCHOR

OBJPROP_ANGLE

Text

OBJ_TEXT

はい

はい

はい

Label

OBJ_LABEL

はい

はい(読み取り専用)

はい

はい

はい

Button

OBJ_BUTTON

はい

はい

はい

Bitmap

OBJ_BITMAP

はい(読み取り専用)

はい

はい

Bitmap Label

OBJ_BITMAP_LABEL

はい

はい(読み取り専用)

はい

はい

Edit

OBJ_EDIT

はい

はい

はい

Rectangle Label

OBJ_RECTANGLE_LABEL

はい

はい

はい

表には次の名称を使用しています。

  • X/Y—チャートの隅の1つに対してピクセル単位でアンカーポイントが指定されます。
  • Width/Height—オブジェクトの幅と高さ。『読み取り専用』が指定されている場合、チャート上にオブジェクトが描画された後にのみ、幅と高さの値が計算されることを意味しています。
  • Date/Price—アンカーポイントが日付と価格のペアで指定されます。
  • OBJPROP_CORNER—チャートの隅を指定し、それに対してアンカーポイントが指定されます。ENUM_BASE_CORNERリストの4つの値のうちの1つになる場合があります。
  • OBJPROP_ANCHOR—オブジェクトでのアンカーポイントの位置を指定します。ENUM_ANCHOR_POINTリストの9つの値のうちの1つになる場合があります。このポイントから選択したチャートの隅まで、ピクセル単位で座標が表示されます。
  • OBJPROP_ANGLE—反時計回りにオブジェクトの回転角度を指定します。

グラフィックオブジェクトのプロパティを定義する関数、またチャートでオブジェクトを作成して移動する ObjectCreate() 及び ObjectMove() は実際にチャートにコマンドを送るのに使用されます。これらの関数が正常に実行された場合、コマンドがチャートイベントの共用キューに追加されます。グラフィックオブジェクトのプロパティの視覚変更は、チャートイベントのキューを処理する際に実装されています。

従って、これらの関数を呼び出した後、チャートの視覚更新が即時行われると期待してはいけません。一般的には、チャートは、新たな相場の到着やチャートウィンドウのサイズ変更などの変更イベントの後に、端末によって自動更新されます。強制的にグラフィックオブジェクトを更新するには ChartRedraw() 関数を使用します。

ObjectSetInteger() 及び ObjectGetInteger() 関数

ENUM_OBJECT_PROPERTY_INTEGER

識別子

説明

プロパティ型

OBJPROP_COLOR

色。

color

OBJPROP_STYLE

スタイル。

ENUM_LINE_STYLE

OBJPROP_WIDTH

線の太さ。

int

OBJPROP_BACK

背景のオブジェクト。

bool

OBJPROP_ZORDER

チャート上のクリックイベント(CHARTEVENT_CLICK)を受け取るためのグラフィカルオブジェクトの優先順位。優先順位はオブジェクトの作成時にデフォルトのゼロに設定され、必要に応じて高く出来ます。オブジェクトが重なった場合、最も優先順位の高いオブジェクトのみが CHARTEVENT_CLICK イベントを受け取ります。

long

OBJPROP_FILL

色でオブジェクトを塗りつぶします(OBJ_RECTANGLE、OBJ_TRIANGLE、OBJ_ELLIPSE, OBJ_CHANNEL、OBJ_STDDEVCHANNEL、OBJ_REGRESSION)。

bool

OBJPROP_HIDDEN

端末の「チャート設定」->「オブジェクト」->「オブジェクト表示リスト」メニューで、オブジェクトリスト中のグラフィカルオブジェクトの名称を非表示にします。true は、リストからのオブジェクトを非表示にします。MQL5 プログラムで作成されたカレンダーイベントや取引履歴を表示するオブジェクトではデフォルトは true です。そのようなグラフィックオブジェクトを表示してプロパティにアクセスするには、「オブジェクト表示リスト」ウィンドウの「すべて」ボタンをクリックします。

bool

OBJPROP_SELECTED

オブジェクトが選択されています。

bool

OBJPROP_READONLY

編集オブジェクトでテキストを編集する能力。

bool

OBJPROP_TYPE

オブジェクトの型。

ENUM_OBJECT   r/o

OBJPROP_TIME

時間座標。

datetime   修飾子=アンカーポイントの数

OBJPROP_SELECTABLE

オブジェクトの可用性。

bool

OBJPROP_CREATETIME

オブジェクト作成時刻。

datetime    r/o

OBJPROP_LEVELS

レベルの数。

int

OBJPROP_LEVELCOLOR

ラインレベルの色。

color   修飾子=レベル番号

OBJPROP_LEVELSTYLE

ラインレベルのスタイル。

ENUM_LINE_STYLE modifier=level number

OBJPROP_LEVELWIDTH

ラインレベルの太さ。

int      修飾子=レベル番号

OBJPROP_ALIGN

編集オブジェクト(OBJ_EDIT)の水平テキストの配置。

ENUM_ALIGN_MODE

OBJPROP_FONTSIZE

フォントサイズ。

int

OBJPROP_RAY_LEFT

レイは左に行きます。

bool

OBJPROP_RAY_RIGHT

レイは右に行きます。

bool

OBJPROP_RAY

縦線はチャートの全てのウィンドウを通過します。

bool

OBJPROP_ELLIPSE

フィボナッチアークオブジェクトの完全な楕円形の表示 (OBJ_FIBOARC)。

bool

OBJPROP_ARROWCODE

矢印オブジェクトの矢印コード。

uchar

OBJPROP_TIMEFRAMES

時間軸でのオブジェクトの可視性。

フラグセット flags

OBJPROP_ANCHOR

グラフィックオブジェクトのアンカーポイントの位置。

ENUM_ARROW_ANCHOR (for OBJ_ARROW),

ENUM_ANCHOR_POINT (for OBJ_LABEL, OBJ_BITMAP_LABEL and OBJ_TEXT)

OBJPROP_XDISTANCE

結合角からX 軸に沿ったピクセル単位での距離(注意事項を参照)。

int

OBJPROP_YDISTANCE

結合角から Y 軸に沿ったピクセル単位での距離(注意事項を参照)。

int

OBJPROP_DIRECTION

ギャンオブジェクトのトレンド。

ENUM_GANN_DIRECTION

OBJPROP_DEGREE

エリオット波動マーキングのレベル。

ENUM_ELLIOT_WAVE_DEGREE

OBJPROP_DRAWLINES

エリオット波動をマークするための線の表示。

bool

OBJPROP_STATE

ボタンの状態(押された/押されていない)。

bool

OBJPROP_CHART_ID

チャートオブジェクト( OBJ_CHART )の識別子。チャート操作で説明される関数を使用すると、通常のチャートと同様にこのオブジェクトのプロパティの操作が可能になりますが例外もあります。

long   r/o

OBJPROP_XSIZE

X 軸に沿ったピクセル単位でのオブジェクトの幅。OBJ_LABEL(読み込みのみ)、OBJ_BUTTON, OBJ_CHART、OBJ_BITMAP、OBJ_BITMAP_LABEL、OBJ_EDIT、OBJ_RECTANGLE_LABEL オブジェクトに指定されます。

int

OBJPROP_YSIZE

Y 軸に沿ったオブジェクトの高さ(ピクセル単位)。OBJ_LABEL(読み込みのみ)、OBJ_BUTTON, OBJ_CHART、OBJ_BITMAP、OBJ_BITMAP_LABEL、OBJ_EDIT、OBJ_RECTANGLE_LABEL オブジェクトに指定されます。

int

OBJPROP_XOFFSET

ビットマップラベル( OBJ_BITMAP_LABEL )及びビットマップ( OBJ_BITMAP )グラフィックオブジェクトの四角形の表示領域の左上隅のX 座標。値は、元の画像の左上隅を基準にピクセル単位で設定されています。

int

OBJPROP_YOFFSET

ビットマップラベル( OBJ_BITMAP_LABEL )及びビットマップ( OBJ_BITMAP )グラフィックオブジェクトの四角形の表示領域の左上隅の Y 座標。値は、元の画像の左上隅を基準にピクセル単位で設定されています。

int

OBJPROP_PERIOD

チャートオブジェクトの時間軸。

ENUM_TIMEFRAMES

OBJPROP_DATE_SCALE

グラフオブジェクトの時間スケールの表示。

bool

OBJPROP_PRICE_SCALE

チャートオブジェクトの価格スケールの表示。

bool

OBJPROP_CHART_SCALE

チャートオブジェクトのスケール。

int   0〜5

OBJPROP_BGCOLOR

OBJ_EDIT、OBJ_BUTTON、OBJ_RECTANGLE_LABEL の背景色。

color

OBJPROP_CORNER

グラフィカルオブジェクトをリンクするチャートのコーナー。

ENUM_BASE_CORNER

OBJPROP_BORDER_TYPE

「四角形ラベル」オブジェクトの境界線の種類。

ENUM_BORDER_TYPE

OBJPROP_BORDER_COLOR

OBJ_EDIT 及び OBJ_BUTTON オブジェクトの境界線の色。

color

チャートオブジェクト(OBJ_CHART)のチャート操作の際、下記の制限が適用されます。

 

OBJ_BITMAP_LABEL 及び OBJ_BITMAP オブジェクトの特別画像表示モードが設定出来ます。このモードでは、元の画像(矩形可視領域が適用)の一部のみが表示され、画像の残りの部分は見えなくなります。この領域の大きさは、OBJPROP_XSIZE とOBJPROP_YSIZE プロパティを使用して設定される必要があります。表示領域は OBJPROP_XOFFSET 及び OBJPROP_YOFFSET プロパティを使用して「移動する」ことが出来ます。

 

固定サイズのオブジェクトの場合 rOBJ_BUTTONOBJ_RECTANGLE_LABELOBJ_EDIT 及び OBJ_CHART とOBJPROP_XDISTANCE 及び OBJPROP_YDISTANCE プロパティが ピクセル単位の X とY 座標がゼロとなるチャートのコーナー(OBJPROP_CORNER)を基準にしたオブジェクトの左上の点の位置を設定します。

 

ObjectSetDouble() 及び ObjectGetDouble() 関数

ENUM_OBJECT_PROPERTY_DOUBLE

識別子

説明

プロパティ型

OBJPROP_PRICE

価格座標。

double    修飾子 = アンカーポイントの数

OBJPROP_LEVELVALUE

レベル値。

double    修飾子 = レベル番号

OBJPROP_SCALE

スケール(ギャンオブジェクトとフィボナッチアークのプロパティ)。

double

OBJPROP_ANGLE

角度。 角度を指定されずにプログラムから作成されたオブジェクトの場合、値は EMPTY_VALUE

double

OBJPROP_DEVIATION

標準偏差チャンネルの偏差。

double

 

ObjectSetString() 及び ObjectGetString().関数

ENUM_OBJECT_PROPERTY_STRING

識別子

説明

プロパティ型

OBJPROP_NAME

オブジェクト名。

string

OBJPROP_TEXT

オブジェクトの説明(オブジェクトに含まれるテキスト)。

string

OBJPROP_TOOLTIP

ツールヒントのテキスト。プロパティが設定されていない場合は、端末によって自動的に生成されたツールヒントが表示されます。ツールヒントは「\ n」(改行)の値を設定することによって無効に出来ます。

string

OBJPROP_LEVELTEXT

レベルの説明。

string     修飾子 = レベル番号

OBJPROP_FONT

フォント。

string

OBJPROP_BMPFILE

ビットマップラベルの BMP ファイルの名称。リソース も参照。

string    修飾子:0-ON、1-OFF

OBJPROP_SYMBOL

チャートオブジェクトの記号。

string

 

OBJ_RECTANGLE_LABEL オブジェクト(「四角形ラベル」)では、次の ENUM_BORDER_TYPE の値に一致するように、3 つの設計モードを設定することが出来ます。

ENUM_BORDER_TYPE

識別子

説明

BORDER_FLAT

フラットフォーム。

BORDER_RAISED

プロミネントフォーム。

BORDER_SUNKEN

凹フォーム。

 

OBJ_EDIT オブジェクト(「編集」)及び ChartScreenShot() 関数では、ENUM_ALIGN_MODE 列挙体の値を使用して、水平配向型を指定することが出来ます。

ENUM_ALIGN_MODE

識別子

説明

ALIGN_LEFT

左揃え。

ALIGN_CENTER

中央揃え(編集オブジェクトのみ)。

ALIGN_RIGHT

右揃え。

例:

#define  UP         "\x0431"
//+------------------------------------------------------------------+
//| スクリプトプログラムを開始する関数                                          |
//+------------------------------------------------------------------+
void OnStart()
 {
//---
  string label_name="my_OBJ_LABEL_object";
  if(ObjectFind(0,label_name)<0)
    {
    Print("Object ",label_name," not found. Error code = ",GetLastError());
    //--- ラベルオブジェクトを作成する
    ObjectCreate(0,label_name,OBJ_LABEL,0,0,0);          
    //--- X 座標を設定する
    ObjectSetInteger(0,label_name,OBJPROP_XDISTANCE,200);
    //--- Y 座標を設定する
    ObjectSetInteger(0,label_name,OBJPROP_YDISTANCE,300);
    //--- テキストの色を定義する
    ObjectSetInteger(0,label_name,OBJPROP_COLOR,clrWhite);
    //--- オブジェクトラベルのテキストを定義する
    ObjectSetString(0,label_name,OBJPROP_TEXT,UP);
    //--- フォントを定義する
    ObjectSetString(0,label_name,OBJPROP_FONT,"Wingdings");
    //--- フォントサイズを定義する
    ObjectSetInteger(0,label_name,OBJPROP_FONTSIZE,10);
    //--- 45 度の時計回り回転
    ObjectSetDouble(0,label_name,OBJPROP_ANGLE,-45);
    //--- マウスでの選択を無効にする
    ObjectSetInteger(0,label_name,OBJPROP_SELECTABLE,false);
    //--- チャートで描画する
    ChartRedraw(0);                                      
    }
 }