# TR-RSI-Supertrend — Figure acceptance (explanatory chart only)

Figure: `figures/first-30-eurusd-h1.png` (1600x900 PNG, matplotlib replot).
Content: EURUSD H1 bid close line plus modeled entry/exit fills for the first 30
chronological closed base EURUSD trades, numbered 1-30 in trade order.
No equity, P&L, returns or account balances are shown.

Selection (predeclared, no cherry-picking): `results/trades.csv`, variant=base,
symbol=EURUSD, exit_reason in (TP, SL) — END excluded (trade_no=695, open at
data end) — sorted by signal_time, head 30. Signal span
2017-01-19T16:00:00+02:00 to 2017-06-29T03:00:00+02:00, last exit
2017-07-04T07:00:00+02:00; 11 TP / 19 SL; 17 long / 13 short.
Base ledger: 695 trades (423 SL / 271 TP / 1 END).

## Rule check against the ledger

| Rule (RULES.md / engine) | Status | Timestamped CSV example |
|---|---|---|
| Closed-bar signal -> next-bar entry | OBSERVED | trade_no=1 short: signal 2017-01-19T16:00:00+02:00 -> entry 2017-01-19T17:00:00+02:00. Bar-index step +1 verified for all 695 base EURUSD trades (wall-clock 1h except two 2d1h weekend gaps). |
| Fixed 1.5R target set at order time | OBSERVED | trade_no=5 TP short: signal 2017-02-07T08:00:00+02:00 -> entry 09:00 -> exit 2017-02-10T15:00:00+02:00; entry_fill 1.06928 -> exit_fill 1.06194, risk_px 0.00496; fill distance / risk = 1.480 (raw TP is 1.5 x risk; modeled fills deduct half-spread per side plus commission). |
| Stop-first on ambiguous (TP+SL same bar) candle | UNOBSERVED in sample and full ledger | 0/30 sample and 0/695 EURUSD (0/692 EURJPY) trades with both_hit=1; RESULTS.md pooled base likewise 0. Rule is engine-enforced but has no example in this ledger. |
| One position per symbol (signals while open ignored) | OBSERVED | 0 overlaps in the first 30 and in the full 695 (every next signal_time >= prior exit_time); e.g. trade 1 exit 2017-01-19T22:00:00+02:00 -> trade 2 signal 2017-01-23T03:00:00+02:00. |

## Limits

- Replot from Dukascopy H1 bid bars and the modeled trade ledger, not a platform
  screenshot. Intrabar paths are unknown; fills are modeled, not observed.
- Fixed assumed costs only: EURUSD 1.0 pip spread, $7/lot round-trip.
- No exact video replication is claimed; no profit promise is made.
- No MT5 runs are referenced or implied by this figure.
- Audit proof remains `test.py` and `results/trades.csv` (+ `summary.csv`).
