ced4efa96d153e9c689235a35fa3568327c195d9
Backtest-driven config change. The previous wide-scan setup (4 pairs ×
M15+H1, alert grades A+/A) was empirically losing money in every
backtested permutation. The 2-year backtest identified one robust niche
(USDCAD H4 Grade B: train +20.8 R / test +14.0 R / PF 1.52 / max DD
-9.6 R, positive in every 6-month sub-period). This commit restricts
the live bot to that niche and runs it in paper-trade mode for
validation before any real capital is risked.
Config:
SCAN_PAIRS ["USDCAD=X"] (was 4 pairs)
SCAN_TIMEFRAMES ["H4"] (was M15+H1)
ALERT_GRADES {"B"} (was A+/A — those are anti-edge)
AUTO_SCAN_INTERVAL 1800 (was 600 — H4 candles only print
every 4h, polling more wastes credits)
PAPER_TRADE_MODE True (alerts get [PAPER] prefix and
are NOT for real money)
New machinery:
- _open_paper_position() / _check_paper_positions(): on every scan,
walks any open paper trades forward against the latest H4 bars using
the same first-touch SL/TP1 logic as backtest.simulate_trade.
- paper_open.json + paper_trades.csv: persistent state across restarts.
Open positions survive bot restarts; closed trades append to the CSV.
- /status: uptime, scan count, last scan time, alert count, open paper
positions, win rate, total R, profit factor.
- /paper: full ledger — open trades + last 10 closed.
- INFO-level logging in main() so the user sees scan activity in
stdout instead of wondering whether the bot is alive.
- Help text updated to reflect the calibrated strategy and warn that
A+/A grades are anti-edge in backtest.
- gitignore: paper_open.json + paper_trades.csv + backtest_results_*/
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Description
No description provided
Languages
Python
92.4%
HTML
6.6%
PHP
1%