当サイトはアフィリエイト広告を含みます(PR)

MT5「Invalid request」が表示される場合の確認手順

✅ 結論(解決策)
エラーMT5 診断フローチャート エラーMT5: Invalid Request 原因を確認 注文パラメータに不備がある 価格・ロット数・SL/TPを再確認 解決 ✓

Invalid requestとは

MT5で「Invalid request」(リターンコード:TRADE_RETCODE_INVALID、数値10013)は、送信した取引リクエストの形式や内容が不正であることを示します。MT5はMT4よりも注文パラメータの検証が厳格なため、MT4では通った注文がMT5でInvalid requestになることがあります。

このエラーは「リクエスト自体の構造が正しくない」ことを意味しており、サーバー側の問題ではなくクライアント側(ユーザーの注文内容またはEAコード)の問題です。手動注文では画面上で修正して再送、EA運用の場合はコードの該当箇所を修正する必要があります。リクエストの検証は以下の順に厳格に行われるため、どの段階でエラーが出ているかを特定するのが解決への近道です。

Invalid requestの主な原因

  1. 注文タイプとパラメータの不一致:成行注文に価格を指定した、指値注文に価格を指定しなかった、など。
  2. ロット数の不正:最小ロット未満、最大ロット超過、ステップ値に合わない値。
  3. SL/TPの設定不正:ストップレベル内の値、または方向が逆。
  4. シンボル名の不一致:EAでハードコードしたシンボル名が、業者のシンボル名と異なる(例:「EURUSD」と「EURUSD.」)。
  5. 口座タイプの制限:デモ口座で本番サーバーのシンボルを指定した場合など。
  6. フィリングモードの不一致:MT5では注文のフィリングモード(FOK, IOC, Return)を指定する必要があり、銘柄がサポートするモードと合っていない場合にエラーになります。
  7. 通貨ペアの気配値表示未設定:MT5では気配値表示ウィンドウに表示されていないシンボルへの注文はエラーになることがあります。
  8. マジックナンバーの指定漏れ:EAで複数ポジションを管理する場合、マジックナンバーが未指定または不適切だとInvalid requestになることがあります。

手動注文時に確認すべきポイント

手動注文でInvalid requestが出る場合、以下の項目を順番に確認してください。一つずつ検証していくことで、原因の多くは特定できます。MT4に慣れたトレーダーがMT5に移行したばかりのときによく遭遇する内容です。

エラーに強い環境を整えませんか?

XMTradingは日本語サポート完備で、エラー発生時も迅速に対応。安定したサーバー環境で快適にトレードできます。

XMTrading 公式サイトを見る ▶

解決手順

手動注文の場合:注文画面の内容を確認

注文タイプ(成行/指値/逆指値)、ロット数、SL/TP、有効期限の設定を確認します。特にSL/TPが現在価格に近すぎないか、ロット数が範囲内かを確認してください。

銘柄の取引仕様を確認

MT5で対象銘柄を右クリック →「仕様」で最小ロット、最大ロット、ストップレベル、フィリングモードを確認します。

EAの場合:MqlTradeRequestを検証

EAのコードでMqlTradeRequest構造体の全フィールドが正しく設定されているか確認します。特に以下のフィールドに注意してください。

request.action    // TRADE_ACTION_DEAL(成行)等
request.symbol    // 正確なシンボル名
request.volume    // ロット数(範囲内・ステップ合致)
request.type      // ORDER_TYPE_BUY / SELL
request.price     // 成行ならAsk/Bid
request.sl        // ストップロス
request.tp        // テイクプロフィット
request.type_filling // ORDER_FILLING_FOK等

フィリングモードを正しく設定

MT5では銘柄ごとにサポートするフィリングモードが異なります。SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE)でサポートされているモードを取得し、リクエストのtype_fillingに正しい値を設定します。

ℹ MT4からMT5への移行時の注意

MT4のEAをMT5に移植する場合、注文関連の関数(OrderSend等)の仕様が大きく異なります。MT4のOrderSend()は単一関数ですが、MT5ではMqlTradeRequest構造体にパラメータを設定してOrderSend()に渡す形式です。フィリングモードの指定も必須です。移植作業は専門的な知識が必要なため、無理せず既製のMT5対応版EAを入手する選択肢もあります。

フィリングモードの選び方

MT5で最も頻繁にInvalid requestを引き起こすのがフィリングモードの不一致です。銘柄ごとにサポートされるモードが異なるため、動的に取得して設定するのが安全です。

フィリングモードを間違えて指定するとInvalid requestが出ます。SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE)でビット値を取得し、サポートされているモードを確認してから設定してください。

安定した取引環境で再スタート

エラーの根本原因がサーバーや業者環境にあるケースも。XMTradingなら口座開設ボーナスで、まずは取引環境を無料で試せます。

XMTrading 公式サイトを見る ▶

ストップレベル違反を避ける実装

SL(ストップロス)やTP(テイクプロフィット)が現在価格に近すぎるとInvalid requestになります。銘柄ごとのストップレベルを取得して、動的にSL/TP距離を調整する実装が必要です。

シンボル名の動的取得

EAコードにシンボル名を"EURUSD"のようにハードコードすると、EURUSD.EURUSDmのような派生シンボルを使う業者でInvalid requestが出ます。必ずSymbol()関数や_Symbol定数で動的に取得してください。複数銘柄を扱うEAではSymbolSelect()で事前にシンボルを選択しておくことも必要です。

類似エラーとの違い

よくある質問(FAQ)

Q. MT4のEAをそのままMT5で動かせますか?

A. 動きません。MT4とMT5では取引関数の仕様が大きく異なるため、移植作業が必要です。特にOrderSend関数の引数形式、フィリングモードの指定、構造体の使い方などを書き換える必要があります。

Q. フィリングモードとは何ですか?

A. 注文約定の方式を指定するパラメータで、FOK(Fill or Kill:全量約定or全量キャンセル)、IOC(Immediate or Cancel:部分約定可)、Return(成行で完全約定)の3種類があります。MT5では必須項目です。

Q. ストップレベル違反を避けるには?

A. SymbolInfoInteger(symbol, SYMBOL_TRADE_STOPS_LEVEL)で最小ストップ距離を取得し、SL/TPがそれより近くならないように設定してください。XMのKIWAMI極口座は0ですが、他業者は10〜20ポイントが一般的です。

Q. シンボル名の末尾に「.」や「m」が付く業者はなぜ?

A. ECN/STP口座用やマイクロ口座用に別シンボルを用意している業者があるためです。EAコードにシンボル名をハードコードせず、Symbol()関数で動的に取得する実装が推奨されます。

Q. Invalid requestは口座凍結の前兆ですか?

A. いいえ、単なるリクエスト形式のエラーです。口座凍結やロスカットとは無関係で、注文内容を修正すれば解消します。ただし不正取引パターンで連発すると業者側の監視対象になる場合もあるため、EAは正常な動作を心がけてください。

エラーが解消しない場合は環境を見直す

MT4/MT5のエラーが頻発する場合、サーバー環境や口座設定に問題がある可能性があります。XMは日本語サポート完備で、口座開設ボーナス15,000円を使えば自己資金を投入する前に取引環境を試すことができます。

XM公式サイトで口座開設(無料)
※ 当サイト経由の口座開設でボーナスが付与されます(PR)
※ XMは日本の金融庁に未登録の海外FX業者です。取引にはリスクが伴います。
リスクに関する注意事項
FX(外国為替証拠金取引)は元本保証のない金融商品です。レバレッジにより、預けた証拠金以上の損失が発生する可能性があります。余剰資金の範囲で取引を行ってください。当サイトで紹介する海外FX業者は日本の金融庁に未登録であり、日本の投資者保護基金の対象外です。当サイトの情報は一般的な情報提供を目的としたものであり、特定の業者の利用を推奨するものでも、個別の売買助言でもありません。