MQL5

【MQL5】MqlTradeResult構造体のエラー原因一覧 (Retcode)

このページは、MT5 の OrderSend() 関数のエラーをまとめたものです。

  • MT4のOrderSend() とは仕様が大きくことなる
  • Mql5では公式で提供されている ErrorDescription() 関数がない

という点からエラーの内容が比較的わかりにくく、頻繁にチェックすることになると思うのでここにまとめてみました。

MqlTradeResult 構造体のリターンコードとして返ってくる

基本的にMQL5 の OrderSend() のエラーは、 MqlTradeResult 構造体 の ’retcode’ メンバーとして確認ができるので、

要は、MqlTradeResult 構造体 の retcode をまとめた内容

になります。

(※ OrderSend関数の使い方とMqlTradeResult 構造体の確認方法についてはこちらの記事で解説しています。⇒ 【MT5入門】 MQL5特有の複雑な OrderSend() の使い方を完璧に解説!

MqlTradeResult の retcode 一覧

(スマホの場合は左右にスクロール可能です。)

エラーコード 定数 説明
10004 TRADE_RETCODE_REQUOTE トレードサーバーによる「リクオート」です。
10006 TRADE_RETCODE_REJECT トレードサーバーによるリクエスト拒否。不利な価格の場合、約定拒否をするFXブローカーもあります。
10007 TRADE_RETCODE_CANCEL リクエストをトレーダー側がキャンセルした場合です。
10008 TRADE_RETCODE_PLACED これはオーダーが「サーバー上に置かれた」状態です。
10009 TRADE_RETCODE_DONE リクエストがすでに成功し、完了しています。
10010 TRADE_RETCODE_DONE_PARTIAL リクエストが一部のみ完了した場合にこのエラーコードが返ってきます。
10011 TRADE_RETCODE_ERROR リクエストの処理中にエラーが発生した場合です。
10012 TRADE_RETCODE_TIMEOUT リクエストが完了するまでに時間切れとなってしまった場合です。
10013 TRADE_RETCODE_INVALID OrderSendに渡した、MqlTradeRequest構造体自体に不備があった場合です。
10014 TRADE_RETCODE_INVALID_VOLUME Volume (= ロット数)が適切でない場合はこちらのエラーコードが返ります。
10015 TRADE_RETCODE_INVALID_PRICE 指定した価格 が適切でない場合はこちらのエラーコードが返ります。
10016 TRADE_RETCODE_INVALID_STOPS 逆指値、指値の価格が現在から近く、ストップレベル内だと弾かれます。ストップレベルを確認しましょう。
10017 TRADE_RETCODE_TRADE_DISABLED トレードが許可されていない銘柄です。
10018 TRADE_RETCODE_MARKET_CLOSED 銘柄の市場が閉まっている場合です。
10019 TRADE_RETCODE_NO_MONEY 口座に十分な資金がない場合です。
10020 TRADE_RETCODE_PRICE_CHANGED 市場価格が変化してしまったために、リクエストが却下された場合です。
10021 TRADE_RETCODE_PRICE_OFF 市場から価格が到達しておらず、リクエストを実行できません。
10022 TRADE_RETCODE_INVALID_EXPIRATION 有効期限の設定において不備があった場合です。
10023 TRADE_RETCODE_ORDER_CHANGED わかりにくいです。「オーダー」にはその「処理状況」があり、これを “ORDER STATE” と呼び、これは ENUM_ORDER_STATE 型の変数で表されます。その「処理状況」が変化したために、取引リクエストが実行できなかった場合です。(逆指値の待機注文を変更しようとしたが変更する前に約定してしまった、など)
10024 TRADE_RETCODE_TOO_MANY_REQUESTS 取引リクエストが多すぎて処理できない場合です。
10025 TRADE_RETCODE_NO_CHANGES 価格を変更しようとするような取引リクエストを送ったが、元の価格と同じ場合。
10026 TRADE_RETCODE_SERVER_DISABLES_AT FXサーバーで自動売買が拒否されている場合です。
10027 TRADE_RETCODE_CLIENT_DISABLES_AT MT5ターミナル側で自動売買を許可してない場合です。設定を変えましょう。
10028 TRADE_RETCODE_LOCKED リクエストが、処理中のためにロックされており変更ができない場合です。
10029 TRADE_RETCODE_FROZEN オーダーやポジションが凍結されています。
10030 TRADE_RETCODE_INVALID_FILL フィリングタイプ(IOC, FOK, RETURN)が適切に設定されていない場合です。
10031 TRADE_RETCODE_CONNECTION 接続が切れている場合です。
10032 TRADE_RETCODE_ONLY_REAL ライブ口座のみでトレード操作が許可されている場合です。
10033 TRADE_RETCODE_LIMIT_ORDERS 待機注文が上限に達した場合です。
10034 TRADE_RETCODE_LIMIT_VOLUME 銘柄ごとに決められている、合計ロット数が上限に達した場合です。
10035 TRADE_RETCODE_INVALID_ORDER オーダータイプ()が不適切、または禁止されている場合です。
10036 TRADE_RETCODE_POSITION_CLOSED 決済しようとしたポジションがすでに決済済みの時。高頻度システムの場合は結構出現します。
10038 TRADE_RETCODE_INVALID_CLOSE_VOLUME 現在持っているポジションのロット数(Volume, 数量)よりも多くの数量を決済しよと試みた場合、このエラーが出ます。
10039 TRADE_RETCODE_CLOSE_ORDER_EXIST 決済しようとしたポジションを決済するための「オーダー」がすでにトレードサーバー上に置かれている時。高頻度システムの場合は結構出現します。(ポジションを複数に分けて決済しようとしていて、複数の決済のオーダーのロット数の合計が、もとのロット数の合計よりも多い場合にも出現します)
10040 TRADE_RETCODE_LIMIT_POSITIONS 1つの口座内に存在しうるポジションの数が、上限に達した場合です。
10041 TRADE_RETCODE_REJECT_CANCEL 待機注文が約定できず、結果的にリクエストが却下された場合です。
10042 TRADE_RETCODE_LONG_ONLY “Only long positions are allowed(買いポジションのみ)” のルールが設定されているためにリクエストが却下されます。
10043 TRADE_RETCODE_SHORT_ONLY “Only short positions are allowed(売りポジションのみ)” のルールが設定されているためにリクエストが却下されます。
10044 TRADE_RETCODE_CLOSE_ONLY “Only position closing is allowed(ポジション決済のみ)”のルールが設定されているためにエントリーできない場合です。
10045 TRADE_RETCODE_FIFO_CLOSE “Position closing is allowed only by FIFO rule(FIFOによるポジション決済のみ)となっている口座であるために、リクエストが却下されます。
10046 TRADE_RETCODE_HEDGE_PROHIBITED ヘッジタイプの口座にもかかわらず、両建てを禁止されている場合に、両建てを行おうとするとこのエラーが出ます。

まとめ

今回は、MQL5 で OrderSend() 関数を実行した場合に出てくるエラー一覧と、その原因、および解決方法に関して述べました。

もしわかりにくい部分や疑問点があったら、↓ のコメント欄に残してくれるとありがたいです(もちろん匿名でも平気です)。全てしっかりと回答します。

   

コメントを残す

*

CAPTCHA