MT5エラーコード一覧 10027・10030・10016の直し方
MT5 / MQL5 エラーコード一覧 — リターンコード10004〜10031と実行時エラー
MT5のエラーは2種類あります。5桁の取引リターンコード(例:10027 自動売買が無効、10030 フィリング方式が非対応、10016 ストップが無効、10019 証拠金不足)と、GetLastError() が返す4桁の実行時エラー(例:4401、4756)です。下の早見表で、番号から意味と直し方を引けます。
早見表:コード → 意味 → 直し方
番号と定数名は MQL5 公式リファレンス(取引サーバーのリターンコード・実行時エラー)に合わせています。
取引リターンコード(MqlTradeResult.retcode)
| コード | 定数名 | 意味 | 直し方 | 詳しい記事 |
|---|---|---|---|---|
| 10004 | TRADE_RETCODE_REQUOTE | リクオート(約定前に価格が動いた) | 許容スリッページ(deviation)を広げるか、最新の価格で送り直す | Off quotes / リクオート |
| 10006 | TRADE_RETCODE_REJECT | リクエストが拒否された | 多くはスプレッド拡大や急変時。次のティック以降の再試行に任せる | — |
| 10013 | TRADE_RETCODE_INVALID | リクエストが不正 | リクエストの項目(action・注文種別・銘柄)に誤りがある。送信前に OrderCheck() で検証する | — |
| 10014 | TRADE_RETCODE_INVALID_VOLUME | ロット数が不正 | 銘柄の最小・最大・刻み(SYMBOL_VOLUME_MIN / MAX / STEP)に合わせて丸める | — |
| 10015 | TRADE_RETCODE_INVALID_PRICE | 価格が不正 | 価格を銘柄の桁数とティックサイズに正規化する。指値・逆指値は現在値に対して正しい側に置く | — |
| 10016 | TRADE_RETCODE_INVALID_STOPS | ストップ(SL/TP)が不正 | SL/TP をブローカーのストップレベルより遠く、価格に対して正しい側に置く | Invalid stops |
| 10017 | TRADE_RETCODE_TRADE_DISABLED | 取引が無効 | 銘柄の「仕様」で取引モードを確認し、投資家パスワードではなく取引用パスワードでログインしているか確かめる。それでも出る場合はブローカーに問い合わせる | — |
| 10018 | TRADE_RETCODE_MARKET_CLOSED | 市場が閉まっている | 銘柄の取引セッションが開くまで待つ | Market closed |
| 10019 | TRADE_RETCODE_NO_MONEY | 証拠金が足りない | ロットを下げる・ポジションを減らす・入金する | 証拠金不足 |
| 10021 | TRADE_RETCODE_PRICE_OFF | 処理に使える気配値がない | 接続状態と、その銘柄に気配値が出ているかを確認して再試行する | Off quotes / リクオート |
| 10026 | TRADE_RETCODE_SERVER_DISABLES_AT | サーバー側で自動売買が無効 | ブローカーがこの口座の自動売買を止めている。ブローカーに問い合わせる | 自動売買が無効 |
| 10027 | TRADE_RETCODE_CLIENT_DISABLES_AT | 端末側で自動売買が無効 | アルゴ取引ボタンをONにし、オプションとEAのプロパティでアルゴ取引を許可する | 自動売買が無効 |
| 10030 | TRADE_RETCODE_INVALID_FILL | 注文のフィリング方式が不正 | type_filling を銘柄が対応する方式(FOK / IOC / Return)にする | Unsupported filling mode |
| 10031 | TRADE_RETCODE_CONNECTION | 取引サーバーに接続できていない | ステータスバーの接続表示・VPSの回線・ブローカーのサーバー状況を確認する | — |
実行時エラー(GetLastError())
| コード | 定数名 | 意味 | 直し方 | 詳しい記事 |
|---|---|---|---|---|
| 4001 | ERR_INTERNAL_ERROR | 予期しない内部エラー | 原因が1つに決まるコードではない。調べたい関数の直前で ResetLastError() を呼び、続くようなら端末を再起動・更新する | — |
| 4401 | ERR_HISTORY_NOT_FOUND | 要求した履歴が見つからない | 約定・注文を読む前に、それを含む期間で HistorySelect() を呼ぶ | — |
| 4752 | ERR_TRADE_DISABLED | EAによる取引が禁止されている | アルゴ取引をONにし、EAのプロパティで「アルゴ取引を許可」にチェックを入れる | 自動売買が無効 |
| 4756 | ERR_TRADE_SEND_FAILED | 取引リクエストの送信に失敗 | OrderSend() が false を返した状態。本当の理由は MqlTradeResult.retcode を見る(10027・10030・10016 が多い) | — |
MT4から来た方へ: MT4では同じ状況に別の番号(多くは3桁。134・130・132・136・4109 など)が使われます。下の各節に、MQL4 公式リファレンスに基づく「MT4での番号」を併記しました。なお MT5 では 4109 は ERR_CHART_WRONG_PROPERTY(チャートのエラー)で、取引のエラーではありません。
Expertタブの確認方法
MT5下部の「Expert」タブをクリックすると、すべてのEAのログが時系列で表示されます。
表示形式:
2026.05.18 10:00:01.234 GOLD VIPER XAUUSD,M30: [ERROR] 10016
日時 EA名 通貨ペア 時間足 メッセージ
エラーが表示されている場合は、コードの番号を上の早見表で引いて原因を特定してください。
よく発生するエラーコードと対処法
10019 — 証拠金不足(TRADE_RETCODE_NO_MONEY)
MT4での番号: 134 ERR_NOT_ENOUGH_MONEY。ERR_NO_MONEY は同じ状況を指す通称として広く使われています。
メッセージ例: "Order failed: not enough money"
"No money"
原因: 証拠金が不足しているためポジションを建てられない。
対処法:
- MT5の「取引」タブで現在の証拠金維持率を確認
- 維持率が100%以下に近い場合は追加入金を検討
- EAのRiskPercentを下げてロットを小さくする
- 保有中のポジションを一部手動決済して証拠金を回収
📖 残高があるのに出る理由・MQL5コードでの防止策まで詳しくは ERR_NO_MONEY(MT5/MQL5)を完全解決 を参照。
10027 — 端末側で自動売買が無効(TRADE_RETCODE_CLIENT_DISABLES_AT)
関連するMT5の実行時エラー: 4752 ERR_TRADE_DISABLED。MT4での番号: 4109 ERR_TRADE_NOT_ALLOWED。
メッセージ例: "AutoTrading disabled by client"
"Trade is not allowed"
原因: MT5の自動売買がOFFになっている。
対処法:
- MT5上部ツールバーの「アルゴ取引」ボタンをクリックしてON(緑色)にする
- ツール → オプション → エキスパートアドバイザー → 「アルゴ取引を許可」をONにして再起動
VPS再起動後にMT5が自動起動したとき、このエラーが発生することがよくあります。
📖 ボタン以外の見落とし(オプション設定・チャート個別の許可・投資家パスワード・10027/10026の違い)まで詳しくは MT5の自動売買が無効(AutoTrading disabled)を完全解決 を参照。
10018 — 市場クローズ(TRADE_RETCODE_MARKET_CLOSED)
MT4での番号: 132 ERR_MARKET_CLOSED。
メッセージ例: "Market closed"
原因: 取引時間外(週末・祝日)にEAがエントリーしようとした。
対処法: 通常は問題ありません。週末は市場が閉まっており、この間にエントリーしようとするとこのエラーが出ますが、市場が開けば自動で再開します。
📖 平日なのに出る場合(銘柄別の取引セッション・サーバー時間・Close only設定)は Market closed(10018/132)の原因と直し方 を参照。
10016 — ストップが不正(TRADE_RETCODE_INVALID_STOPS)
MT4での番号: 130 ERR_INVALID_STOPS。
メッセージ例: "Invalid stops"
原因: SL(ストップロス)またはTP(テイクプロフィット)の設定値がブローカーのストップレベル制限に引っかかっている。
対処法:
- ブローカーのストップレベル(最小SL距離)を確認(MT5でシンボルを右クリック → 仕様 → 「ストップレベル」欄)
- EAのSL幅がストップレベルより大きくなっているか確認
- ATR値が極端に小さい時間帯(低ボラ時)に発生しやすい
📖 ストップレベルの仕組み・10016と130の違い・MQL5コードでの恒久防止策まで詳しくは Invalid stops(10016/130)を完全解決 を参照。
10021 — 気配値なし(TRADE_RETCODE_PRICE_OFF)
MT4での番号: 136 ERR_OFF_QUOTES。
メッセージ例: "Off quotes"
原因: ブローカーサーバーから気配値が届いていない。接続の問題。
対処法:
- MT5下部のステータスバーで接続状態を確認
- 切断されている場合はMT5を再起動
- ブローカーのサーバー障害情報を確認
- VPSのネットワーク接続を確認
📖 リクオート(10004/138)との違い・deviation設定・リトライ実装まで詳しくは Off quotes / リクオート(10021/10004)を完全解決 を参照。
📖 ブローカー乗り換え直後に出る Unsupported filling mode(10030) は別原因です。Unsupported filling mode(10030)の直し方 を参照。
10012 — タイムアウト(TRADE_RETCODE_TIMEOUT)
MT4での番号: 128 ERR_TRADE_TIMEOUT。
メッセージ例: "Request canceled by timeout"
原因: 注文がタイムアウトした。サーバーの混雑・ネットワーク遅延。
対処法:
- 重要指標発表直後などの高負荷時間帯に発生しやすい
- 基本的に次のティックでEAが再試行するため放置でよい
- 頻繁に発生する場合はVPSのネットワーク環境またはブローカーを見直す
10006 — リクエスト拒否(TRADE_RETCODE_REJECT)
メッセージ例: "Request rejected"
原因: 注文がブローカーに拒否された。スプレッド超過・価格が動きすぎた等。
対処法:
- MaxSpreadPointsの設定値を確認。スプレッドが拡大しているときに発生しやすい
- 指標発表直後は正常な動作として無視してよい
- 頻繁に発生する場合はMaxSpreadPointsを少し上げる
"Margin level too low"
メッセージ例: "Margin level too low. Skip signal."
原因: EAのUseMarginCheck = true設定で、証拠金維持率がMinMarginLevel(例:200%)を下回ったため自動でエントリーを停止。
対処法:
- これは正常な保護動作です(エラーではありません)
- 証拠金維持率が回復するとエントリーが再開されます
- 根本対策:追加入金またはRiskPercentを下げる
"No signal on this bar"または"Wait for next bar"
これはエラーではなくデバッグ情報です。
"No signal. ATR=1245, EMA(50)=1998.23"
EAが毎回チャートを評価して「今回はエントリー条件を満たさない」という正常なログです。
エラーの優先度分類
| 優先度 | エラー | 対応 |
|---|---|---|
| 🚨 緊急 | 10019 証拠金不足(MT4: 134) | 即座に証拠金を補充するかロットを下げる |
| 🚨 緊急 | 10027 自動売買が無効 / 4752(MT4: 4109) | アルゴ取引をONにする |
| ⚠️ 注意 | 10016 ストップが不正(MT4: 130) | SL設定を見直す |
| ⚠️ 注意 | 10030 フィリング方式が不正 | 銘柄が対応する方式に設定する |
| ⚠️ 注意 | 10021 気配値なし(MT4: 136)が頻発 | 接続環境を確認 |
| ✅ 正常 | 10018 市場クローズ(MT4: 132)週末のみ | 放置でOK |
| ✅ 正常 | 10012 タイムアウト(MT4: 128)散発的 | 放置でOK |
| ✅ 正常 | Margin level too low | 証拠金が低いとき正常動作 |
Expert タブのログを効率的に確認する方法
ログのフィルタリング
Expertタブ内で右クリック → 「フィルター」で特定のEAまたはエラーのみを表示できます。
ログファイルの保存場所
MT5のログファイルは以下に保存されます:
C:\Users\[ユーザー名]\AppData\Roaming\MetaQuotes\Terminal\[ID]\MQL5\Logs\
日付別のファイルが自動生成されます。エラー調査時はこのフォルダを開いて確認してください。
まとめ
EAのエラーのほとんどは以下の4つのカテゴリに分類されます:
- 証拠金不足(10019): 追加入金またはロット縮小で解決
- 自動売買OFF(10027 / 4752): アルゴ取引ボタンをクリックするだけ
- 接続問題(10021 / 10031): MT5再起動またはVPSのネットワーク確認
- 正常な動作: 放置でよい(週末市場閉鎖、スプレッド拡大時の回避等)
Expert タブを毎日確認して、緊急度の高いエラー(10019・10027)を素早く検出する習慣をつけてください。
FAQ
Q: エラーコードはどこで調べられますか?
MQL5の公式リファレンスに全コードが載っています。10004〜10046 は取引サーバーのリターンコード、4xxx 番台は実行時エラーです。MT5のヘルプ(F1キー)からも検索できます。
Q: リターンコードと GetLastError() は何が違いますか?
リターンコード(10004〜10046)は注文に対する取引サーバーの回答で、MqlTradeResult.retcode に入ります。GetLastError() が返すのは MQL5 プログラム自体の実行時エラー(4xxx・5xxx)です。OrderSend() が失敗すると両方が出ることが多く、GetLastError() が 4756、本当の理由はリターンコード側に入ります。
Q: エラーが大量に出ているときはEAを止めるべきですか?
10018(市場クローズ)や 10012(タイムアウト)が散発的に出る程度なら止める必要はありません。ただし 10019(証拠金不足)が繰り返し出る場合は、EAを一時停止して証拠金状況を確認してから再開してください。
Q: 「Invalid account」エラーが出ています。
MT5のログイン情報(サーバー名・ログインID・パスワード)が間違っている可能性があります。ファイル → 取引口座を開く、で再ログインを試みてください。
Q: エラーがないのにEAがエントリーしません。
エラーがなくエントリーしない場合は「シグナルが出ていない正常な状態」です。EAはすべての足でエントリーするわけではありません。条件が揃ったときだけエントリーするため、しばらく様子を見てください。H1足のEAなら1日1〜3回エントリーすれば正常です。
関連記事
📧 値上げ前のお知らせ + 5日間メール講座(無料)
全EAは現在ローンチ価格で、販売数に応じて段階的に値上げされます。値上げ前の事前通知に加えて、FX自動売買の本質、バックテストの正しい見方、ブローカー選びのコツを毎日1通お届けします。
※ プライバシーは厳守。配信解除はいつでも可能です。