EAのログ設計|事故を後から再現できるようにする
目次 (6)
目次
結論:ログがないEAは、事故が起きても検証できない
先に結論を書きます。EAのログには最低限「判断に使った値」「エントリーしなかった理由」「約定の結果」の3つを、1行ずつ出しておくべきです。この3つがあれば、想定外の取引や「何も起きなかった」ことを後から再現できます。逆にこれがないと、損失が出ても、取引が0件のままでも、原因はEAのロジックなのか、相場なのか、業者側なのかを切り分けられません。
私たちもEAを開発していて、ログに助けられた場面と、ログが足りずに原因が分からないまま終わった場面の両方があります。この記事では、運用する側から見て「良いログ」とは何かを整理します。
おすすめブローカー比較 →
🎁 無料EAをダウンロード📧 無料メール講座(全8通)+登録者限定 MT5 インジケーター13本パック
※ プライバシーは厳守。配信解除はいつでも可能です。
なぜ3種類のログが要るのか
EAの1回の判断は、おおまかに「値を計算する → 条件を判定する → 発注する → 約定する」という流れです。どの段階で想定と違ったのかを後から特定するには、各段階の記録が必要になります。
| ログの種類 | 出す内容の例 | 答えられる問い |
|---|---|---|
| 判断値 | 確定足の時刻、指標の値、しきい値、スプレッド | 「なぜそこで入ったのか」 |
| スキップ理由 | どの条件で見送ったか(時間外・スプレッド超過・既存ポジあり等) | 「なぜ入らなかったのか」 |
| 約定 | 要求価格、約定価格、スリッページ、リターンコード、チケット番号 | 「狙った通りに執行されたか」 |
判断値:数字を残さないと「たまたま」と区別できない
「買いシグナル発生」とだけ出すログは、あまり役に立ちません。そのときの指標の値としきい値がどれだけ離れていたかが分からないと、ぎりぎり条件を満たしたのか、はっきり条件を満たしたのかを判断できないからです。また、どの足(確定足の時刻)で判断したのかも必ず残します。
スキップ理由:一番省かれやすく、一番大事なログ
多くのEAは「入った」ときしかログを出しません。しかし運用中に一番多い問い合わせは「全然エントリーしない」というものです。見送った理由がログにあれば、それが仕様どおりの見送りなのか、設定ミスやサーバー時刻のずれによるものなのかを確認できます。
私たちのMEGAMAX DONCHIANは、Exnessのデモ口座でのフォワードテストで、2026年11月11日時点の取引が0件です。見送りの理由はまだ私たちも確認できておらず、ここで推測して書くことはしません。ただ、こういうときに見送り理由のログがあるかどうかで、確認にかかる手間は大きく変わります。取引0件は成績が悪いという意味ではありませんが、ログを読むまでは「正常な見送り」とも言い切れません。
約定:EAの外側で起きたことを記録する
発注が拒否されたのか、約定したもののスリッページが大きかったのかは、EAのロジックとは別の問題です。リターンコードと約定価格を残しておけば、EAの問題と業者・回線の問題を分けて考えられます。
1行に何を出すか:書き方の例
私たちは、1回の判断を1行にまとめ、あとから検索しやすい固定の書式にしています。
[EVAL] bar=2026.11.10 14:00 sig=BUY val=1.234 th=1.200 spread=18 -> ENTRY
[SKIP] bar=2026.11.10 15:00 reason=SPREAD spread=45 max=30
[FILL] ticket=123456 req=152.340 fill=152.346 slip=6 ret=10009
書くときのポイントは次のとおりです。
- 先頭に種類のタグ(EVAL / SKIP / FILL)を付け、grepや検索で拾えるようにする
- 足の時刻は「判断に使った確定足」の時刻を書く(サーバー時刻であることを前提にする)
- 理由は文章ではなく決まったコードで書く(SPREAD、TIME、POSITION など)
- ティックごとには出さず、判断した瞬間だけ出す
ティックごとに出力すると、ログが短期間で巨大になり、ディスクを圧迫したり肝心な行が埋もれたりします。「足が確定したときに1回」が基本です。
運用する側の確認手順
EAを使う方は、次の順で確認すると原因に早くたどり着けます。
- MT5の「エキスパート」タブで、EAが自分のログを出しているか確認する
- 想定外の取引があった時刻のEVAL行を探し、判断値としきい値を見る
- エントリーがない期間はSKIP行を見て、どの理由が多いか数える
- FILL行で、要求価格と約定価格の差やリターンコードを確認する
- 「操作履歴」タブ(業者側の記録)と時刻を突き合わせる
設定の見直しはEA設定方法、常時稼働の環境づくりはVPS情報も参考にしてください。
限界と注意
ログは万能ではありません。正直に書いておきます。
- ログに書いていないことは分からない。 開発者が想定していなかった事象は、そもそも記録されません。
- ログが正しいとは限らない。 ログを出すコード自体にバグがあれば、間違った値が記録されます。
- 相場の判断の良し悪しは分からない。 ログで分かるのは「仕様どおりに動いたか」であって、その仕様で勝てるかどうかではありません。
- 出しすぎも事故のもとになる。 大量のログは容量を圧迫し、読む人も見落としやすくなります。
- バックテストとデモ口座・実口座ではログの意味が違う。 テスターではスリッページや拒否が実際と同じようには再現されないため、約定ログを比べるときは環境の違いを前提にしてください。
まとめ
- ログには「判断値」「スキップ理由」「約定」の3種類を1行ずつ出す
- 一番省かれやすいのは見送り理由のログで、「動かない」原因を調べるときに一番役立つ
- タグと理由コードを決めておくと、後から検索して数えられる
- 出力は確定足ごとに1回にし、ティックごとには出さない
- ログで分かるのは「仕様どおりに動いたか」までで、勝てるかどうかは別の検証が要る
ほかのMT5運用ノウハウはEA・MT5ノウハウにまとめています。
関連記事
📧 無料メール講座(全8通)+登録者限定 MT5 インジケーター13本パック
※ プライバシーは厳守。配信解除はいつでも可能です。