ok hand: 10 bars rebuilt from the minutes ok hand: ATR (running mean, then Wilder) - 2.0000 3.1667 3.0000 4.1250 ok hand: final upper band - 106 102.5 101 101 ok hand: final lower band (incl. the previous-close rule at bar 6) - 94 94 83 89.625 ok hand: direction, a flip down at bar 5 and up at bar 7 - 1,1,1,1,1,-1,-1,1,1,1 ok hand: the reference gives the same directions ok hand: st_protocol.js gives the same directions ok hand: long-and-short trades - L 100->92 reversal | S 92->103 reversal | L 103->103 end of data ok hand: long-only trades (flat while red) - L 100->92 turned red | L 103->103 end of data ok hand: fills at the first minute after the signal bar ok hand: R = 1.5 x ATR14 of the signal bar (bar 1: TR 2 -> R 3) ok hand: net = gross - $0.30 per trade, in R ok hand: scenario A (3% a year) and B (swap per night, Wednesday x3) ok hand: a change at the last bar has no minute to fill: the position closes at the last close ok hand: the shifted direction at offset 0 is the real one; at offset 1 it moves one bar ok hand: mutation (no previous-close rule) changes the lower band at bar 6 - mutated 94 real data: 7067434 minutes, 2004-06-11 00:19 .. 2026-10-07 16:57; 129857 one-hour bars ok real: direction series equal to st_protocol.js on the same bars - 0 bars differ ok real: the reference builds the same hourly bars ok real: ST-LS engine = independent reference, trade by trade - 3164 vs 3164 trades ok real: ST-LS control at offset 0 reproduces the real trades ok real: ST-LS no trade before bar 500 ok real: ST-L engine = independent reference, trade by trade - 1582 vs 1582 trades ok real: ST-L control at offset 0 reproduces the real trades ok real: ST-L no trade before bar 500 ok mutation detected: multiplier 2.9 - 3344 trades vs 3164 ok mutation detected: ATR period 11 - 3162 trades vs 3164 ok mutation detected: no previous-close band rule - 120324 trades vs 3164 ok mutation detected: fill at the signal bar's last minute - 3164 trades vs 3164 PASSED