【MQL4テクニック】オブジェクトを四隅に配置する方法。pixel単位の微調整必要なし

MQL4テクニック

ラベルなどのオブジェクトを、左下・左上・右下・右上の四隅に配置する方法をご紹介します。

今回紹介する方法は、縦軸横軸を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:オブジェクトでのアンカーポイントの位置を指定します。
プロパティの値はこちら

あなたのやりたいことがきっと見つかる!
MQL4テクニック 逆引き集 はこちら

左上に配置する

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」に指定します。

POINT

こちらの記事で悩みが解決されない場合は、
MQL4 User Community に参加してお気軽にご質問ください。

MQL4初心者の方や開発に行き詰った方の悩みを、 様々なソフトウェアやツールを開発してきた経験豊富なエンジニアたちが解決いたします。