【MQL4テクニック】オブジェクトを四隅に配置する方法。pixel単位の微調整必要なし
ラベルなどのオブジェクトを、左下・左上・右下・右上の四隅に配置する方法をご紹介します。
今回紹介する方法は、縦軸横軸をpx単位で微調整する必要がないため、手軽に実装することができます。
「チャートの右上にインジケータの勝率を表示したい!」という方は是非ご活用ください。
ObjectSetInteger関数を使用する
ObjectSetInteger関数を使用して、『OBJPROP_CORNER』プロパティと『OBJPROP_ANCHOR』プロパティを設定します。
bool ObjectSetInteger(long chart_id, string object_name, int prop_id, long prop_value);
引数の意味は以下です。
引数名 | 詳細 |
---|---|
chart_id | チャートIDを指定します。 0を指定することで、現在のチャートを指定できます。 |
object_name | オブジェクト名を指定します。 |
prop_id | チャートプロパティIDを指定します。 今回は『OBJPROP_CORNER』と『OBJPROP_ANCHOR』を使用します。 |
prop_value | プロパティの値 |
OBJPROP_CORNER:チャートの隅を指定し、それに対してアンカーポイントが指定されます。
プロパティの値はこちら
OBJPROP_ANCHOR:オブジェクトでのアンカーポイントの位置を指定します。
プロパティの値はこちら
左上に配置する
int OnInit(){
string objName = "TESTOBJ";
string text = "左上に配置";
ObjectCreate(0, objName, OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0, objName, OBJPROP_CORNER, CORNER_LEFT_UPPER);
ObjectSetInteger(0, objName, OBJPROP_ANCHOR, ANCHOR_LEFT_UPPER);
ObjectSetInteger(0, objName, OBJPROP_XDISTANCE, 0);
ObjectSetInteger(0, objName, OBJPROP_YDISTANCE, 0);
ObjectSetText(objName, text, 24, "Meiryo UI", clrWhite);
return(INIT_SUCCEEDED);
}
OBJPROP_CORNERを「CORNER_LEFT_UPPER」、
OBJPROP_ANCHORを「ANCHOR_LEFT_UPPER」に指定します。
右上に配置する
int OnInit(){
string objName = "TESTOBJ";
string text = "右上に配置";
ObjectCreate(0, objName, OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0,objName, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0,objName, OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER);
ObjectSetInteger(0, objName, OBJPROP_XDISTANCE, 0);
ObjectSetInteger(0, objName, OBJPROP_YDISTANCE, 0);
ObjectSetText(objName, text, 24, "Meiryo UI", clrWhite);
return(INIT_SUCCEEDED);
}
OBJPROP_CORNERを「CORNER_RIGHT_UPPER」、
OBJPROP_ANCHORを「ANCHOR_RIGHT_UPPER」に指定します。
左下に配置する
int OnInit(){
string objName = "TESTOBJ";
string text = "左下に配置";
ObjectCreate(0, objName, OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0,objName, OBJPROP_CORNER, CORNER_LEFT_LOWER);
ObjectSetInteger(0,objName, OBJPROP_ANCHOR, ANCHOR_LEFT_LOWER);
ObjectSetInteger(0, objName, OBJPROP_XDISTANCE, 0);
ObjectSetInteger(0, objName, OBJPROP_YDISTANCE, 0);
ObjectSetText(objName, text, 24, "Meiryo UI", clrWhite);
return(INIT_SUCCEEDED);
}
OBJPROP_CORNERを「CORNER_LEFT_LOWER」、
OBJPROP_ANCHORを「ANCHOR_LEFT_LOWER」に指定します。
右下に配置する
int OnInit(){
string objName = "TESTOBJ";
string text = "右下に配置";
ObjectCreate(0, objName, OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0,objName, OBJPROP_CORNER, CORNER_RIGHT_LOWER);
ObjectSetInteger(0,objName, OBJPROP_ANCHOR, ANCHOR_RIGHT_LOWER);
ObjectSetInteger(0, objName, OBJPROP_XDISTANCE, 0);
ObjectSetInteger(0, objName, OBJPROP_YDISTANCE, 0);
ObjectSetText(objName, text, 24, "Meiryo UI", clrWhite);
return(INIT_SUCCEEDED);
}
OBJPROP_CORNERを「CORNER_RIGHT_LOWER」、
OBJPROP_ANCHORを「ANCHOR_RIGHT_LOWER」に指定します。