MQLでPrice情報を使いつつオブジェクトを右上から計算表示する方法

OBJ_TEXTだと右上からの計算は出来ない

最初チャート上に文字を表示させる際に、OBJ_TEXTを使用していたのですが、OBJ_TEXTでは右上からの位置情報を設定することは出来ないということが分かりました。

右上からの位置情報をセットする為には、以下のPropertyをセットしなければいけません。

ObjectSet("obj_name", OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSet("obj_name", OBJPROP_XDISTANCE, 0);
ObjectSet("obj_name", OBJPROP_YDISTANCE, 0);

そして、これらを使う為には、OBJ_TEXTではなく、OBJ_LABELでなくてはいけないということが分かりました。

https://docs.mql4.com/constants/objectconstants/enum_object_property

OBJPROP_YDISTANCEでPrice情報を使いたい

ただ、やりたいことで問題が起こりました。OBJPROP_YDISTANCEではPriceの情報が使いたかったのです。

OBJ_TEXTであれば、OBJPROP_PRICE1というPropertyを使って、Priceの指定が出来るのだけど、OBJ_LABELではOBJPROP_PRICE1を使うことが出来ず…。

そこで見つけたのが、ChartTimePriceToXYです。この関数を使用することで、PriceをYDISTANCEに変えることが出来ました!使い方は、こんな感じ。

int pixel_x, pixel_y;
ChartTimePriceToXY(0, 0, Time[0], Price[0], pixel_x, pixel_y);
ObjectSet("obj_name", OBJPROP_YDISTANCE, pixel_y);

こんな感じでY軸だけは、ChartTimePriceToXYで取った値を使い、X軸だけは変数を使うようにして、無事やりたいことが出来ました。

最後に

今回は実現出来ないことなのかと思いましたが、なんだかんだ色々な関数用意されててMQL便利だなと思いました。

コメントを残す