[MT4/MQL4] ピクセル値の範囲を確認

MT4/MQL4でオブジェクトを扱っているとチャートウィンドウのサイズや座標をピクセル値で取得することがよくありますが、そのピクセル値がどこの範囲なのかを把握していないと正しくオブジェクトを扱うことができません。

本記事ではチャートウィンドウのサイズを取得する関数と時間および価格の座標をピクセル値で取得する関数を例に表題の確認をしてみたいと思います。

結論から先に言うと組み込み関数で取得するピクセル値の範囲はチャートウィンドウの中にある四角い枠になります。

チャートウィンドウのサイズを取得する関数で確認

ChartGetInteger関数を使ってCHART_WIDTH_IN_PIXELSとCHART_HEIGHT_IN_PIXELSをプロパティとして指定するとそれぞれチャートウィンドウの横幅と縦幅をピクセル値で取得できます。この関数を使ってメインウィンドウとサブウィンドウのサイズを取得した結果を見てみると白い四角の枠のサイズを示していることが分かります。

// メインウィンドウのサイズを取得
int width_0 = ChartGetInteger(0, CHART_WIDTH_IN_PIXELS, 0);
int height_0 = ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS, 0);
Print(“width_0: “, width_0, ” height_0: “, height_0);

// サブウィンドウのサイズを取得
int width_1 = ChartGetInteger(0, CHART_WIDTH_IN_PIXELS, 1);
int height_1 = ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS, 1);
Print(“width_1: “, width_1, ” height_1: “, height_1);

CHART_PIXELS

時間および価格の座標をピクセル値で取得する関数で確認

ChartTimePriceToXY関数を使うと時間と価格が示す座標をピクセル値で取得してくれます(座標は左上が原点)。この関数を使って最新バーとBidが交わる位置の座標をピクセル値で所得すると下図のとおり白い四角の枠の左上を原点にしたピクセル値を取得していることが分かります。

// 最新バーのBid位置をピクセル座標で取得
int x, y;
bool result = ChartTimePriceToXY(0, 0, Time[0], Bid, x, y);
Print(“x: “, x, ” y: “, y);

ChartTimePriceToXY

 

sponsor