エラー138「Requote」とは
MT4でエラーコード138(メッセージ:Requote)は、成行注文を出した瞬間と、ブローカーのサーバーが処理する瞬間の価格が異なるために、ブローカーから「新しい価格で注文しますか?」と再提示される現象です。日本語では「リクオート」と呼ばれます。
手動注文の場合は画面に再見積もりダイアログが表示され、承認するか拒否するかを選択できます。EA(自動売買プログラム)の場合はOrderSend関数の戻り値としてERR_REQUOTE(138)が返され、処理を自前でハンドリングする必要があります。リクオートは決してエラーではなく、ブローカーによる正常な処理のひとつですが、頻発するとスキャルピングやデイトレードの機会損失につながります。
エラー138の主な原因
- ボラティリティの高い時間帯:米雇用統計、FOMC、CPIなどの指標発表時やニュース直後は価格が急変し、リクオートが頻発します。特に発表5秒前〜30秒後は要注意です。
- DD(ディーリングデスク)方式のブローカー:DD方式のブローカーは注文を一度自社で受け、社内でマッチングまたはリクイディティプロバイダーへ流すため、価格変動時にリクオートが発生しやすい構造です。
- ネットワーク遅延:MT4とサーバー間の通信に数百ms以上かかると、その間に価格が変わる確率が上がります。VPSを使わず自宅PCから海外サーバーへ接続している場合は遅延が起きやすい。
- 許容スリッページが0:少しの価格差も許容しない設定になっている場合、ほぼ必ずリクオートになります。
- 大口注文:1回で数十ロット以上の大口注文を出すと、ブローカー側で一度確認する仕様になっていることが多い。
- 流動性の低いマイナー通貨ペア:ZARJPY、TRYJPYなどはリクオート発生率が高い。
解決手順
許容スリッページを設定する
MT4の注文画面で「最大許容スリッページ」を3〜10ポイントに設定します。これにより、わずかな価格差であればリクオートなしで約定します。指標発表時は15〜20まで広げても構いませんが、想定外の価格での約定リスクも考慮してください。
指値注文・逆指値注文を活用する
あらかじめ希望する価格を指定して注文を出す方法です。成行注文と異なり、指定した価格以外では約定しないため、リクオートは発生しません。トレンドフォロー系やブレイクアウト戦略なら指値が有効です。
ワンクリック注文を有効化する
MT4のツール→オプション→「取引」タブで「ワンクリック取引」を有効化。注文ダイアログを経由せず瞬時に送信するため、遅延が減ってリクオートも減ります。
ECN/STP口座・NDD方式の業者を検討
ECN(Electronic Communication Network)やSTP(Straight Through Processing)方式の口座では、注文が直接マーケットに流れるため、DD方式に比べてリクオートが大幅に減少します。XMのKIWAMI極口座やZero口座はNDD方式で、スキャルパーに人気です。
VPSを利用して遅延を減らす
自宅PCとMT4サーバーの物理距離が離れていると遅延が発生します。ブローカーのサーバー所在地(ロンドン、ニューヨークなど)に近いVPSを使うことで通信遅延をミリ秒単位に抑えられます。
許容スリッページの推奨設定値
- スキャルピング(数pips狙い):
3〜5ポイント。広げすぎると利益が吹き飛ぶ。 - デイトレード:
5〜10ポイント。最も汎用的。 - スイングトレード:
10〜20ポイント。短期変動は許容。 - 指標発表時:
15〜30ポイント。ただしポジション取得を避けるのが基本。 - EA運用:
10ポイント基本+エラー138検知時のリトライで対応。
リクオート(エラー138)は注文が約定せず新しい価格が再提示される現象。スリッページは注文は約定するが希望価格とは異なる価格で約定する現象です。どちらも価格変動に起因しますが、挙動が異なります。リクオートは承認するまで約定しませんが、スリッページは勝手に不利な価格で約定するリスクがあります。
リクオートで再提示される価格は、自分の不利な方向に大きく動いていることがあります。ダイアログで「承認」を押す前に、必ず新価格と希望価格の差を確認してください。想定外の損失を避けるためには、承認せずキャンセルし、相場が落ち着いてから再注文する方が賢明です。
EAでエラー138をハンドリングする実装例
EA(自動売買)でエラー138が頻発すると注文成功率が大きく低下します。以下のロジックをエントリー部分に組み込むと、リクオート発生時に自動リトライして約定率を高められます。
基本の流れは「OrderSend実行→戻り値が負→GetLastError()で138を検知→RefreshRates()→Sleep()で短時間待機→再実行」というサイクルです。MAX_RETRYは3〜5回に制限し、それを超えた場合はログ出力して処理をスキップします。許容スリッページを動的に計算する場合、相場のATR(Average True Range)に応じて5〜15ポイントで可変させるとより高精度な約定が可能になります。加えて、VPS上での稼働を強くおすすめします。自宅PCよりブローカーのサーバーに近いVPS(日本向けFX業者ならロンドンや東京リージョン)を使うことで、ping値が30ms以下に抑えられ、リクオート自体の発生確率が下がります。
リトライ処理を実装する際の注意点として、同一条件でリトライし続けるのではなく、毎回新しいレートを取得し直して価格を再計算することが重要です。古い価格のまま再送すると、結局同じリクオートを繰り返すだけで処理時間を浪費します。また、エラー138と同時に138/135/136/4109の発生件数をログに記録しておくと、後で「どの時間帯・どの通貨ペアが問題か」を分析でき、取引戦略の改善に役立ちます。スキャルピング系EAでは、ログを毎日メールで受け取る運用もおすすめです。
類似エラーとの違い
- 135(Price changed):レートが変動して有効期限切れ。承認不要で再クリックで約定可能。
- 136(Off quotes):有効なクオートが存在しない。時間を置く必要。
- 138(Requote):新しい価格が再提示される。承認/拒否を選択。
- 141(Too frequent requests):注文連打で制限。1分以上待機。
よくある質問(FAQ)
Q. リクオートが出たら必ず承認すべきですか?
A. 承認不要です。新価格が想定より不利な場合はキャンセルして、数秒待って再注文するのが安全です。承認ボタンは慎重に押してください。
Q. エラー138はどの時間帯に多いですか?
A. 米雇用統計(毎月第1金曜 22:30)、FOMC発表時刻、NY時間の欧米市場重複時間帯(21〜24時)のボラティリティ急上昇時に頻発します。
Q. EAで138が返ってきた場合どう処理しますか?
A. RefreshRates()でレートを再取得した後、OrderSendを最大3〜5回リトライする実装が一般的です。許容スリッページ引数も毎回最新価格に合わせて動的に計算すると成功率が上がります。
Q. DD方式とNDD方式の見分け方は?
A. 業者の口座タイプ説明に「STP」「ECN」「NDD」と記載があればNDD方式です。XMのKIWAMI極口座・Zero口座、TitanFXのZero Blade、ExnessのRaw Spread口座などが代表例です。
Q. 指値注文ならリクオートは絶対に起きませんか?
A. 指値注文はリクオートが発生しません。ただし価格指定が厳しすぎると約定自体がされないため、指値と成行の使い分けが重要です。
MT4/MT5のエラーが頻発する場合、サーバー環境や口座設定に問題がある可能性があります。XMは日本語サポート完備で、口座開設ボーナス15,000円を使えば自己資金を投入する前に取引環境を試すことができます。
XM公式サイトで口座開設(無料)※ XMは日本の金融庁に未登録の海外FX業者です。取引にはリスクが伴います。
FX(外国為替証拠金取引)は元本保証のない金融商品です。レバレッジにより、預けた証拠金以上の損失が発生する可能性があります。余剰資金の範囲で取引を行ってください。当サイトで紹介する海外FX業者は日本の金融庁に未登録であり、日本の投資者保護基金の対象外です。当サイトの情報は一般的な情報提供を目的としたものであり、特定の業者の利用を推奨するものでも、個別の売買助言でもありません。