feat: initial Ares scalping bot — momentum FVG strategy

Strategy: detect 3-candle momentum FVG on M5, enter on retrace fill.

Signal logic:
- Candle[i-1] must be a momentum candle: body ≥ BODY_PCT_MIN (default 60%)
  and close in top/bottom CLOSE_PCT_MIN (default 80%) of range
- FVG must exist between candle[i-2] and candle[i] (gap on momentum side)
- FVG zone midpoint = limit entry level
- SL: just outside FVG zone (+ optional SL_BUFFER)
- TP: entry ± SL_distance × MIN_RR

Features:
- EMA trend filter (EMA_PERIOD, same timeframe)
- FVG expiry (FVG_EXPIRY_CANDLES): stale setups auto-invalidate
- Currency conversion for non-USD profit pairs (JPY, CAD, CHF)
- Full friction model: spread, slippage, commission
- Date range filter (DATE_FROM / DATE_TO)
- Same stats output format as Hermes

Dependencies: domain + mt5-client from hermes/crates (path deps)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
romysaputrasihananda
2026-06-09 04:01:40 +07:00
co-authored by Claude Sonnet 4.6
commit e0e421ed05
6 changed files with 2679 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
# MT5 bridge URL (required)
MT5_BASE_URL=http://localhost:8080
# ── Symbol & Timeframe ──────────────────────────────────────────────────────
SYMBOL=EURUSDm
TIMEFRAME=M5
# ── Backtest ─────────────────────────────────────────────────────────────────
BACKTEST_BALANCE=600
BACKTEST_CANDLES=50000
# DATE_FROM=2025-01-01
# DATE_TO=2025-12-31
# ── Risk ─────────────────────────────────────────────────────────────────────
RISK_PCT=0.01 # risk per trade (0.01 = 1%)
# ── Momentum Candle Thresholds ───────────────────────────────────────────────
BODY_PCT_MIN=0.6 # minimum body/range ratio (0.6 = 60% body)
CLOSE_PCT_MIN=0.8 # close must be in top/bottom 20% of range
# ── FVG Setup ────────────────────────────────────────────────────────────────
FVG_EXPIRY_CANDLES=10 # invalidate setup after N candles without fill
SL_BUFFER=0 # extra buffer below/above FVG zone for SL (price units)
MIN_RR=1.5 # minimum reward:risk ratio
# ── Friction ─────────────────────────────────────────────────────────────────
COMMISSION_PER_LOT=7 # round-trip commission in USD
SLIPPAGE_POINTS=5 # extra SL slippage in MT5 points
SPREAD_OVERRIDE=0 # override spread (0 = Zero/Raw account)
# ── EMA Trend Filter ─────────────────────────────────────────────────────────
EMA_PERIOD=20 # 0 = disabled