投資で実現!不労所得生活

MQL: チャートのサイズ(幅・高さ)を取得する

更新:
作成:

ChartGetInteger 関数 の第 2 パラメーター (prop_id) に CHART_WIDTH_IN_PIXELS および CHART_HEIGHT_IN_PIXELS を指定することで、指定したチャートの幅・高さを取得することができます。 取得されるサイズは、チャートの描画領域のみのサイズです(軸の価格表示部分などは含まれません)。

ChartGetInteger() には次のような 2 つのバージョンがあります。 2 つ目のバージョンを使うと、戻り値で関数の実行に成功したかどうかを調べることができます。

long ChartGetInteger(
    long chart_id,    // チャート識別子(0 はカレントチャート)
    int prop_id,      // プロパティ識別子
    int sub_window=0  // サブウィンドウ番号(0 はメインチャート)
)

bool ChartGetInteger(
    long chart_id,   // チャート識別子(0 はカレントチャート)
    int prop_id,     // プロパティ識別子
    int sub_window,  // サブウィンドウ番号(0 はメインチャート)
    long& long_var   // チャートのプロパティのターゲット変数
)

インジケーター用のサブウィンドウのサイズを調べたい場合は、第 3 パラメーター sub_window に 1, 2, 3 のような数値を指定します(1 がひとつめのサブチャートです)。

Scripts/ShowChartWidthAndHeight.mq4
#property strict
#include <stdlib.mqh>  // ErrorDescription

/**
 * 指定したチャートのメインチャートウィンドウの幅(ピクセル)を取得します。
 * 取得に失敗した場合は -1 を返します。
 */
int GetChartWidthInPixels(const long chartId = 0) {
    long result = -1;
    if (!ChartGetInteger(chartId, CHART_WIDTH_IN_PIXELS, 0, result)) {
        string err = ErrorDescription(GetLastError());
        PrintFormat("ERROR in %s: %s", __FUNCTION__, err);
    }
    return (int) result;
}

/**
 * 指定したチャートのメインチャートウィンドウの高さ(ピクセル)を取得します。
 * 取得に失敗した場合は -1 を返します。
 */
int GetChartHeightInPixels(const long chartId = 0) {
    long result = -1;
    if (!ChartGetInteger(chartId, CHART_HEIGHT_IN_PIXELS, 0, result)) {
        string err = ErrorDescription(GetLastErro        r());
        PrintFormat("ERROR in %s: %s", __FUNCTION__, err);
    }
    return (int) result;
}

void OnStart() {
    int width = GetChartWidthInPixels();
    int height = GetChartHeightInPixels();
    MessageBox(StringFormat("width=%d, height=%d", width, height));
}

関連記事

投資で実現!不労所得生活
サイトマップまくへのメッセージ