Trade context busyとは
MT5で「Trade context busy」は、プラットフォームの取引処理部分(Trade context)が他のリクエストを処理中で、新しい取引リクエストを受け付けられない状態を示すメッセージです。
MT5では取引コンテキストは1つしかなく、同時に1つの取引操作しか処理できません。複数のEAやスクリプトが同時に取引リクエストを送ると、先に処理中のリクエストが完了するまで他のリクエストは待機状態になります。
原因
- 複数のEAが同時に注文を出そうとしている:複数のチャートに異なるEAを設置している場合、ティック(価格更新)のタイミングが重なると同時にOrderSendが呼ばれることがあります。
- 手動注文とEAの注文が競合:EAが動いている最中に手動で注文を出そうとした場合。
- スクリプトの実行中:一括決済スクリプトなどが大量の注文を処理している最中。
解決手順
手動注文の場合:数秒待ってから再注文
Trade context busyは一時的な状態です。他の処理が完了すれば(通常は数秒以内)、再び注文を出せるようになります。
同時稼働するEA・スクリプトを減らす
同じMT5プラットフォーム上で多数のEAを動かしている場合は、EA数を減らすか、重要度の低いEAを別のMT5インスタンスに移動します。
EAにリトライロジックを追加する
EA開発者の場合は、IsTradeContextBusy()(MT4)または取引リクエストの結果を確認し、busyの場合はSleep()で待機してからリトライするロジックを追加します。
// MT5の例
MqlTradeRequest request;
MqlTradeResult result;
// ... requestの設定 ...
int retries = 5;
for(int i = 0; i < retries; i++) {
if(OrderSend(request, result))
break;
if(result.retcode == TRADE_RETCODE_ERROR)
Sleep(500); // 500ms待ってリトライ
}
ℹ MT4とMT5の違い
MT4ではIsTradeContextBusy()関数でビジー状態を事前に確認できます。MT5にはこの関数はありませんが、OrderSend()の結果コードでビジー状態を判定できます。
エラーが解消しない場合は環境を見直す
MT4/MT5のエラーが頻発する場合、サーバー環境や口座設定に問題がある可能性があります。XMは日本語サポート完備で、口座開設ボーナス13,000円を使えばリスクなしで取引環境をテストできます。
XM公式サイトで口座開設(無料)※ 当サイト経由の口座開設でボーナスが付与されます(PR)
※ XMは日本の金融庁に未登録の海外FX業者です。取引にはリスクが伴います。
※ XMは日本の金融庁に未登録の海外FX業者です。取引にはリスクが伴います。
リスクに関する注意事項
FX(外国為替証拠金取引)は元本保証のない金融商品です。レバレッジにより、預けた証拠金以上の損失が発生する可能性があります。余剰資金の範囲で取引を行ってください。当サイトで紹介する海外FX業者は日本の金融庁に未登録であり、日本の投資者保護基金の対象外です。当サイトの情報は一般的な情報提供を目的としたものであり、特定の業者の利用を推奨するものでも、個別の売買助言でもありません。
FX(外国為替証拠金取引)は元本保証のない金融商品です。レバレッジにより、預けた証拠金以上の損失が発生する可能性があります。余剰資金の範囲で取引を行ってください。当サイトで紹介する海外FX業者は日本の金融庁に未登録であり、日本の投資者保護基金の対象外です。当サイトの情報は一般的な情報提供を目的としたものであり、特定の業者の利用を推奨するものでも、個別の売買助言でもありません。