Status: pre-registered 2026-09-07 (commit 937652c), built (1f8c09c) and run the same day; verdict: FAIL, 0 of 3 groups (see research/2026-09-07-entry5m-v7-opptri-screen.md). The Pine input (section 4) is built regardless. Parent: v3 2026-09-06-entry5m-v3-fixed3r-prereg.md (FAIL 1/3: EURUSD 415 trades net +53.9 R PF 1.21 passed alone; GBPUSD +19.6 R; XAUUSD −28.4 R; EURJPY −21.9 R).
"Include indicator-based take profit: take profit when a triangle appears on the H1 chart on the opposite side if the trade was taken on H1."
| Question | Decision |
|---|---|
| Trigger | An AVWAP-Z triangle on the bias timeframe on the side opposite to the trade, at the Elevated tier or above, as the ZTD core marks it (triBull for a short trade, triBear for a long trade), read on the H1 close |
| Combination | Whichever comes first: the fixed R:R target, the stop, the bias end, or the opposite-side triangle. With a partial on, the triangle closes the remaining size |
| Timing | The H1 close is known on the first 5m bar that opens after it; the trade is closed at that bar's close (the same mechanics as a bias end), reason opp_tri. The order of events on that bar is the harness order: intrabar stop/partial/target first, then the H1 events |
| Scope | Exits only. The bias continues and pending orders are untouched (a pending order may still fill later in the same bias) |
| Base | v3 exactly: divergence bias, stop_mode = "h1_extreme", target_mode = "fixed_r", target_r = 3.0, no scale-out; EURUSD, GBPUSD, XAUUSD, EURJPY |
ZtdRow gains triB/triU (the core's triBear/triBull atoms: triangle tier at or above t_min_tier, intrabar reading as configured; not Pine plots, ignored by the golden comparison).Entry5mConfig.exit_on_opp_tri: bool = False (v1-v6 unchanged when False).BiasTracker.on_h1_close: when the flag is on and a bias is active, an ("opp_tri", bias) event is emitted first on any H1 close whose row has the opposite-side triangle (triU for a short bias, triB for a long bias), before the bias end/start events of that bar; both bias sources.opp_tri with an open position, broker.close_at(i, t, close, "opp_tri") (size-weighted R as for any close); counter exit_opp_tri. Nothing else changes.v3's cell plus exit_on_opp_tri = True: pivot_n = 3, min_pb_bars = 3, timeout_h1 = 96, min_rr = 1.0, pending_max_bars = 48, max_hold_bars = 0, stop_mode = "h1_extreme", target_mode = "fixed_r", target_r = 3.0, bias_source = "divergence", scale_out_r = 0, ZTD defaults, on the four symbols.
Criteria: 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 this variant is dead as specified; no parameter search follows. Sensitivity grid printed, NOT judged.
Expected side effects, stated now: shorter average holds, fewer 3R exits and fewer bias-end exits, a share of trades closed early at a profit or a small loss; the direction of net R is not predictable in advance.
Regardless of the verdict, the indicator gets the input Exit on opposite-side HTF triangle (default off) with the same mechanics, plus htfTriB/htfTriU on the HTF surface and exit code 5 (opp_tri) in the data window, drawings and alerts; verified by the existing gates (H1 gate with the two new columns compared against the pyakao port's triB/triU on the exported H1 bars, since ZTD v17 does not plot them) and a parity export with the input on.