MT5の決済用EAが手動ポジションに効かない|マジックナンバー0
MT5で決済用のEAを入れたのに、手動で建てたポジションが閉じない。原因の多くはマジックナンバーです。
手動で出した注文には、マジックナンバー「0」が付きます。決済用EAが0以外の番号だけを見ていれば、手動のポジションは対象外になります。逆に0を対象にすると、別の手動ポジションまで閉じることがあります。
(確認環境:MetaTrader 5 / Windows 11)
マジックナンバーとは
注文に付ける識別用の番号です。どのEAが出した注文なのかを区別するために使います。
| 注文の出し方 | 付く番号 |
|---|---|
| 手動(ワンクリック・新規注文画面など) | 0 |
| EAが発注 | EAに設定された番号(通常は0以外) |
EAは普通、自分の番号が付いたポジションだけを管理します。他のEAや手動のポジションに手を出さないためです。
症状別の原因
1. 手動ポジションに効かない
- EAが0以外の番号だけを対象にしている — 手動のポジションは0なので対象外。設定でマジックナンバーを0にする、または手動を対象にする設定があるか確認する
- EAを入れたチャートと銘柄が違う — 「このチャートの銘柄だけ」を対象にするEAは多い
- ツールバーの「アルゴリズム取引」がオフ — EAは動いていない
2. 関係ないポジションまで閉じた
手動(0)を対象にすると、手動で建てたポジションは全部同じ番号になります。
- 別の通貨ペアで手動で持っているポジション
- スキャルピング用と長期用で分けているつもりのポジション
番号では区別できないので、銘柄で絞る設定を併用するのが基本です。同じ銘柄で手動ポジションを使い分けている場合、マジックナンバーでは分けられません。
3. 決済用のはずが、勝手にエントリーする
入れたEAが決済専用ではなく、エントリーの処理も持っている可能性があります。無料配布のEAや、テンプレートから作ったEAでよく起きます。
マジックナンバーを0にしても1にしても直りません。EAの説明で「決済のみ」と明記されているかを確認してください。
🔴 ネッティング口座では前提が崩れる
MT5の口座にはヘッジングとネッティングの2種類があります。ネッティング口座では、同じ銘柄の取引が1つのポジションにまとまります。
手動とEAが同じ銘柄を取引すると、それぞれを別のポジションとして持てません。「手動の分だけ閉じる」という前提そのものが成り立たないので、決済用EAを使う前に口座の種類を確認してください。
コードで対象を絞る場合
自分でEAを書く場合は、ポジションを1つずつ確認して、マジックナンバーと銘柄で絞ります。
if(PositionGetInteger(POSITION_MAGIC) != 0) continue; // 手動以外は飛ばす
if(PositionGetString(POSITION_SYMBOL) != _Symbol) continue; // 別の銘柄は飛ばす
ループの回し方や、閉じる時の注意点はMQL5でポジションを決済する方法にまとめています。
手動ポジション専用の決済EAを使う場合
当サイトが開発・販売している TimerClose_EA(¥1,500)は、手動エントリーしたポジションを設定した秒数で自動決済するEAです。上の2つの絞り込みが、初期設定で有効になっています。
| 設定 | 初期値 |
|---|---|
| 手動エントリーのみ対象とする(Magic=0) | ON |
| このEAを入れたチャートの通貨ペアのみ対象とする | ON |
そのため、他のEAのポジションや、別の銘柄の手動ポジションには触れません。ただし同じ銘柄の手動ポジションは、すべて対象になります。エントリーの処理は持っていない、決済専用のEAです。
時間で決済する考え方はMT5で決済だけを自動化する方法で扱っています。
まとめ
- 手動の注文はマジックナンバー0
- 効かない時は、EAの対象番号・銘柄・アルゴリズム取引の3点を見る
- 0を対象にすると手動ポジションは全部同じ扱い。銘柄で絞る設定を併用する
- 勝手にエントリーするなら、決済専用ではないEAを入れている
- 🔴 ネッティング口座では手動とEAを分けて持てない
EAそのものの入れ方と、1つのチャートに入れられるEAの数についてはMT5にEAを入れる方法|1つのチャートに1つまでを参照してください。
本記事はMT5の仕様とツールの設定を説明したものであり、特定の売買や利益を保証するものではありません。投資判断はご自身の責任で行ってください。FXは元本を上回る損失が生じる可能性があります。


