【MQL4定数】その他定数

【辞書】MQLリファレンス

その他定数

その他定数は、プログラムの状態を定数にしたものです。

他の定数と違い、特別な意味をもつ定数が多いことが特徴です。

その他定数

定数数値説明
NULL0全てのデータ型のゼロ値
EMPTY-1パラメータの空の値
EMPTY_VALUE2147483647インジケータバッファの空の値
CLR_NONE
clrNONE
-1無色の値
CHARTS_MAX100ターミナルで同時に開けるチャートの最大数
INVALID_HANDLE-1無効なハンドル
IS_DEBUG_MODE0以外:デバッグモードON
0:デバッグモードOFF
MQL4プログラムのデバッグモードフラグ
IS_PROFILE_MODE0以外:プロファイリングモードON
0:プロファイリングモードOFF
MQL4プログラムのプロファイリングモードフラグ
WHOLE_ARRAY0全ての配列要素を処理する
WRONG_VALUE1他列挙型へキャスト可能

その他定数の使い方

その他定数の中で、一番多く使う定数が、NULLです。

NULLは全てのデータ型のゼロ値として扱われるため、変数の初期化などに使われることが多い定数です。

例えば、以下のように使用します。

void OnInit() {
    int dataInt = NULL;
    double dataDouble = NULL;
    string dataString = NULL;
}

上記のように記述することで、どんな変数でも初期化することができます。

その他定数を使ったプログラム例

以下は、その他定数を実際に使用したプログラム例です。各定数の値をエキスパートログに出力して確認します。

//+------------------------------------------------------------------+
//| その他定数の確認プログラム                                         |
//+------------------------------------------------------------------+
void OnInit()
{
    // NULLによる初期化
    int    dataInt    = NULL;
    double dataDouble = NULL;
    string dataString = NULL;

    Print("=== NULLによる初期化 ===");
    Print("int型のNULL値: ", dataInt);       // 0
    Print("double型のNULL値: ", dataDouble); // 0.0
    Print("string型のNULL値: ", dataString); // (空文字)

    // EMPTY と EMPTY_VALUE の確認
    Print("=== EMPTY / EMPTY_VALUE ===");
    Print("EMPTYの値: ", EMPTY);             // -1
    Print("EMPTY_VALUEの値: ", EMPTY_VALUE); // 2147483647

    // CLR_NONE の確認
    Print("=== CLR_NONE ===");
    Print("CLR_NONEの値: ", CLR_NONE);       // -1

    // CHARTS_MAX の確認
    Print("=== CHARTS_MAX ===");
    Print("最大チャート数: ", CHARTS_MAX);    // 100

    // INVALID_HANDLE の確認
    Print("=== INVALID_HANDLE ===");
    Print("無効ハンドルの値: ", INVALID_HANDLE); // -1

    // デバッグモード / プロファイリングモードの確認
    Print("=== デバッグ / プロファイリング ===");
    if(IS_DEBUG_MODE)
        Print("現在デバッグモードで実行中です");
    else
        Print("デバッグモードではありません");

    if(IS_PROFILE_MODE)
        Print("現在プロファイリングモードで実行中です");
    else
        Print("プロファイリングモードではありません");

    // WHOLE_ARRAY の使用例
    Print("=== WHOLE_ARRAY ===");
    double srcArray[] = {1.1, 2.2, 3.3, 4.4, 5.5};
    double dstArray[];
    // WHOLE_ARRAY を指定して配列全体をコピー
    ArrayCopy(dstArray, srcArray, 0, 0, WHOLE_ARRAY);
    Print("コピーされた配列の要素数: ", ArraySize(dstArray)); // 5
}

実行結果

=== NULLによる初期化 ===
int型のNULL値: 0
double型のNULL値: 0.0
string型のNULL値: 
=== EMPTY / EMPTY_VALUE ===
EMPTYの値: -1
EMPTY_VALUEの値: 2147483647
=== CLR_NONE ===
CLR_NONEの値: -1
=== CHARTS_MAX ===
最大チャート数: 100
=== INVALID_HANDLE ===
無効ハンドルの値: -1
=== デバッグ / プロファイリング ===
デバッグモードではありません
プロファイリングモードではありません
=== WHOLE_ARRAY ===
コピーされた配列の要素数: 5

まとめ

その他定数は、MQL4プログラミングにおいて特別な意味をもつ定数です。

特にNULLは変数の初期化、EMPTY_VALUEはインジケータバッファで値が存在しないことを示す場合、WHOLE_ARRAYは配列全体を処理対象にする場合など、それぞれの用途をしっかり理解しておきましょう。