MetaTrader で取引を行うスクリプトや EA をデバッグしているときに、間違えて実際の口座で実行してしまうと、不本意なポジションをとってしまい危険です。 下記のユーティリティ関数を使うと、実行中のプログラムがデモ口座上で実行されているかを調べることができます。
namespace Util {
/**
* プログラムがデモ口座で実行されているか調べ、そうでなければ警告を表示します。
*
* @return デモ口座で実行されているなら true、そうでないなら false
*/
bool IsDemoAccount() {
if (AccountInfoInteger(ACCOUNT_TRADE_MODE) == ACCOUNT_TRADE_MODE_DEMO) {
return true;
}
Alert("Operation is not allowed on a live account!");
return false;
}
}
例えば、スクリプトのエントリポイント (OnStart
関数) の先頭で次のようにしておけば、スクリプトがデモ口座以外で実行されたときに実行を中止できます。
#include <maku77/Util.mqh>
void OnStart() {
if (!Util::IsDemoAccount()) return;
// ... 残りの処理 ...
}
関連記事
- MetaTrader/MQL: 注文時のフィル・ポリシー(充填ポリシー)を理解する
- MetaTrader/MQL: ポジション情報を取得する (PositionXxx) (MT5)
- MetaTrader/MQL: 注文情報を取得する (OrderXxx) (MT5)
- MetaTrader/MQL: 成行注文の 4 つの注文執行方式 (Request Execution Type) を理解する
- MetaTrader/MQL: OrderSend で注文を出す (MT4)
- MetaTrader/MQL: アカウント情報(口座情報)を取得する (AccountInfo*) (MT5)
- MetaTrader/MQL: GitHub で MetaTrader 用のプログラムを管理する