海外FX/運用環境

VPS再起動後にEAが「前の状態」を忘れてしまう問題と、グローバル変数の使い方

MT5(またはVPS)が再起動されると、EAのプログラムは完全に初期化(リセット)され、プログラム内部の変数(メモリ上に記憶していた「今何回ナンピンしているか」「最初の建値はいくらか」などのデータ)はすべて消去(忘却)されてしまいます。 この「記憶喪失」による致命的な決済エラーや誤作動を防ぐためには、EAが再起動後も以前の状態に復帰できるよう、データをハード

Read this for この条件を、EA運用環境の中で確認する。

口座タイプ、スプレッド、手数料、約定、VPS、キャッシュバックは単独では判断しません。EAの売買回数と保有時間に合わせて見ます。

Category VPS / 約定

VPS

VPS再起動後にEAが「前の状態」を忘れてしまう問題と、グローバル変数の使い方

結論

MT5(またはVPS)が再起動されると、EAのプログラムは完全に初期化(リセット)され、プログラム内部の変数(メモリ上に記憶していた「今何回ナンピンしているか」「最初の建値はいくらか」などのデータ)はすべて消去(忘却)されてしまいます。 この「記憶喪失」による致命的な決済エラーや誤作動を防ぐためには、EAが再起動後も以前の状態に復帰できるよう、データをハードディスク側に保存する**「グローバル変数(Global Variables)」または「ファイル出力(File I/O)」の仕組み**をMQL5で実装しておく必要があります。

なぜEA運用で重要か

単純な「移動平均線がクロスしたら決済」というEAであれば、再起動されても現在のチャートを見れば判断できるため問題ありません。 しかし、「これまでの損失額を計算して次のロットを決める(マーチンゲール)」「ピラミッディングの段階を記憶する」「ブレイクイーブンラインを動的に計算する」といった、「過去の経緯(状態・ステート)」に依存する複雑なEAの場合、再起動による記憶喪失は即、システム崩壊(無限ナンピンや決済忘れ)に直結します。週末のメンテナンスや不慮のクラッシュは必ず起こるため、再起動対策は推奨のフェイルセーフです。

仕組み・条件

EAの変数の寿命(スコープ):

バックテストやリアル運用で壊れるポイント

どう確認するか

ご自身が運用している複雑なEA(特にナンピン系や資金管理系)が再起動対策されているか確認する最も簡単なテスト方法があります。 デモ口座でEAを稼働させ、ポジションをいくつか持たせた状態(含み損を抱えた状態など)で、わざとMT5を「×」ボタンで強制終了し、すぐに再起動してください。再起動後、EAが正常に続きの処理(正しいロットでのナンピンや、正しいラインでの決済)を行えば、状態復元ロジックが組み込まれたリスクを抑えたなEAです。

自分の検証スタンス

私は「EAはいつでも突然死(クラッシュ)するものだ」という前提で設計を行います。 重要なステータス(現在のトレードフェーズや、動的に計算された目標利益額など)が変化した瞬間に、必ずターミナルのグローバル変数に状態をセーブ(チェックポイントを作成)します。RPGゲームでボス部屋に入る前にセーブするのと同じです。この「セーブ&ロード」機能の実装は面倒ですが、他人の資金を預かるシステムの開発者としては最低限の義務だと考えています。

関連して読む

Broker environment この条件を、EA運用環境の中で確認する。

口座タイプ、スプレッド、手数料、約定、VPS、キャッシュバックは単独では判断しません。EAの売買回数と保有時間に合わせて見ます。

参照した公式情報

免責

本記事は個人の検証メモであり、投資助言ではありません。バックテスト結果は将来の成績を保証しません。海外FXや自動売買には、法規制・レバレッジ・スプレッド拡大・約定遅延・スリッページなどのリスクがあります。条件は変わるため、最新情報は各公式ページで確認してください。