データフロー¶
e-station は live / replay / backtest の 3 モードでデータパスが異なるが、 Rust ↔ Python の IPC 境界は共通である。
live モード(市場データ + 注文)¶
sequenceDiagram
participant UI as Rust GUI
participant EC as engine-client
participant PY as Python engine
participant V as venue (取引所 API)
UI->>EC: SubscribeDepth / SubscribeKline
EC->>PY: gRPC SendCommand
PY->>V: REST snapshot + WS subscribe
V-->>PY: depth diff / trade / kline
PY-->>EC: DepthSnapshot / DepthDiff / Trade / Kline (event stream)
EC-->>UI: domain event
注文系も同じ経路で PlaceOrder / CancelOrder コマンドを送り、OrderUpdate /
Execution イベントが逆流する。
replay モード¶
python/engine/replay_session.py の ReplaySession がローカル WAL / 録画データを
時系列に再生し、live と同じイベント形でストリームする。Rust 側はモードを意識せず
同一ハンドラで描画できる(replay.md)。
backtest モード¶
python/engine/nautilus/ 配下の nautilus-trader 統合経由で過去データを再生し、
戦略コードの fill / position 結果を Execution / OrderUpdate イベントとして UI に
返す。詳細は backtest.md。
逆流イベント¶
下記イベントは Python → Rust の片方向逆流 であり、Rust は受信のみ:
EngineBusy/EngineStopped— 状態遷移通知ClientConnected/ClientDisconnected— multi-client broadcastReplayTimeUpdated/ReplayDataLoaded— replay 進捗VenueReady/VenueError— venue session 状態LiveBuyingPower/Execution— 余力 / 約定
スキーマ全量は ipc-schema.md と ../reference/ipc-protocol.md を参照。