fix: trigger fires require a fresh cross — stale breaks after a blind window are chases
SNXX 2026-07-21: 18s after a mid-morning restart the fast path bought a 15-minute-old break +1.6% above the trigger — fires() only checked price >= trigger, so any blind window (boot, halt, feed outage) fired instantly on already-extended moves. A trigger now fires only if the live price was seen BELOW the trigger since arming (a real cross), with a small at-the-break tolerance (TRIGGER_FRESH_CROSS_TOL, default 1.5%) so a fast break between ticks still fires; beyond it the name must pull back below the level and re-cross. Gap-through runners stay covered by the slow marketable path. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
256bdc31dc
commit
3fdf268227
3 files changed
+51
No files matched your search
@@ -450,6 +450,7 @@ def build_runtime(args: argparse.Namespace) -> dict:
|
||||
min_range_pct=float(os.environ.get("TRIGGER_MIN_RANGE_PCT", "0.004")),
|
||||
min_dollar_vol=float(os.environ.get("TRIGGER_MIN_DOLLAR_VOL", "0")),
|
||||
max_price_age_s=float(os.environ.get("TRIGGER_PRICE_MAX_AGE", "12")),
|
||||
fresh_cross_tol=float(os.environ.get("TRIGGER_FRESH_CROSS_TOL", "0.015")),
|
||||
)
|
||||
|
||||
return {
|
||||
|
||||
Reference in new issue
Block a user