Status: pre-registered 2026-09-07 (commit 5c845f2), built (e9a1d2b) and run the same day; verdicts: 9a FAIL 0/3, 9b FAIL 0/3 (see research/2026-09-07-entry5m-v9a-opptri-only-screen.md and ...-v9b-oppdiv-only-screen.md). No Pine change. Parents: v3 2026-09-06-entry5m-v3-fixed3r-prereg.md (the base; FAIL 1/3, EURUSD alone), v7 (opposite-triangle exit alongside the 3R target, FAIL 0/3), v8 (opposite-divergence exit on the arm base: cannot fire).
"If we are taking 1x take profit initially and letting the other half hit the take profit condition, then I would like to test without taking the 1x take profit. Just take profit at the triangle or divergence. This should be 2 tests."
Decided: no partial and no fixed R:R target; the whole position runs until the stop, the bias end, or the opposite-side indicator event. Two pre-registered cells on the v3 divergence base (the arm base cannot see an opposite divergence, v8), four symbols, each judged on its own (two chances at the criteria, stated here).
| 9a — opposite triangle | 9b — opposite divergence | |
|---|---|---|
| Bias | ZTD divergence fire on H1 (v3), stop_mode = "h1_extreme" |
same |
| Take-profit | none (target_mode = "none") |
none |
| Indicator exit | exit_on_opp_tri = True: AVWAP-Z triangle at the Elevated tier or above on the opposite side, read on the H1 close, trade closed at the next 5m bar's close |
exit_on_opp_div = True: a ZTD divergence fire on the opposite side (RDIV or HDIV). On this base the opposite fire also replaces the bias, so the exit is the same bar-close exit the replacement makes; the flag labels it opp_div so the record can count it |
| Other exits | the stop (one tick beyond the H1 divergence extreme, fixed at placement) and the bias end (zero-touch level touched, contradiction, timeout, replaced), at the bar close as in v1-v8 | same |
| Scale-out | off | off |
Entry5mConfig.target_mode gains the value "none": order_for sets the order's target to na and skips the reward-to-risk floor (there is no reward to measure; a na or wrong-side stop still rejects the order); the broker's target check never fires on na; target_beyond_zero_touch stays 0. Everything else is v7/v8 code.
Common: pivot_n = 3, min_pb_bars = 3, timeout_h1 = 96, min_rr = 1.0 (not binding), pending_max_bars = 48, max_hold_bars = 0, stop_mode = "h1_extreme", target_mode = "none", bias_source = "divergence", scale_out_r = 0, ZTD defaults; EURUSD, GBPUSD, XAUUSD, EURJPY.
exit_on_opp_tri = True, exit_on_opp_div = False.exit_on_opp_tri = False, exit_on_opp_div = True.Criteria for each cell: the v1 spec's section 8 verbatim (at least 200 trades; PF > 1.15 and ex-outlier PF > 1.0; expectancy > +0.05 R; best month <= 35% of net R; both calendar halves net-positive; at least two of the three groups usd/metal/jpy, GBPUSD net R not negative). A fail means that cell is dead as specified; no parameter search follows. Sensitivity grids printed, NOT judged.
Expected side effects, stated now: without a take-profit every winner runs to a bar-close exit, so average wins in R rise and win rates fall against v3; 9b's exits coincide with the bias replacements (the reference for 9b is therefore v3 with the 3R target removed); 9a should exit earlier than 9b on most trades.
No Pine change in this step. If a cell passes, the indicator gets a No take-profit target option in its own pre-registered follow-up.