IsTradeAllowed 関数
EAの取引許可と取引コンテキスト(プログラムの実行に必要な各種取引情報)の状態を確認する関数です。
EAの取引許可については、
① EAの設定の全般タブの「自動売買を許可する」にチェックを入れる
② MT4のツールバー「自動売買」ボタンを ONにする
を行なう必要があります。詳しくはこちらの「自動売買を許可する方法」を参考にしてください。
データ型と構成・戻り値
bool IsTradeAllowed();
戻り値は、EAが取引許可され 且つ 取引コンテキストがビジーでない場合は true、それ以外は falseを返します。
引数 [0]
引数無し。
使用例
IsTradeAllowed 関数による取引許可
MT4では、EAの取引許可がされていない時は、OrderSend関数、OrderClose関数、OrderCloseBy関数、OrderModify関数、OrderDelete関数は動作しないようになっています。
しかし、それ以外の関数は動作してしまいます。例えば、Print関数、MessageBox関数などは動作します。これらを含めて EAが取引許可がされていない状態でプログラムを動作させたくない時などに IsTradeAllowed関数は使われます。
コード
// IsTradeAllowed関数による取引許可
#property strict
int i=0;
void OnTick() {
if(IsTradeAllowed() == true) { // ①
Print("取引許可されています:", i, "ティック回");
i++;
} // ②
}
このコードをコンパイルして実行するのに、自動売買を許可しておく必要があります。
自動売買を許可する方法はこちら、コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
結果は、EAの取引許可をした時だけ Print関数が読み込まれるようになります。
MT4のツールボックスの「自動売買」ボタンで ON OFFを切り替えてエキスパートタブに表示されるメッセージを確認してみてください。
比較として、コードの 6と 11行目(①②のコメントがある行)をコメント化して IsTradeAllowed関数が無い場合も確認してみてください。結果は、EAの取引許可に関わらず Print関数が読み込まれるようになります。