EAがすべてのポジションを決済しない原因|よくある不具合と確認方法

EAがすべてのポジションを決済しない原因|よくある不具合と確認方法

記事
マネー・副業

EAを運用していると、次のような現象が発生することがあります。

・利益確定の条件に到達したのに、一部のポジションだけ残った
・不利なポジションが残り、そこから再びナンピンが始まった
・トレーリングストップが設定されない
・設定したナンピン幅より短い間隔で連続エントリーした
・バックテストでは正常なのに、実運用でだけ不具合が発生する

このような現象は、パラメーター設定だけが原因とは限りません。

今回は、EAがすべてのポジションを決済しない場合に考えられる原因と、修正を依頼する前に確認しておきたい内容をご紹介します。
■原因1:決済中にポジションの並び順が変わっている

複数のポジションを順番に決済するEAでは、1件を決済した時点でポジション一覧の並び順や件数が変化します。

この変化を考慮せずに処理すると、次のポジションを読み飛ばし、一部だけが残ることがあります。

特に、ナンピンやグリッド系のEAで多数のポジションを同時決済する場合に発生しやすい問題です。

対策としては、ポジションを後ろから順番に処理する方法や、決済対象の注文番号を事前に保存してから処理する方法などがあります。

■ 原因2:決済注文が拒否されても再試行していない

EAが決済命令を送信しても、必ず成功するとは限りません。

例えば、以下のような理由で決済に失敗する場合があります。

・価格が更新された
・スプレッドが急拡大した
・許容スリッページを超えた
・取引サーバーが一時的に混雑した
・取引時間外だった
・証拠金やブローカー固有の条件に抵触した

このとき、EAがエラーを記録せず、再試行もしない設計になっていると、そのポジションだけが残ります。

「毎回ではなく、たまに発生する」という症状では、注文結果やエラーコードの確認が特に重要です。

■ 原因3:通貨ペアやMagic Numberの判定が正しくない

EAは通常、以下の情報を使って管理対象のポジションを判定します。

・通貨ペア
・Magic Number
・BUYまたはSELL
・注文コメント
・注文種別

この判定条件が実際のポジションと一致していない場合、一部の注文が決済対象から外れることがあります。

手動注文とEA注文を同時に保有している場合や、複数のEAを同じ口座で運用している場合は、特に注意が必要です。

■ 原因4:PipsとPointの換算が口座環境に対応していない

例えば「ナンピン幅を10pipsに設定したのに、約1pips間隔で連続注文された」という場合、PipsとPointの換算処理に問題がある可能性があります。

FX会社や銘柄によって、小数点以下の桁数や1Pointの価格幅が異なります。

また、以下のような口座では通常口座と条件が異なることがあります。

・マイクロ口座
・セント口座
・ゴールドなどのCFD銘柄
・ブローカー独自のシンボル名を使用する口座

そのため、特定の口座だけで問題が発生する場合は、EAの桁数判定や銘柄仕様への対応状況を確認する必要があります。

■ 原因5:トレーリング処理が複数ポジションに対応していない

単一ポジションを前提に作られたトレーリング処理を、ナンピン型EAで使用すると、すべてのポジションに正しくストップロスが設定されないことがあります。

また、チャート上にトレーリング用のラインが複数表示されていても、実際の注文にストップロスが設定されているとは限りません。

確認するときは、チャート上の表示だけでなく、MT4/MT5のターミナル画面で各ポジションのSL値を確認することが重要です。

■ バックテストでは正常でも実運用で不具合が出る理由

バックテストと実運用では、注文が実行される環境が異なります。

バックテストでは、注文が比較的理想的な条件で処理されます。一方、実運用では価格変動、通信遅延、スリッページ、サーバー応答、ブローカー仕様などの影響を受けます。

そのため、バックテストが正常というだけでは、実運用時の注文処理まで安全とは判断できません。

実運用でしか発生しない問題を調査するには、注文結果、エラーコード、発生時刻、対象ポジションなどをログへ記録する必要があります。

▼ 不具合調査の前に準備しておきたいもの

EAの不具合を調査するときは、以下の情報があると原因を特定しやすくなります。

1. MT4またはMT5のどちらか
2. EAのファイル形式(MQ4/MQ5/EX4/EX5)
3. 利用しているFX会社と口座種類
4. 対象の通貨ペアと時間足
5. 現在のパラメーター設定
6. 不具合が発生した日時
7. ExpertsおよびJournalのログ
8. 発生時のスクリーンショットや動画
9. 本来期待していた動作
10. 実際に発生した動作

「正常に動かない」という説明だけでは、設定ミス、環境差、EA内部の不具合を切り分けることができません。

特に、期待する動作と実際の動作を分けて整理することが重要です。

▼ EX4/EX5ファイルしかない場合について

ソースコードであるMQ4/MQ5ファイルがない場合、既存EAの内部処理を直接修正することは原則としてできません。

ただし、症状や目的によっては、以下の方法を検討できる場合があります。

・外部の補助EAでポジションを監視・決済する
・既存EAの動作を確認し、必要な機能を新しく再構築する
・通知やリスク管理機能を別のEAとして追加する

対応可能な方法は、ファイル形式、権利関係、現在の動作状況によって異なります。

● まとめ

EAが一部のポジションを決済しない原因は、単純な設定ミスだけではありません。

・決済ループの処理
・注文失敗時の再試行
・Magic Numberや通貨ペアの判定
・PipsとPointの換算
・複数ポジションのトレーリング処理
・ブローカーや口座種類の違い

など、複数の要因が考えられます。

同じように見える症状でも原因は異なるため、確認せずにコードの一部だけを変更すると、別の不具合を発生させる可能性があります。

Power Labでは、MT4/MT5のEA・インジケーターについて、既存プログラムの不具合調査、修正、機能追加、MT5への移植などに対応しております。

ご相談の際は、以下の3点だけでもお知らせください。

・現在発生している現象
・本来期待している動作
・お持ちのファイル形式

内容を確認したうえで、調査方法、対応可否、概算費用をご案内いたします。

同様の現象でお困りの場合は、ココナラの見積り相談よりお気軽にご連絡ください。

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す