diff --git a/services/broker_gateway_service/src/main.rs b/services/broker_gateway_service/src/main.rs index 074ce4760..e57cd31e6 100644 --- a/services/broker_gateway_service/src/main.rs +++ b/services/broker_gateway_service/src/main.rs @@ -73,8 +73,19 @@ async fn main() -> Result<()> { .map(|v| v == "true") .unwrap_or(false) { + // Require explicit confirmation to prevent accidental live trading + let confirmed = std::env::var("CTRADER_LIVE_CONFIRMED") + .unwrap_or_default(); + if confirmed != "I_UNDERSTAND_REAL_MONEY" { + anyhow::bail!( + "CTRADER_LIVE=true requires CTRADER_LIVE_CONFIRMED=I_UNDERSTAND_REAL_MONEY \ + to prevent accidental live trading. Set both env vars to proceed." + ); + } + warn!("*** LIVE TRADING MODE ACTIVATED — real money orders will be submitted to cTrader ***"); ctrader_openapi::CTraderEnvironment::Live } else { + info!("cTrader running in DEMO mode (set CTRADER_LIVE=true to enable live trading)"); ctrader_openapi::CTraderEnvironment::Demo }, heartbeat_interval_secs: std::env::var("CTRADER_HEARTBEAT_SECS")