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

MT4 エラー129「Invalid price」の原因と解決手順

「買いだ」と確信してワンクリック。
——戻ってきた画面に、赤い文字で「Invalid price」

数秒のあいだに狙ったレートは遠ざかり、チャンスは指の隙間からスルッと逃げていく。エラー129は、MT4の注文画面が静かに牙を剥く"あるある"です。でも安心してください。原因のパターンはせいぜい6つ、対処も5ステップで片付きます。この先を読み終える頃には、同じ場面でもう固まらない自分に出会えます。

✅ 結論(解決策)
エラー129発生メカニズム 注文時の指定価格 例:150.000 サーバー側の現在価格 例:150.045(乖離) エラー129 Invalid price ※ 許容スリッページを超える乖離があると注文が拒否される ※ 指値注文では「ロジック上成立しない価格」でも発生

エラー129の発生状況

MT4でエラー129「Invalid price」が表示されるのは、発注ボタンを押した瞬間、または指値注文を設置しようとした時です。MT4の注文実行ダイアログに「エラー129」「Invalid price」「価格が無効です」のいずれかのメッセージが表示され、注文が成立しません。成行注文で発生することもあれば、指値注文の設置時に発生することもあります。

特に発生しやすいのは、米雇用統計やFOMC政策金利発表直後など、相場が急激に動いている時間帯です。スプレッドが平常時の10倍以上に拡大する瞬間があり、数秒前の価格情報に基づいて発注すると、サーバー側ではすでに別の価格帯に移動しているため、価格不一致と判定されてエラー129が返ります。

原因

エラー129の根本原因は「注文時にMT4クライアントから送信された価格が、FX業者サーバー側の現在価格と一致しない(または受け渡し可能な範囲を超えて乖離している)」ことです。具体的には以下の6つのシナリオに分けられます。

これら6つは独立した原因ではなく、しばしば複合的に発生します。例えば指標発表直後にEAが古い価格で成行注文を送信し、サーバー到達までに数十ポイント動いた結果エラー129となる、というケースが現場では最も多く観測されます。

⚠ エラー129とエラー130の区別

エラー129「Invalid price」は注文価格そのものが不正、エラー130「Invalid stops」はSL/TPの距離が不正、という違いがあります。ただしメッセージが類似しているため混同されがちです。MT4のエラーメッセージに表示される数値コードで正確に判別してください。

解決手順

成行注文で再発注する

最もシンプルな対処法は、価格を指定せず成行で発注することです。MT4の注文ダイアログで「注文種別:成行注文」を選択し、「許容スリッページ」を3〜10ポイントに設定します。この設定があれば、サーバー側の現在価格と指定価格のズレが許容範囲内なら約定が成立します。

指値注文の場合は論理整合性を確認

Buy Limit(指値買い)は現在Askより低い位置、Sell Limit(指値売り)は現在Bidより高い位置、Buy Stop(逆指値買い)は現在Askより高い位置、Sell Stop(逆指値売り)は現在Bidより低い位置、というロジックを守る必要があります。逆の関係で設定していないか再確認してください。

取引時間を確認する

発注しようとしている通貨ペアが取引可能時間内かをFX業者の取引仕様ページで確認します。XMの場合、メジャー通貨ペアは月曜日午前7時~土曜日午前6時(冬時間)の範囲で取引可能です。また貴金属や株価指数CFDは通貨ペアとは異なる取引時間が設定されています。

EAの価格取得ロジックを修正

EAからの発注でエラー129が頻発する場合、プログラム側で以下の対策を実装します:
① 発注直前にRefreshRates関数を呼んで最新価格を取得
② OrderSend関数のslippageパラメータに10以上を設定
③ NormalizeDouble(price, Digits)で価格を正規化
④ エラー発生時は2〜3秒待って再試行するリトライロジックを実装

VPS環境への移行を検討

自宅ネットワーク経由でEAを稼働している場合、FX業者サーバーと同じデータセンター内のVPSに移行することで遅延を大幅に削減できます。Ping値が10ミリ秒以下になると、エラー129の発生頻度は大きく減少します。

スリッページ許容値の推奨設定

成行注文時の「許容スリッページ」は通貨ペアと時間帯で最適値が変わります。以下は実運用で参考にされる目安です。

通貨ペア 平常時の推奨値 指標発表時
USD/JPY, EUR/USD3〜5 ポイント10〜20 ポイント
GBP/USD, AUD/USD5〜8 ポイント15〜30 ポイント
GBP/JPY, EUR/JPY5〜10 ポイント20〜40 ポイント
ゴールド(XAU/USD)20〜40 ポイント50〜100 ポイント

スリッページを大きく取るほど約定はしやすくなりますが、不利な価格で約定するリスクも増えます。平常時と指標時で設定を切り替えるのが現実的な運用です。

ℹ EAの実装例

EAから発注する際のエラー129回避コードの骨格:
RefreshRates();
double askPrice = NormalizeDouble(Ask, Digits);
int ticket = OrderSend(Symbol(), OP_BUY, 0.1, askPrice, 10, 0, 0, "comment", 0, 0, clrGreen);
if(ticket < 0) {
  if(GetLastError() == 129) {
    Sleep(2000); RefreshRates();
    // リトライ処理
  }
}

類似エラーとの違い

エラー129と混同されやすいMT4の価格関連エラーを整理します。

エラー129が頻発する場合はまずエラー138との切り分けから行うのがセオリーです。両者は「発注価格とサーバー価格の乖離」という根は共通ですが、業者のリクオート対応の有無で出方が変わります。

予防のためのチェックリスト

エラー129が発生しやすい時間帯

過去のデータを見ると、エラー129の発生は特定の時間帯に集中しています。以下は日本時間ベースで注意すべきタイミングです。

時間帯 特徴 推奨対応
月曜日 午前7時前後週初窓開け、価格飛びが発生成行注文を避け、数分待って相場落ち着いてから発注
21時30分(米重要指標)雇用統計・CPI・小売売上高の発表発表15分前〜発表後30分は新規発注停止
23時00分(米FOMC)政策金利発表・議長会見EA停止推奨、手動でも控える
深夜〜早朝(流動性低下)スプレッド拡大・約定拒否増加スリッページ許容値を通常の2倍に

業者選びによる改善効果

エラー129の発生頻度はFX業者の約定システムによって大きく異なります。NDD(No Dealing Desk)方式の業者はリクオートが原則なく、エラー129は「価格乖離時は自動的に不利な方向へ約定」する形で処理されます。一方DD(Dealing Desk)方式の業者はディーラーが介入するため、エラー129とエラー138が組み合わさって頻発するケースがあります。約定品質を重視するなら、NDD方式・STP/ECN口座を提供している業者を選ぶのが合理的です。また一部の業者ではワンクリック取引やストリーミング注文機能を提供しており、これらを活用することでエラー129の発生を大幅に減らせる場合があります。ワンクリック取引は発注ダイアログを経由せず現在価格で即座に発注されるため、価格乖離が発生する余地が狭まる仕組みです。

出典・参考

  • MetaQuotes公式 — MT4 Error Codes
  • 各FX業者公式サイト — 取引仕様・スリッページポリシー
「約定の強い業者」に引っ越すと景色が変わる

設定を直しても、指標発表のたびにエラー129で手が止まる——その根っこは、あなたの腕ではなく業者の約定サーバー側にあることも多いんです。XMは公表ベースで約定率99.35%以上、リクオートなしのNDD方式。EA向けに無料VPSの提供枠もあり、自宅回線で悩んでいた人ほど体感差が大きい。口座開設ボーナス13,000円が付くので、まずは小さく触って約定の"重さ"の違いを確かめてみてください。

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