修复趋势突破

This commit is contained in:
dekun
2026-05-23 17:25:54 +08:00
parent ffba2e60e6
commit 24bfb07be1
8 changed files with 83 additions and 10 deletions
+28
View File
@@ -49,6 +49,34 @@ class TestKeyGate(unittest.TestCase):
self.assertTrue(checks["amp_ok"])
self.assertAlmostEqual(checks["breach_pct"], (83.28 - 83.18) / 83.28 * 100, places=4)
def test_trend_breach_wider_max_passes(self):
"""趋势突破:越过 1% 在 1.5% 上限内应通过幅度门控。"""
rows = _history(22, vol=40000.0)
# lower 83.28, close 82.45 → 越过约 0.996%
rows.append(_row(1, 83.0, 83.5, 82.3, 82.45, 76791.0))
rows.append(_row(2, 82.4, 82.5, 82.2, 82.30, 50000.0))
checks = key_hard_checks_from_rows(
rows,
direction="short",
upper=87.8,
lower=83.28,
breakout_amp_max_pct=1.5,
volume_rank=3,
volume_rank_total=721,
)
self.assertTrue(checks["amp_ok"])
self.assertFalse(
key_hard_checks_from_rows(
rows,
direction="short",
upper=87.8,
lower=83.28,
breakout_amp_max_pct=0.5,
volume_rank=3,
volume_rank_total=721,
)["amp_ok"]
)
def test_trend_short_sl_uses_breakout_high(self):
rows = _history(22, vol=40000.0)
br_hi = 83.55
+11 -1
View File
@@ -2,7 +2,13 @@ from __future__ import annotations
import unittest
from app.key_sl_tp import calc_planned_rr, normalize_sl_tp_mode, plan_key_sl_tp, stop_outside_pct_for_mode
from app.key_sl_tp import (
breakout_amp_max_for_mode,
calc_planned_rr,
normalize_sl_tp_mode,
plan_key_sl_tp,
stop_outside_pct_for_mode,
)
class TestKeySlTp(unittest.TestCase):
@@ -62,6 +68,10 @@ class TestKeySlTp(unittest.TestCase):
self.assertEqual(stop_outside_pct_for_mode("trend_manual"), 1.0)
self.assertEqual(normalize_sl_tp_mode("box_1p5"), "standard")
def test_breakout_amp_max_for_mode(self):
self.assertEqual(breakout_amp_max_for_mode("standard", standard_max_pct=0.5, trend_max_pct=1.5), 0.5)
self.assertEqual(breakout_amp_max_for_mode("trend_manual", standard_max_pct=0.5, trend_max_pct=1.5), 1.5)
def test_rr(self):
rr = calc_planned_rr("long", 100.0, 98.0, 104.0)
self.assertAlmostEqual(rr, 2.0, places=4)