【MT5】 CornerとAnchorについて

プログラム

MT5のCornerとAnchorについての備忘録です。

Cornerについて

MT5でオブジェクトを配置する時に、チャートの角を指定することが出来ます。

そしてMT5の中では角を指定する列挙型(ENUM_BASE_CORNER)が用意されています。

ID場所
CORNER_LEFT_UPPERチャートの左上0
CORNER_LEFT_LOWERチャートの左下1
CORNER_RIGHT_LOWERチャートの右下2
CORNER_RIGHT_UPPERチャートの右上3
ENUM_BASE_CORNER

下記は使用例の一部です。

//変数と値を定義する
ENUM_BASE_CORNER chtcorner = CORNER_LEFT_UPPER;

//オブジェクトの配置を設定する
ObjectSetInteger(チャートID, オブジェクト名, OBJPROP_CORNER, chtcorner);

CORNER_LEFT_UPPERの値は0なので、変数の定義をせず、0と数値を入力しても構いません。

ObjectSetInteger(チャートID, オブジェクト名, OBJPROP_CORNER, 0);

アンカー(Anchor)について

Anchorは日本語で” 錨 (いかり)、錨を固定する”の意味があります。

アンカーはオブジェクトのどの部分を基準にするかという為の設定項目になります。

Cornerと同じように、MT5の中ではアンカーを指定する列挙型(ENUM_ANCHOR_POINT)が用意されています。

ID場所
ANCHOR_LEFT_UPPERオブジェクトの左上0
ANCHOR_LEFTオブジェクトの左1
ANCHOR_LEFT_LOWERオブジェクトの左下2
ANCHOR_LOWERオブジェクトの下3
ANCHOR_RIGHT_LOWERオブジェクトの右下4
ANCHOR_RIGHTオブジェクトの右5
ANCHOR_RIGHT_UPPERオブジェクトの右上6
ANCHOR_UPPERオブジェクトの上7
ANCHOR_CENTERオブジェクトの中央8
ENUM_ANCHOR_POINT

オブジェクト配置におけるCornerとAnchorの気を付けること

下記のプログラムはオブジェクトの配置の内容になります。

チャートのコーナーは左上、オブジェクトのアンカーは右下になっています。

ObjectSetInteger(チャートID, オブジェクト名, OBJPROP_CORNER, CORNER_LEFT_UPPER);
ObjectSetInteger(チャートID, オブジェクト名, OBJPROP_ANCHOR, ANCHOR_RIGHT_LOWER);
ObjectSetInteger(チャートID, オブジェクト名, OBJPROP_XDISTANCE, 10);
ObjectSetInteger(チャートID, オブジェクト名, OBJPROP_YDISTANCE, 10);

この場合、XDISTANCEとYDISTANCEの値が小さければ、下の図のように、オブジェクトがチャート外に隠れてしまう可能性があります。

なので、オブジェクトを配置する時は、チャートのコーナー、アンカーポイントを同じ、同じ側にすることをお勧めします。

ObjectSetInteger(チャートID, オブジェクト名, OBJPROP_CORNER, CORNER_LEFT_UPPER);
ObjectSetInteger(チャートID, オブジェクト名, OBJPROP_ANCHOR, ANCHOR_LEFT_UPPER);
ObjectSetInteger(チャートID, オブジェクト名, OBJPROP_XDISTANCE, 10);
ObjectSetInteger(チャートID, オブジェクト名, OBJPROP_YDISTANCE, 10);

まとめ

MT5のプログラムを書くときに、オブジェクトの配置がわからないという質問に答えた内容です。

是非、みなさんのプログラムに役立ててみてくださいね。

 

コメント

タイトルとURLをコピーしました