MT4のエラー134を調べてFX自動売買の注文条件を見直す手順

MT4のログにエラー134が出たら、まず同じ条件での連続発注を止め、失敗した時刻の銘柄・売買方向・ロット・余剰証拠金を照合します。FX自動売買では、残高が残っていることだけで注文できるとは判断できません。原因を確認せず入金したり、ロットの設定を何度も変えたりする前に、どの処理で不足と判定されたかを調べましょう。
エラー134はMQL4のERR_NOT_ENOUGH_MONEYです。この記事では、発注時の条件から原因を絞り、再発注を抑えたうえでデモ口座で確認する順番を整理します。具体的な口座条件は業者ごとに異なるため、共通の推奨ロットや、必ず注文を通せる設定値を決めるものではありません。
- 残高があるのに注文できない理由を余剰証拠金から確認できる
- 失敗した注文の時刻・銘柄・方向・実際のロットをそろえられる
- 確認関数の134と発注失敗の134を区別して連続再送を止められる
- デモ検証後の再開・見送り・問い合わせの条件を整理できる
MT4のエラー134をFX自動売買の注文条件から調べる

134を返した処理とエラー番号を確認する
最初に確認するのは、ログに出た「134」がどの処理の結果かです。新規注文を送るOrderSend()が失敗したのか、注文前の余剰証拠金を調べるAccountFreeMarginCheck()で不足を検出したのかを分けます。後者なら、EAが送信前に注文を見送っている場合もあります。
公式のOrderSendの説明では、成功時はチケット番号、失敗時は−1が返り、追加のエラー情報をGetLastErrorで調べる形です。「注文シグナルが出た」「画面に134が出た」という情報だけでは、実際にどこまで処理が進んだか分かりません。
| コード | 公式名 | 最初に確認する対象 |
|---|---|---|
| 130 | ERR_INVALID_STOPS | 損切り・利確などの価格条件 |
| 131 | ERR_INVALID_TRADE_VOLUME | 最小・最大ロット、数量刻み |
| 133 | ERR_TRADE_DISABLED | 取引が許可されているか |
| 134 | ERR_NOT_ENOUGH_MONEY | 対象注文に対する証拠金の不足 |
区別の根拠はMQL4公式の取引エラー一覧です。134を通信不良や取引処理の混雑と決めつけず、記録された番号から調べます。修正後に131や133へ変わったなら、以前の134と同じ原因として扱わず、直近の処理とコードを再確認してください。
130だった場合の価格方向や最小距離の詳しい確認は、MT4のエラー130を直す確認手順で扱っています。ここでは134が記録された注文に絞り、ストップ設定を広げる手順へは進みません。
残高ではなく発注時の余剰証拠金を見る
残高は、未決済ポジションの現在の損益をそのまま表す数字ではありません。有効証拠金は口座の評価状態を示し、証拠金は保有に必要な資金、余剰証拠金は新たな注文を考えるときの余力として確認します。名前が似ていても、残高と余剰証拠金を同じ数字として扱わないことが出発点です。
すでに建玉があれば、その保有に証拠金が使われています。含み損が拡大すれば、残高が変わらなくても口座の余力が変化します。口座に複数EAや手動取引がある場合は、今回のEAだけの損益を見ても、口座全体の不足は判断できません。

例えば説明用の仮定として、残高が10万円でも、有効証拠金が8万円で、すでに6万円が必要証拠金に使われている状態を考えます。この単純化した例の余剰は2万円です。残高の10万円をすべて次の注文に使えると考えると、注文できる量を過大に見積もります。実際の計算は口座の仕様で確認します。
MT4の取引タブで口座と建玉の状況を確認し、EAの診断表示があるなら、現在の余剰証拠金も照合します。MQL4のAccountFreeMarginは現在口座の余剰証拠金を返します。一方、後で取り直した値は「いま」の値であり、過去のエラー発生時の値ではありません。
有効証拠金の計算はAccountEquityの公式説明でもサーバー設定に依存するとされています。クレジット等を含む口座の扱いもあるため、画面上の項目名や業者の証拠金ルールを確かめ、簡略な式だけで全口座を同一視しないようにします。
なお、余剰証拠金が正だから注文後も十分に余裕がある、とは限りません。ここで調べるのは注文条件に対する不足であり、許容損失や将来の値動きへの耐性とは別です。損失上限を含む設計は、FX自動売買の資金管理とロット計算で整理してください。
時刻・銘柄・方向・送信ロットをそろえる
原因を絞る際は、エキスパート欄などの失敗メッセージを、同じ注文の情報と組にします。同じ秒に複数のEAが動くと、隣の行を別注文の結果と取り違えることがあります。EA名、対象銘柄、売買方向、最終的な数量まで分かると、設定画面の数字との比較ができます。
| そろえる項目 | 確認する内容 | 不足していた場合 |
|---|---|---|
| 発生時刻と環境 | 端末ログの時刻、本番・デモ・テスターの別 | 現在時刻や日本時間から推測しない |
| 対象銘柄 | 末尾記号を含む実際のシンボル名 | チャート名だけで決めない |
| 処理と方向 | 確認関数かOrderSendか、買いか売りか | 注文種別と一緒に確認する |
| 最終ロット | 送信直前に確定したvolume | 入力欄のロットだけで代用しない |
| 口座の状態 | その時点の余剰、建玉、他EAの注文 | 現在の画面は参考値として区別する |
複数銘柄対応のEAでは、開いているチャートと発注先の銘柄が同じとは限りません。EUR/USDのチャートで動いていても、別銘柄へ注文する設計があります。通常名と末尾記号付きの名前も別条件になり得るため、実際に送るsymbolと、余剰確認に使ったsymbolを一致させます。

買いか売りかもそろえます。「USD/JPY、0.1ロットで調べた」だけでは、確認関数へ渡した方向まで一致したとは分かりません。成行注文ならOP_BUYとOP_SELLを区別し、買いの確認結果を売りの注文に流用していないかを確認します。
失敗後に含み損が戻ったり、別の建玉が決済されたりすると、現在の余剰が回復していることがあります。その画面を見て「余力があるので134は誤作動」とは断定できません。反対に、現在の不足から、過去にも必ず不足していたと逆算することもできません。
当時の値が残っていない場合は、分からない項目を空欄のまま明確にし、次のデモ検証で採取する項目にします。時刻はログ表記を保ち、業者へ照会するときにサーバー時刻か日本時間かを確認します。ログのない過去の口座状態を、推測の数字で埋める必要はありません。
銘柄仕様と固定・自動ロットを照合する
次は対象銘柄の仕様を開き、契約単位、最小取引数量、最大取引数量、数量ステップ、証拠金条件を確認します。同じ「0.1ロット」でも、異なる商品や口座タイプで同じ数量・同じ必要証拠金になるとは限りません。FX用の前提を金属や指数へそのまま持ち込まないようにします。
MQL4の銘柄プロパティには、MODE_LOTSIZE、MODE_MINLOT、MODE_LOTSTEP、MODE_MAXLOTと、証拠金の計算方式などがあります。数量が刻みに合わない問題は131側の確認ですが、134対処でロットを減らした結果、無効な数量に変わることを防ぐためにも照合が必要です。
説明用の例として、最小0.1ロット、刻み0.1ロットの銘柄で、入力を0.01へ下げればよいとは限りません。設定できる最小数量より小さければ、別の不正な数量になってしまいます。実際の最小数量でも余力が足りない場合は、注文を見送る判断になります。
固定ロットなら、入力欄の数値と送信直前のvolumeを比べます。自動計算なら、固定入力が使われず、残高、有効証拠金、損切り幅などから数量が再計算される場合があります。何を基準に算出するかはEAの仕様次第なので、設定名だけで計算方式を推測しないでください。
例えば説明用に、固定入力を0.1から0.01へ変えたのに、送信直前が0.1のままなら、変更が効いていません。自動ロットの有効・無効、設定の適用先、別チャートのEA、数量の下限補正などを確認します。数字をさらに下げ続けるより、最終値に至る経路を調べる方が原因を絞れます。
また、MODE_MARGINREQUIREDは公式では買い1ロットに必要な余剰証拠金を示す項目です。その値とロットの単純な掛け算だけを、全方向・全商品・両建てを含む口座の最終判定にしないでください。業者の仕様と、対象方向・数量での確認結果を合わせて判断します。
他EA・手動建玉・同時発注を確認する
134が出たEAだけを調べても原因が見つからないときは、同じ口座の取引全体を確認します。他のEAや手動取引の建玉も口座の余力に関係します。今回のEAのポジションがゼロでも、口座全体が空とは限りません。注文履歴だけでなく、当時保有していた建玉を区別して見ます。
特に、複数EAが近いタイミングで新規注文を出す構成では、確認時と送信時の間に別注文が成立することがあります。各EAがそれぞれ確認した時点では余力があっても、その確認だけで後続注文の受け付けまで保証されるわけではありません。失敗時刻の前後に他の注文がないか確認します。

確認では「同時に動いていたEAの数」だけでなく、別端末やVPSから同一口座へ発注していないかも見ます。手元のチャートを一つ止めても、別の稼働先が注文していれば口座条件は動きます。どの稼働先が何を管理しているかを確認してから、検証対象を分けましょう。
両建てがある場合も、買いと売りの数量を単純に相殺して必要証拠金ゼロとは決められません。両建て時の証拠金には銘柄や口座の条件があります。保有を変更して注文を通そうとする前に、業者のルールを確認し、比較する口座状態をそろえます。
切り分けのためだけに既存建玉を決済したり、未約定注文を削除したりする必要はありません。実口座の取引を変えると損益も状態も変わります。調査対象を整理したうえで、他EAを動かさないデモ環境と、複数EAが動く想定の環境を分けて確認する方が、条件の違いを把握しやすくなります。
MT4のエラー134を止めてデモで再確認する手順

新規の連続再発注を止めて条件を固定する
原因調査中は、同じシグナルを毎ティックで再送する状態を止めます。134が消えるまで何度も注文すれば、余力が一時的に戻ったときに注文が通る可能性があります。それは原因が解消された確認にはならず、意図したタイミングや保有数から外れるおそれがあります。
最初にEAの説明書を読み、新規エントリーだけを止める機能があるか確認してください。端末全体の自動売買を止めたりEAを外したりすると、EAによる決済、損切り更新などの管理も止まる可能性があります。保有中のポジションをどう管理するかを決めてから停止します。
失敗メッセージのEAと稼働先を照合し、別チャートや別端末からの注文も確認します。
新規停止機能の有無と、その停止で決済処理がどうなるかを説明書で確認します。
元の設定と最終ロットを比較し、デモ環境で変更点ごとの結果を調べます。

EAを修正できる場合は、不足判定後の再試行条件や回数上限を設計します。ただ待ち時間を挟むだけでは、同じ注文を後で繰り返す仕組みが残ります。再評価する条件、見送るシグナルの範囲、担当者への通知などを決め、無制限の再送になっていないことを確認します。
ソースを編集できないEAなら、提供者へ再試行仕様を確認します。エラー表示を消す設定だけでは、注文処理が止まったか判断できません。また、再起動を繰り返すと設定や稼働状態を追いにくくなるため、まず注文を止める方法と診断表示を確かめるのがよいでしょう。
注文前の余剰確認を発注と混同しない
MQL4のAccountFreeMarginCheckの公式説明では、現在の口座・現在価格で指定した銘柄と方向とロットのポジションを開いた後に残る余剰証拠金を確認できます。引数はsymbol、OP_BUYまたはOP_SELL、volumeです。関数を呼ぶこと自体は新規注文ではありません。
この関数も、余剰証拠金が不足すれば134を生成します。したがって「134が出た」という結果だけでは、確認段階で止めたのか、送信した注文が拒否されたのかを区別できません。EAの診断では処理名を付け、確認結果と実際の注文結果を別々に読めるようにします。
確認するときは、実際に送る予定の銘柄・方向・最終ロットを使います。固定の0.1ロットで確認して、その後の自動計算で0.5ロットを送る構成なら、確認した条件が一致していません。この数字は説明用であり、推奨ロットではありません。発注直前までに数量が変わるかを点検します。
また、この確認は現在条件の見積もりで、送信までの口座変化やサーバーの受け付けまで保証しません。正の値が返っても、その余剰が運用上十分かは別途評価します。関数が通る量の上限まで増やすことを目標にせず、不足なら注文を見送り、理由を確認できる状態にします。
自作EAのエラー取得では、GetLastErrorの公式説明にあるとおり、呼び出すと保持されたエラーがリセットされます。同じ結果を確認と表示のために何度も取得せず、該当処理の直後に一度取得した値を保存して読みます。別の関数が出した134をOrderSendの失敗として表示しないことも重要です。
未約定注文については、この関数が受け取る方向はOP_BUYかOP_SELLであり、予約注文の種類や将来の約定価格を直接指定するものではありません。予約注文があるEAでは、成行注文の確認結果だけで将来の約定時まで十分と決めず、業者とEAの予約注文の扱いを別に確認してください。
デモとテスターの口座条件を分けて試す
修正の確認は、実口座で注文を通す試行を重ねる前に、デモ環境で行います。デモと本番で口座通貨、レバレッジ、口座タイプ、銘柄名、契約単位、数量刻みが同じかを調べ、違いがあれば検証条件に明記します。デモで通ったことは、本番の同一条件を確認したことにはなりません。
最初の比較では、EAと銘柄と方向をそろえ、他のEAを動かさず、入力ロットと最終ロット、確認時の余剰、注文後の結果を見ます。その後、想定する併用条件をデモで確認します。最初からEA、銘柄、数量、初期資金を全部変えると、134が消えた理由を絞れません。

| 環境 | そろえる条件 | その結果だけでは分からないこと |
|---|---|---|
| デモ単体 | 対象EA・銘柄・方向・数量・口座仕様 | 他EA併用時や本番サーバーでの受け付け |
| デモ併用 | 同時稼働EAと口座全体の建玉条件 | 過去の失敗時刻の口座状態の完全再現 |
| ストラテジーテスター | 初期証拠金の金額・通貨・入力値・対象銘柄 | 現在の実口座の余力や本番の注文可否 |
テスター内だけで134が出るなら、現在ログインしている実口座の残高を確認して終わらせず、テストの初期証拠金と通貨を見ます。公式のストラテジーテスター設定でも、初期資金の金額と通貨をテスト条件として指定する構成です。値の単位を取り違えていないか確認しましょう。
EAのInputsも確認します。通常の単一テストで使われるValueと、最適化用のStart・Step・Stopは役割が違います。数量を下げたつもりでも別の列しか変更していなければ、テストへ反映したとは限りません。再実行時は実際に使われた設定値を見てから結果を比べます。
初期証拠金を大きくしたらエラーが消えた、という結果は、元の口座条件で注文できる証拠にはなりません。比較用に条件を変えたなら、どこを変えたかを区別します。現実に想定していない大きな資金へ置き換えて合格にせず、運用予定の条件で不足するなら見送る判断を残します。
確認したいのは、利益が出たかだけではなく、指定数量が使われ、不足時は新規注文を見送り、同じ失敗を連続送信せず、必要な保有管理が維持されるかです。本記事の手順は確認項目の提案であり、実機での注文テスト結果や、デモ・本番の取引成功を示すものではありません。
再開・見送り・問い合わせの条件を決める
134が一度出なくなっただけで再開を決めず、原因候補と変更した条件を対応させます。ロットの変更が送信値に反映されたか、銘柄仕様を満たすか、他EAの注文が重なったときも想定どおり見送れるかを確認します。合否はエラーの有無と実際の数量・処理の両方で判断します。

| 確認結果 | 次の判断 | 追加で確認すること |
|---|---|---|
| 入力値と最終ロットが一致し、デモで不足時の見送りも確認 | 再開候補として評価 | 本番との仕様差、既存建玉の管理、運用上の損失上限 |
| 最小数量でも不足する、または想定を超える数量になる | 新規注文を見送る | 計算方式・下限補正・口座条件 |
| 現在は余力があるが当時の値がない | 原因は未確定とする | 次のデモ検証で必要な値を採取 |
| 同条件の確認結果と注文結果が食い違う | 提供者・業者へ照会 | 時刻、銘柄、方向、数量、直前の他注文 |
EA提供者へは、設定値から最終ロットまでの計算と、134を返した処理、再試行の条件を質問します。業者へは、その口座・対象銘柄・方向・数量の証拠金条件を確認します。原因がどちらか分からない場合も、同じ条件を伝えることで回答の食い違いを減らせます。
照会には発生時刻、サーバー名、銘柄名、注文種別と数量、エラーを含む該当箇所を用意します。口座番号の全桁やログイン情報、認証情報を公開掲示板へ貼らないようにします。業者の非公開サポートで必要な識別情報は、その案内に従って伝えてください。
追加入金やレバレッジの引き上げは、この診断の解決策として勧めません。仮に注文を受け付けられるようになっても、数量計算の不具合や再発注の仕組み、損失の大きさが解消したとは限らないためです。想定条件で注文できないと分かった時点で、新規を止める判断も確認結果に含まれます。
MT4のエラー134を見直すときの要点
MT4のエラー134は、発生した注文の証拠金条件を調べる入口です。残高の大小だけで判断せず、どの処理が134を返したか、失敗時刻の銘柄・方向・最終ロット・余剰証拠金が対応しているかをそろえます。当時の値が分からない場合は、現在の画面から原因を断定しないことが大切です。
調べる順番は、再発注を止める、注文条件と口座全体を照合する、変更点を一つにしてデモで確認する、再開・見送り・照会を判断する、です。EAが動いているか自体を確認したい場合は、MT4のEAが動かない時のチェック項目も確認できます。
注文が通ることと、利益が出ることや将来の損失を抑えられることは別です。エラーを消すために取引量や資金を増やすより、想定どおりの数量で動き、不足時には注文を見送れる状態を確認してから、次の運用判断へ進めましょう。
