From 75d9c8659377cb5743ee29980fc5f57becf507f9 Mon Sep 17 00:00:00 2001 From: dekun Date: Fri, 3 Jul 2026 21:59:24 +0800 Subject: [PATCH] Fix long breakout roll validation: breakthrough must be above current price. Co-authored-by: Cursor --- modules/strategy/strategy_roll_lib.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/modules/strategy/strategy_roll_lib.py b/modules/strategy/strategy_roll_lib.py index 6d0b217..e07252f 100644 --- a/modules/strategy/strategy_roll_lib.py +++ b/modules/strategy/strategy_roll_lib.py @@ -175,7 +175,7 @@ def validate_roll_geometry( """几何校验。 做多斐波(回调):止损 < 触发价 < 当前价 - 做多突破(向上):止损 < 突破价 < 当前价 + 做多突破(向上):止损 < 当前价 < 突破价 做空斐波(反弹):当前价 < 触发价 < 止损 做空突破(向下):突破价 < 当前价 < 止损(提交时);触发后当前价可 ≤ 突破价 """ @@ -208,10 +208,16 @@ def validate_roll_geometry( if trigger <= 0: return "须填写突破价" if off_session_pending: - if direction == "long" and not (sl < trigger): - return "做多突破:休盘提交须满足 止损 < 突破价" - if direction == "short" and not (trigger < sl): - return "做空突破:休盘提交须满足 突破价 < 止损" + if direction == "long": + if not (sl < trigger): + return "做多突破:休盘提交须满足 止损 < 突破价" + if mark > 0 and not (mark < trigger): + return "做多突破:休盘提交须满足 当前价 < 突破价" + if direction == "short": + if not (trigger < sl): + return "做空突破:休盘提交须满足 突破价 < 止损" + if mark > 0 and not (trigger < mark): + return "做空突破:休盘提交须满足 突破价 < 当前价" return None if at_trigger: if direction == "long": @@ -222,8 +228,8 @@ def validate_roll_geometry( return "做空突破:触发时须满足 突破价 < 止损且当前价 < 止损" return None if direction == "long": - if not (sl < trigger < mark): - return "做多突破:须满足 止损 < 突破价 < 当前价" + if not (sl < mark < trigger): + return "做多突破:须满足 止损 < 当前价 < 突破价" else: if not (trigger < mark < sl): return "做空突破:须满足 突破价 < 当前价 < 止损"