自動売買システム構築記録

FX自動売買 デモ検証中

MT4のEAが価格監視と発注を担い、売買判断はPython側のHTTPブリッジに置く構成。判断ロジックはProtocolで抽象化してあり、設定1行でルールベースとJevを入れ替えられる。

基本情報

取引所
楽天証券 MT4(デモ口座)
銘柄
USD/JPY 単一ペア
実行層
MQL4 EA
判断層
Python / FastAPI
現在のエンジン
移動平均クロス(Jevは実装済・未適用)
テスト
248 件
コード行数
5,297 行
コミット
22

ディレクトリ構成

backtest/
bridge/
config/
data/
decision/
ea/
logs/
tests/
tools/

構成

EAは価格監視・ブリッジ問合せ・発注・損切りだけを行う。売買判断は一切持たない。 判断とリスク判定はすべてPython側にあり、EAは結果を実行するだけ。

MT4 (EA) ──HTTP──▶ ブリッジ ──▶ リスク層 ──▶ 判断層
    ▲                                              │
    └──── buy / sell / hold / close_all ───────────┘

この分離により、判断ロジックを差し替えてもEAの再コンパイルが要らない。 逆にリスク判定はEA側でも二重に行い、ブリッジが誤った指示を出しても 過大なロットが通らないようにしている。

安全設計

迷ったら建てない、を全経路で徹底している。

状況挙動
ブリッジ無応答新規建てを一切行わない
判断エンジンが例外hold にフォールバック
1日の損失が上限到達全ポジション決済 + 新規建て停止
決済が失敗残ポジションがゼロになるまで再試行
ボラティリティ急拡大新規建てを止める

1トレードの損失額を固定し、そこからロットを逆算する。固定ロットにすると 損切り幅が変わるたびに実際の損失額が変動してしまうため。