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 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 |
オブジェクト配置における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のプログラムを書くときに、オブジェクトの配置がわからないという質問に答えた内容です。
是非、みなさんのプログラムに役立ててみてくださいね。
コメント