その他定数
その他定数は、プログラムの状態を定数にしたものです。
他の定数と違い、特別な意味をもつ定数が多いことが特徴です。
その他定数
| 定数 | 数値 | 説明 |
| NULL | 0 | 全てのデータ型のゼロ値 |
| EMPTY | -1 | パラメータの空の値 |
| EMPTY_VALUE | 2147483647 | インジケータバッファの空の値 |
| CLR_NONE clrNONE | -1 | 無色の値 |
| CHARTS_MAX | 100 | ターミナルで同時に開けるチャートの最大数 |
| INVALID_HANDLE | -1 | 無効なハンドル |
| IS_DEBUG_MODE | 0以外:デバッグモードON 0:デバッグモードOFF | MQL4プログラムのデバッグモードフラグ |
| IS_PROFILE_MODE | 0以外:プロファイリングモードON 0:プロファイリングモードOFF | MQL4プログラムのプロファイリングモードフラグ |
| WHOLE_ARRAY | 0 | 全ての配列要素を処理する |
| WRONG_VALUE | 1 | 他列挙型へキャスト可能 |
その他定数の使い方
その他定数の中で、一番多く使う定数が、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は配列全体を処理対象にする場合など、それぞれの用途をしっかり理解しておきましょう。




