MQL のプログラムが、デバッグモードとリリースモードのどちらでコンパイルされているかを調べるには、#ifdef
プリプロセッサで下記のマクロが定義されているかどうかを調べます。
_DEBUG
… デバッグモードでコンパイルされている(MetaEditor 上でF5
で実行したとき)_RELEASE
… リリースモードでコンパイルされている(MetaEditor 上でF7
でコンパイルしたとき)
次のスクリプトを実行すると、スクリプト自身がどちらのモードでコンパイルされているかをログに出力します。
void OnStart() {
#ifdef _DEBUG
Print("Run in debug mode");
#else
Print("Run in release mode");
#endif
}
上記はプリプロセッサで調べる例ですが、MQL5InfoInteger 関数を使って、実行時に動的にチェックすることもできます。
// MQL5 の場合
bool isDebug = MQL5InfoInteger(MQL5_DEBUGGING);
// MQL4 の場合
bool isDebug = IS_DEBUG_MODE;
関連記事
- MetaTrader/MQL: MQL での色の表現方法 (color)
- MetaTrader/MQL: チャートの描画スタイルを設定する (ChartSetXxx)
- MetaTrader/MQL: 新しいチャートを開く (ChartOpen)
- MetaTrader/MQL: シンボルのスプレッド情報を取得する (SymbolInfoInteger)
- MetaTrader/MQL: 実行中のプログラムの種類(スクリプト/インジケーター/EA)を判別する (MQL5_PROGRAM_TYPE)
- MetaTrader/MQL: インジケーターの実装例 - Momentum(モメンタム)
- MetaTrader/MQL: カスタムインジケーターに水平線を表示する (IndicatorSet*)