本文へスキップ
トラブル解決

MT4/MT5の注文エラー一覧と原因|Invalid stopsからNo connectionまで

MT4のエラーコードとMT5のリターンコードを公式原文つきで一覧化しました。131の無効なロット、130のInvalid stops、10030、10031など頻出エラーを症状・原因・対処の順に解説します。

執筆: Redington 公開: 最終更新:

PR当ページにはプロモーション(アフィリエイト広告)が含まれます。順位・評価は公開の評価基準に基づき編集部が独立して決定しています。EAの成績はすべて過去の検証結果であり、将来の利益を保証するものではありません。海外FX業者は金融庁未登録です。

この記事の目次
  1. 結論:MT4とMT5はコード体系が別物
  2. MT4の注文エラーコード一覧(公式)
  3. MT5のトレードサーバー・リターンコード一覧(公式)
  4. 131 / 10014:無効なロット(Invalid trade volume)
  5. 130 / 10016:Invalid stops(ストップレベル)
  6. 136 / 10021:オフクォート(Off quotes)
  7. 132 / 10018:Market is closed
  8. 10031:No connection(接続できない)
  9. 146:Trade context is busy(MT4固有)
  10. 10030:Invalid order filling type(MT5固有)
  11. 148 / 10033・10034・10040:数量と件数の上限
  12. よくある失敗
  13. まとめ

EAのログに残る数字は、「どこで、誰に、何を拒否されたか」を示す手がかりです。ただしMT4とMT5では番号の体系そのものが違い、同じ意味でもコードが一致しません。この記事では、MQL4とMQL5の公式リファレンスに定義された主要コードを、定数名と公式説明の原文つきで一覧にしました。そのうえで、EA導入時に特に頻出する131・130・136・10030・10031などを、症状・原因・対処の順に個別に解説します。

結論:MT4とMT5はコード体系が別物

✅ 結論

MT4で表示されるのは「エラーコード」(129〜150、4000番台)、MT5で注文時に返るのは「トレードサーバーのリターンコード」(10004〜10046)です。番号は一致しません。検索する前に、自分が使っているのがどちらかを必ず確認してください。

項目

MT4

MT5

番号の呼び方

エラーコード

トレードサーバーのリターンコード

主な番号の範囲

129〜150、4051、4107〜4111

10004〜10046

注文APIの構造

OrderSend() が発注のすべてを担う

MqlTradeRequest 構造体+OrderSend()

部分約定ポリシー

概念として未実装

FOK / IOC / RETURN を注文ごとに指定

公式リファレンス

MQL4 Error Codes

MQL5 Trade Server Return Codes

MQL4とMQL5は相互に非互換で、注文APIが根本的に異なります。そのため「同じEA」を名乗るMT4版とMT5版は、別々に書かれた別プログラムです。両者の違いは MT4とMT5の違い で整理しています。

以下のコード表と公式説明(原文)は、次の一次情報から引用しています。

一覧にないコードが出た場合は、上記の公式リファレンスで確認してください。本記事では確認できたコードのみを掲載しています。

MT4の注文エラーコード一覧(公式)

コード

定数

公式説明(原文)

日本語での意味

129

ERR_INVALID_PRICE

"Invalid price"

無効な価格

130

ERR_INVALID_STOPS

"Invalid stops"

無効なストップ(SL/TPがストップレベル以内)

131

ERR_INVALID_TRADE_VOLUME

"Invalid trade volume"

無効なロット

132

ERR_MARKET_CLOSED

"Market is closed"

市場が閉まっている

133

ERR_TRADE_DISABLED

"Trade is disabled"

取引が無効

134

ERR_NOT_ENOUGH_MONEY

"Not enough money"

証拠金不足

135

ERR_PRICE_CHANGED

"Price changed"

価格が変動した

136

ERR_OFF_QUOTES

"Off quotes"

オフクォート(提示価格なし)

137

ERR_BROKER_BUSY

"Broker is busy"

ブローカーがビジー

138

ERR_REQUOTE

"Requote"

リクオート

139

ERR_ORDER_LOCKED

"Order is locked"

注文がロックされている

140

ERR_LONG_POSITIONS_ONLY_ALLOWED

"Buy orders only allowed"

買い注文のみ許可

141

ERR_TOO_MANY_REQUESTS

"Too many requests"

リクエストが多すぎる

145

ERR_TRADE_MODIFY_DENIED

"Modification denied because order is too close to market"

現在値に近すぎて変更が拒否された

146

ERR_TRADE_CONTEXT_BUSY

"Trade context is busy"

トレードコンテキストがビジー

147

ERR_TRADE_EXPIRATION_DENIED

"Expirations are denied by broker"

有効期限指定が業者に拒否された

148

ERR_TRADE_TOO_MANY_ORDERS

"The amount of open and pending orders has reached the limit"

保有・待機注文数が上限に達した

149

ERR_TRADE_HEDGE_PROHIBITED

"Attempt to open order opposite to existing one when hedging disabled"

両建て禁止環境での反対注文

150

ERR_TRADE_PROHIBITED_BY_FIFO

"Attempt to close order contravening the FIFO rule"

FIFOルール違反の決済

4051

ERR_INVALID_FUNCTION_PARAMVALUE

"Invalid function parameter value"

関数引数が不正

4107

ERR_INVALID_PRICE_PARAM

"Invalid price"

価格パラメータが不正

4109

ERR_TRADE_NOT_ALLOWED

"Trade is not allowed. Enable checkbox 'Allow live trading'"

自動売買が許可されていない

4110

ERR_LONGS_NOT_ALLOWED

"Longs are not allowed. Check the Expert Advisor properties"

買いが許可されていない

4111

ERR_SHORTS_NOT_ALLOWED

"Shorts are not allowed. Check the Expert Advisor properties"

売りが許可されていない

太字のコードが、EA導入時に特に多く報告されるものです。4109が出ている場合は発注以前の問題なので、 EAが動かない原因25項目チェックリスト の自動売買設定から確認してください。

MT5のトレードサーバー・リターンコード一覧(公式)

コード

定数

公式説明(原文)

日本語での意味

10004

TRADE_RETCODE_REQUOTE

"Requote"

リクオート(価格の再提示)

10006

TRADE_RETCODE_REJECT

"Request rejected"

リクエストが拒否された

10009

TRADE_RETCODE_DONE

"Request completed"

リクエストが完了した(正常)

10010

TRADE_RETCODE_DONE_PARTIAL

"Only part of the request was completed"

一部だけが約定した

10013

TRADE_RETCODE_INVALID

"Invalid request"

リクエストの内容が不正

10014

TRADE_RETCODE_INVALID_VOLUME

"Invalid volume in the request"

ロット数が不正

10015

TRADE_RETCODE_INVALID_PRICE

"Invalid price in the request"

価格が不正

10016

TRADE_RETCODE_INVALID_STOPS

"Invalid stops in the request"

ストップの指定が不正

10017

TRADE_RETCODE_TRADE_DISABLED

"Trade is disabled"

取引が無効

10018

TRADE_RETCODE_MARKET_CLOSED

"Market is closed"

市場が閉まっている

10019

TRADE_RETCODE_NO_MONEY

"There is not enough money to complete the request"

資金が不足している

10020

TRADE_RETCODE_PRICE_CHANGED

"Prices changed"

価格が変動した

10021

TRADE_RETCODE_PRICE_OFF

"There are no quotes to process the request"

処理できる気配値がない(MT4のオフクォート相当)

10024

TRADE_RETCODE_TOO_MANY_REQUESTS

"Too frequent requests"

リクエストが頻繁すぎる

10026

TRADE_RETCODE_SERVER_DISABLES_AT

"Autotrading disabled by server"

サーバー側で自動売買が無効

10027

TRADE_RETCODE_CLIENT_DISABLES_AT

"Autotrading disabled by client terminal"

ターミナル側で自動売買が無効

10029

TRADE_RETCODE_FROZEN

"Order or position frozen"

注文またはポジションが凍結されている

10030

TRADE_RETCODE_INVALID_FILL

"Invalid order filling type"

約定ポリシーの指定が不正

10031

TRADE_RETCODE_CONNECTION

"No connection with the trade server"

取引サーバーに接続できない

10033

TRADE_RETCODE_LIMIT_ORDERS

"The number of pending orders has reached the limit"

待機注文数が上限に達した

10034

TRADE_RETCODE_LIMIT_VOLUME

"The volume of orders and positions for the symbol has reached the limit"

銘柄の注文・ポジション合計数量が上限に達した

10040

TRADE_RETCODE_LIMIT_POSITIONS

"The number of open positions simultaneously present on an account has reached its limit"

同時保有ポジション数が上限に達した

10045

TRADE_RETCODE_FIFO_CLOSE

"The request is rejected, because position closing is allowed only by FIFO rule"

FIFOルールでのみ決済が許可されているため拒否

10046

TRADE_RETCODE_HEDGE_PROHIBITED

"The request is rejected, because opposite positions on a single symbol are disabled"

同一銘柄の反対ポジションが無効のため拒否

10009が返っていれば注文は通っています。それ以外が返り続ける場合は、以下の個別解説を確認してください。

131 / 10014:無効なロット(Invalid trade volume)

症状:発注のたびに131または10014が返り、一度もポジションが建たない状態です。EA導入直後にもっとも多く報告されます。

原因:要求したロット数が、銘柄の仕様に合っていないためです。確認すべき値は4つあります。

確認項目

銘柄プロパティ(公式説明の原文)

典型値

最小ロット

SYMBOL_VOLUME_MIN("Minimal volume for a deal")

0.01

最大ロット

SYMBOL_VOLUME_MAX("Maximal volume for a deal")

50〜100

ロット刻み

SYMBOL_VOLUME_STEP("Minimal volume change step for deal execution")

0.01

同方向の合計上限

SYMBOL_VOLUME_LIMIT("Maximum allowed aggregate volume of an open position and pending orders in one direction")

業者による

対処:

  1. ロットの丸め処理を入れます。NormalizeDouble(lot, 2) だけでは足りません。lot = MathFloor(lot / step) * step で刻みに合わせ、最小値と最大値でクリップします。
  2. 浮動小数点誤差に注意します。0.1が内部で0.09999999になっていると弾かれます。刻みに合わせたあと、必ず正規化を適用します。
  3. 口座タイプごとの1ロットの通貨数を確認します。1ロット=1,000通貨のマイクロ口座では、標準口座前提のEAのロット計算が100倍ずれます。XMのスタンダード口座は「1スタンダードロット=100,000通貨」と明記されています(出典: XMTrading 口座タイプ 、2026年9月24日確認)。
  4. リスク率からロットを自動計算するEAで、資金が少なすぎて計算結果が最小ロット未満になっているケースが非常に多く見られます。初心者の「EAが動かない」の大半がこれです。

💡 ポイント

まず計算後のロット値をログに出力してください。0.003のような値が出ていれば、原因は資金かリスク率の設定です。想定ロットに必要な証拠金はロット・必要証拠金計算機で確認できます。

130 / 10016:Invalid stops(ストップレベル)

症状:SL(損切り)やTP(利確)をつけた注文だけが弾かれます。SL・TPなしなら通る場合は、ほぼこれです。

原因:注文に指定したSL/TPや指値・逆指値が、現在値に近すぎるためです。2つの銘柄プロパティが関係します(出典: MQL5 Symbol Properties 、2026年9月24日確認)。

  • SYMBOL_TRADE_STOPS_LEVEL:"Minimal indention in points from the current close price to place Stop orders"。現在値から最低これだけ離さないと、SL/TPや指値・逆指値を置けないというポイント数です。
  • SYMBOL_TRADE_FREEZE_LEVEL:"Distance to freeze trade operations in points"。現在値からこの距離以内にある注文は、変更も取消もできなくなります。

対処:

  1. EAのSL/TPがストップレベルより内側になっていないか確認します。SL 3pipsのようなスキャルピングEAで頻発します。
  2. SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) で値を取得し、MathMax(希望SL, ストップレベル + 余裕) でクリップする実装にします。
  3. 5桁業者と3桁・4桁業者のpoint/pip換算ミスでも同じエラーになります。小数点以下が5桁または3桁の銘柄では、1pip=10ポイントです。MT4向けの古いEAには4桁前提のものがあるため注意してください。
  4. 指標発表直後にストップレベルが動的に拡大する業者があります。平常時0でも、発表時だけ広がることがあります。
  5. 根本解決はストップレベル0の業者・口座タイプを選ぶことです。ただし同じ業者でも口座タイプで異なる場合があります。 EAの制限を業者別に比較 で確認の観点を整理しています。

136 / 10021:オフクォート(Off quotes)

症状:普段は通るのに、特定の時間帯だけ発注が弾かれます。

原因:発注しようとした瞬間に、業者がその価格で約定できる相手を見つけられなかった状態です。MT5では10021が"There are no quotes to process the request"として返ります。

  1. 指標発表時・要人発言時に頻発します。流動性が瞬間的に消えるためです。
  2. スプレッドが異常拡大しているときに、狭いスリッページ許容値で発注している場合。
  3. ロットが大きすぎて流動性が足りない場合。
  4. 週明け(月曜早朝)のギャップ時。

対処:EA側でリトライ処理を実装するのが標準です。数百ミリ秒待って再送し、3回までにとどめます。

⚠️ 注意

無制限にリトライするEAは危険です。連続再送すると141("Too many requests")やMT5の10024("Too frequent requests")に引っかかります。リトライ間隔は最低でも100〜500ミリ秒空けてください。頻発する場合は約定品質そのものの問題なので、業者や口座タイプの変更を検討します。

132 / 10018:Market is closed

症状:ログに「Market is closed」や「マーケットが休止中です」と出ます。

原因と対処:

  1. 単純な取引時間外です。銘柄ごとの取引時間は、気配値表示で銘柄を右クリックして「仕様(Specification)」から確認できます。
  2. ロールオーバー(日跨ぎ)の数分間は、多くの業者でスプレッドが極端に開くか、一時的に約定を受け付けません。
  3. 祝日です。ゴールド・指数・株式CFDは為替と休場日が異なります。
  4. 年末年始・クリスマスは取引時間が大幅に短縮されます。EAは停止させるのが安全です。
  5. 銘柄の SYMBOL_TRADE_MODE が取引不可または決済専用になっていないか確認します。

時間帯フィルタ型のEAでは、サーバー時刻のずれが「取引時間外」を生むこともあります。 MT4/MT5のサーバー時間とGMTオフセット もあわせて確認してください。

10031:No connection(接続できない)

症状:MT5で10031が返り、右下のステータスバーが「回線不通」になっています。

原因と対処:

  1. ログイン情報を再確認します。サーバー名は完全一致が必要です。たとえば XMTrading-Real 3 と XMTrading-Real 30 は別サーバーです。似た名前が並ぶため、選択ミスが起きやすい箇所です。
  2. VPSやPCのファイアウォールが、MetaTraderの通信を遮断していないか確認します。
  3. 週末はサーバーを停止している業者があります。土日の切断は正常な場合があります。
  4. 口座が凍結・休眠していないか確認します。長期間ログインしていない口座で起きます。
  5. 「ツール→オプション→サーバー」のプロキシ設定が誤っていないか確認します。
  6. VPSのネットワーク障害の可能性もあります。業者のステータスページとVPS事業者の障害情報を、両方確認してください。

146:Trade context is busy(MT4固有)

症状:複数のEAを1つのMT4で動かしているときだけ、断続的に発注が失敗します。

原因:MT4のトレードコンテキストはプロセス全体で1つしかありません。複数のEAが同時に発注しようとすると衝突します。MT5はマルチスレッドで動作するため、この問題は発生しません。

対処:

  1. EA側で IsTradeContextBusy() をチェックし、Sleep() で待つループを入れます(セマフォ実装)。
  2. 根本的な対処は、MT4のインスタンスを分けることです。EAごとに別フォルダへMT4をインストールし、別プロセスで起動します。手順は MT4を複数インストールする方法 にまとめています。
  3. 同じMT4で複数EAを動かす場合、注文の取り違えを防ぐためにマジックナンバーの重複も確認してください( マジックナンバーの設定 )。

10030:Invalid order filling type(MT5固有)

症状:MT5でのみ発注が全て失敗します。MT4版の同じEAは動いています。

原因:MT5は注文ごとに約定ポリシーを指定します。業者が許可していないポリシーを指定すると、必ず弾かれます。海外FX業者のMT5でEAが動かない原因として最頻出です。

定数

意味

挙動

ORDER_FILLING_FOK

Fill or Kill

指定数量が全量約定できなければ注文自体が破棄される

ORDER_FILLING_IOC

Immediate or Cancel

約定可能な数量だけ約定し、残りはキャンセル

ORDER_FILLING_RETURN

—

部分約定後、残数量の注文が板に残り続ける

出典: MQL5 Reference - Order Properties (確認日 2026年9月24日)

対処:銘柄ごとに許可されるポリシーは SYMBOL_FILLING_MODE("Flags of allowed order filling modes")で定義されています。このフラグを読み、許可されているポリシーを動的に選ぶ実装が理想です。EAにパラメータとしてFilling Typeの選択肢があれば、FOK→IOC→RETURNの順に試してください。

148 / 10033・10034・10040:数量と件数の上限

症状:しばらくは動いていたEAが、ポジションが増えた時点から発注しなくなります。

原因:業者が定める上限に達しています。MT5では上限の種類ごとにコードが分かれます。

コード

何の上限か

MT4: 148

保有ポジションと待機注文の合計件数

MT5: 10033

待機注文の件数

MT5: 10034

その銘柄の注文・ポジション合計数量

MT5: 10040

口座の同時保有ポジション件数

対処:

  1. ナンピン・グリッド系のEAを複数通貨ペアで動かすと、簡単に上限へ到達します。導入前に「EA数 × 想定最大ポジション数」を計算し、上限内に収めてください。
  2. 上限値は業者・口座タイプによって異なります。編集部でも公式ページ本文での確認に至らなかった業者があるため、数値は必ず利用する業者の公式FAQで確認してください。
  3. 銘柄あたりの合計数量上限(10034)は、ロットを増やした局面で先に当たることがあります。

⚠️ 注意

上限に達したEAは「新規は建たないが決済は動く」という中途半端な状態になります。ロジックが崩れたまま運用が続くため、ログを見ずに放置するのが最も危険です。ナンピン系を複数運用する場合は、想定最大ポジション数を事前に把握してください。

よくある失敗

  • エラーコードを見ずに再起動だけ繰り返す。ターミナル(Ctrl+T)の「エキスパート」タブと「操作履歴」タブにコードが残っています。まずそこを読みます。
  • MT4のコードでMT5の情報を検索する。番号体系が違うため、無関係な情報にたどり着きます。
  • リトライ回数を制限しない。オフクォート対策のつもりが、141や10024を誘発します。
  • デモで確認して終わりにする。デモサーバーは約定を常に通すため、オフクォートやリクオートがほぼ発生しません。口座タイプ固有のエラーも出ません。
  • そもそも発注に到達していない。笑顔マークが出ていない場合、エラーコード以前の問題です。 スマイルマークが出ないときの直し方 を先に確認してください。
  • ファイルの置き場所が違う。データフォルダ以外に置いたEAは読み込まれません( EAの入れ方 )。

まとめ

MT4は「エラーコード」、MT5は「トレードサーバーのリターンコード」で、番号は一致しません。まずプラットフォームを特定し、本記事の一覧で意味を確認してください。頻出するのは131/10014(ロット)、130/10016(ストップレベル)、10030(約定ポリシー)の3つです。いずれも銘柄の「仕様」を開けば原因の当たりがつきます。掲載のないコードは公式リファレンスで確認してください。

発注以前の段階でつまずいている場合は EAが動かない原因25項目チェックリスト を、バックテストが実行できない場合は バックテストが動かない・結果がおかしいときの確認項目 を参照してください。

よくある質問

Q.MT4のエラーコードとMT5のリターンコードは同じものですか?
別物です。MT4のエラーコードはMQL4のリファレンスで定義され、129〜150や4000番台を使います。MT5で注文時に返るのは「トレードサーバーのリターンコード」で、10004〜10046の5桁です。意味が近いコードはありますが、番号は一致しません。たとえば無効なロットはMT4が131、MT5が10014です。検索するときは、必ずプラットフォームを分けて調べてください。一覧は本記事の表にまとめています。
Q.「OrderSend error 130」が消えません。どうすればいいですか?
130はERR_INVALID_STOPS("Invalid stops")で、SL/TPや指値が現在値に近すぎることを示します。銘柄のSYMBOL_TRADE_STOPS_LEVELが「現在の終値からストップ注文を置くために必要な最小の距離(ポイント)」と定義されているため、この値より内側には置けません。まず気配値表示で銘柄を右クリックし「仕様」からストップレベルを確認してください。5桁表示の業者では1pip=10ポイントなので、EA側の設定単位のずれも疑います。
Q.エラー131(無効なロット)が資金を入れても直りません。
ロット数が銘柄の仕様に合っていない状態です。最小ロット、最大ロット、ロット刻みの3つをすべて満たす必要があります。リスク率から自動計算するEAでは、計算結果が最小ロット未満になって弾かれるケースが非常に多く見られます。まず計算後のロット値をログに出力して確認してください。また1ロットの通貨数が口座タイプで異なる場合、計算が大きくずれます。必要証拠金の目安はロット・必要証拠金計算機で確認できます。
Q.MT5でだけ10030が出ます。MT4では同じEAが動いていました。
10030はTRADE_RETCODE_INVALID_FILL("Invalid order filling type")で、MT5固有のエラーです。MT5は注文ごとにFOK/IOC/RETURNのいずれかの約定ポリシーを指定します。銘柄ごとに許可されるポリシーはSYMBOL_FILLING_MODEで定義され、許可されていないものを指定すると必ず弾かれます。MT4にはこの概念自体がないため、MT4版では起きません。EAにFilling Typeの選択肢があれば、FOK→IOC→RETURNの順に切り替えて試してください。
Q.「Trade context is busy」はMT5でも起きますか?
起きません。146(ERR_TRADE_CONTEXT_BUSY)はMT4固有のエラーです。MT4のトレードコンテキストはプロセス全体で1つしかないため、1つのMT4で複数のEAが同時に発注しようとすると衝突します。MT5はマルチスレッドで動作するため、この問題は発生しません。MT4で多数のEAを動かす場合は、EAごとにMT4のインスタンスを分けるのが根本的な対処になります。詳しくはMT4を複数インストールする方法を参照してください。

関連記事