海外FX/運用環境
VPS再起動後にEAが「前の状態」を忘れてしまう問題と、グローバル変数の使い方
公開 2026.06.17 最終確認 2026.06.17 VPS
MT5(またはVPS)が再起動されると、EAのプログラムは完全に初期化(リセット)され、プログラム内部の変数(メモリ上に記憶していた「今何回ナンピンしているか」「最初の建値はいくらか」などのデータ)はすべて消去(忘却)されてしまいます。 この「記憶喪失」による致命的な決済エラーや誤作動を防ぐためには、EAが再起動後も以前の状態に復帰できるよう、データをハード
口座タイプ、スプレッド、手数料、約定、VPS、キャッシュバックは単独では判断しません。EAの売買回数と保有時間に合わせて見ます。
VPS
VPS再起動後にEAが「前の状態」を忘れてしまう問題と、グローバル変数の使い方
結論
MT5(またはVPS)が再起動されると、EAのプログラムは完全に初期化(リセット)され、プログラム内部の変数(メモリ上に記憶していた「今何回ナンピンしているか」「最初の建値はいくらか」などのデータ)はすべて消去(忘却)されてしまいます。 この「記憶喪失」による致命的な決済エラーや誤作動を防ぐためには、EAが再起動後も以前の状態に復帰できるよう、データをハードディスク側に保存する**「グローバル変数(Global Variables)」または「ファイル出力(File I/O)」の仕組み**をMQL5で実装しておく必要があります。
なぜEA運用で重要か
単純な「移動平均線がクロスしたら決済」というEAであれば、再起動されても現在のチャートを見れば判断できるため問題ありません。 しかし、「これまでの損失額を計算して次のロットを決める(マーチンゲール)」「ピラミッディングの段階を記憶する」「ブレイクイーブンラインを動的に計算する」といった、「過去の経緯(状態・ステート)」に依存する複雑なEAの場合、再起動による記憶喪失は即、システム崩壊(無限ナンピンや決済忘れ)に直結します。週末のメンテナンスや不慮のクラッシュは必ず起こるため、再起動対策は推奨のフェイルセーフです。
仕組み・条件
EAの変数の寿命(スコープ):
- ローカル/グローバル変数(プログラム内):
int count = 0;のようにコード内で定義した変数は、RAM(メモリ)上に存在するため、MT5を閉じると消えます。 - ターミナルのグローバル変数(Global Variables):
GlobalVariableSet("MyEA_State", 1);のようにMQL5の専用関数を使って保存したデータは、MT5のシステムファイル(ディスク)に書き込まれるため、PCの電源を切っても保存期間内(最終アクセスから4週間)は消えません。
バックテストやリアル運用で壊れるポイント
- マジックナンバーとチケット番号の過信: 熟練していない開発者は「口座の取引履歴(History)を検索すれば、再起動後でも状態を復元できる」と考え、複雑な履歴検索ループを実装します。しかし、ブローカーのサーバー負荷や通信遅延により履歴データが瞬時に取得できないタイミングがあり、その隙に初期状態だと勘違いしたEAが誤った新規エントリーを強行する事故が起こります。
- グローバル変数の上書き衝突: 複数のチャートで同じEAを稼働させている場合、保存するグローバル変数の名前(キー名)にマジックナンバーやシンボル名(通貨ペア名)を含めないと、別のチャートのEAの記憶で上書きしてしまい、大混乱を招きます。
どう確認するか
ご自身が運用している複雑なEA(特にナンピン系や資金管理系)が再起動対策されているか確認する最も簡単なテスト方法があります。 デモ口座でEAを稼働させ、ポジションをいくつか持たせた状態(含み損を抱えた状態など)で、わざとMT5を「×」ボタンで強制終了し、すぐに再起動してください。再起動後、EAが正常に続きの処理(正しいロットでのナンピンや、正しいラインでの決済)を行えば、状態復元ロジックが組み込まれたリスクを抑えたなEAです。
自分の検証スタンス
私は「EAはいつでも突然死(クラッシュ)するものだ」という前提で設計を行います。 重要なステータス(現在のトレードフェーズや、動的に計算された目標利益額など)が変化した瞬間に、必ずターミナルのグローバル変数に状態をセーブ(チェックポイントを作成)します。RPGゲームでボス部屋に入る前にセーブするのと同じです。この「セーブ&ロード」機能の実装は面倒ですが、他人の資金を預かるシステムの開発者としては最低限の義務だと考えています。
関連して読む
- IC Markets Raw Spreadの手数料をMT5テスターに入れる方法
- スプレッド固定バックテストがリアルで崩れる理由
- MT5バックテストで手数料を入れ忘れるとPFが盛れる理由
- ExnessのRaw Spread・Zero・ProをEA目線でどう使い分けるか
- 最大連敗数からロットを決める考え方
- 週末のMT5アップデートでEAが突然動かなくなる事故を防ぐ設定
- ピラミッディング(増し玉)ロジックをEAに組み込む際の証拠金計算
口座タイプ、スプレッド、手数料、約定、VPS、キャッシュバックは単独では判断しません。EAの売買回数と保有時間に合わせて見ます。
参照した公式情報
- Exness official site (2026.06.17 確認)
- IC Markets official site (2026.06.17 確認)
- MQL5 documentation (2026.06.17 確認)
免責
本記事は個人の検証メモであり、投資助言ではありません。バックテスト結果は将来の成績を保証しません。海外FXや自動売買には、法規制・レバレッジ・スプレッド拡大・約定遅延・スリッページなどのリスクがあります。条件は変わるため、最新情報は各公式ページで確認してください。