MT4 EAのエラー130はどう調査する?ストップ距離から動的制限までの4ステップ法
オリジナルの淡いブルーのフローチャートでMT4 EAのERR_INVALID_STOPSを段階的に調査:ログ、気配値の精度、MODE_STOPLEVEL、動的制限。ストップを緩めてリスクを覆い隠すことを避ける。
著者:トーマス|EAとMT4の実務|2026年10月20日
EAをチャートに載せ、自動売買も有効にしているのに、注文送信時に「130」が出ると、プログラムが完全に壊れたと誤解しがちです。MQL4リファレンスでは130はERR_INVALID_STOPSとして記載されており、リクエスト内のストップロス・テイクプロフィット、指値注文価格、またはその正規化方法が取引サーバーに受け入れられなかったことを意味します。これは原因を特定する手がかりであり、ストップを盲目的に緩めてよい理由ではありません。本記事では4ステップの調査法で、どの記録を見るべきかを説明します。
ステップ1:まずどのリクエストが失敗したかを特定する
MT4ターミナルまたはプログラムの関連ログを開き、エラー発生時のサーバー時刻、銘柄、注文方向、操作がOrderSendかOrderModifyか、および戻り値のエラーコードを記録します。ログに「注文失敗」の4文字しかない場合は、まずEAにパスワードなどの機密データを出力させない前提で、リクエスト価格、ストップロス、テイクプロフィット、戻り値を記録させます。まず新規建ての失敗、ストップロス変更の失敗、指値注文の失敗を区別します。この3つは確認すべき価格関係が異なります。
リアル口座で同じ失敗リクエストを繰り返し送信して「運試し」をしないでください。繰り返し試行は余分な負荷を生む可能性があり、相場変化後に突然成功して意図しないポジションが発生することもあります。まずデモ環境で再現し、パラメータのバージョンとその時のプラットフォームの気配値を保存します。
ステップ2:Bid、Ask、Point、Digitsを照合する
MQL4のMarketInfoで現在の銘柄のBid、Ask、Point、Digitsを読み取れます。Pointはその気配値の最小表示単位の一つを表し、Digitsは小数桁数を表します。「10ポイント」が何ドルに相当するかは、その銘柄の実際のPointで計算する必要があり、異なるブローカーの金のコードと精度を混同してはいけません。価格を渡す前には、対応する桁数で正規化する必要もあります。
例は数学的な示意にすぎません。あるデモ銘柄のPointが0.01、最小距離が50ポイントなら、計算される距離は0.50気配値単位です。Pointが0.001の銘柄なら0.05になります。数値は本日時点の実在プラットフォームの契約規則を表すものではありません。ログを確認する際は売買価格も同時に保存し、本来買値を参照すべき側を売値で確認したり、その逆をしたりしないようにします。
ステップ3:MODE_STOPLEVELと注文種別を確認する
公式のOrderSendドキュメントには、ストップロスとテイクプロフィットは市場価格から近すぎてはいけないこと、指値注文の予定開倉価格も現在の市場から近すぎてはいけないことが説明されています。MarketInfo(Symbol(),MODE_STOPLEVEL)で公開されている最小距離をポイント単位で照会できます。さらに注文が買い、売り、またはどの種類の指値注文かに応じて、価格の方向、距離、正規化を個別に確認します。固定のオフセット量をすべての注文に当てはめるのではありません。

上の図はオリジナルのフロー示意であり、実際の気配値や口座情報は含みません。最小距離はサーバーが注文を受け入れる技術的な境界にすぎず、戦略上合理的なストップ距離と同じではありません。130を回避するためにストップを遠ざけると、当初計画した1取引あたりのリスクが大きくなります。まずポジションサイズを再計算し、必要ならその取引を諦めるべきです。
ステップ4:0が返っても制限がないと断定できない
MQL4公式のMODE_STOPLEVELの説明では特に、0が返るのは固定の最小距離がないことを意味する場合もあれば、サーバーがターミナルで直接表現できない動的制限を採用している場合もあると注意を促しています。後者の場合でも130が返る可能性があります。したがって「0が返ったからストップを価格にぴったり付ける」は成立しません。相場が激しく変化すると、気配値の更新、スプレッドの変化、サーバー側の規則によって、以前計算した距離が無効になることもあります。
コードの計算式がその時のログと一致しているのに依然として130が出る場合は、失敗時刻、銘柄、注文パラメータ、プラットフォームのバージョンを保存し、ブローカーの銘柄仕様と注文制限を確認し、プラットフォームのテクニカルサポートに確認します。他社プラットフォームのPointやStopLevelから本口座の規則を推測してはいけません。ましてやストップロスを削除して本当の失敗原因を覆い隠してはいけません。
修正後の検証順序
まずデモ口座で最小再現ケースを実行します。同じ銘柄で4つの気配値パラメータとStopLevelを記録し、単発のテストリクエストを送信し、サーバーの戻り値と注文状態を確認します。次に価格が急速に変化する場合や異なる取引時間帯の挙動をテストします。プログラムに失敗後の停止またはクールダウン機構があり、再試行時に重複して新規建てしないことを確認します。最後にリスク予算、スプレッド、許容損失が当初の計画に依然として合致するか照合します。
エラー130の調査の重点は「なぜリクエストが拒否されたか」であり、「どう強引に約定させるか」ではありません。EAの実行結果は戦略ロジック、ネットワーク、プラットフォームの執行にも影響されます。いかなる修正も利益を保証せず、損失を回避するものでもありません。レバレッジ取引は重大な損失を生む可能性があります。