Add weekend open skip, expiry force-close, and Chinese trade labels.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -4,7 +4,7 @@ from zoneinfo import ZoneInfo
|
||||
from app.sim.liquidity import bid_mark_ok
|
||||
from app.sim.pricing import option_fill, perp_fill
|
||||
from app.strategy.clock import can_open_new, window_key
|
||||
from app.strategy.exits import check_exits
|
||||
from app.strategy.exits import check_expiry_close, check_exits
|
||||
from app.strategy.signal import decide
|
||||
|
||||
_SH = ZoneInfo("Asia/Shanghai")
|
||||
@@ -83,13 +83,18 @@ def test_option_open_close_pricing() -> None:
|
||||
assert c.fill_px < 10
|
||||
|
||||
|
||||
def test_window_always_open() -> None:
|
||||
n = datetime(2026, 7, 24, 17, 0, tzinfo=_SH)
|
||||
assert can_open_new(n) is True
|
||||
assert window_key(n) == "20260724"
|
||||
n2 = datetime(2026, 7, 24, 10, 0, tzinfo=_SH)
|
||||
assert can_open_new(n2) is True
|
||||
assert window_key(n2) == "20260724"
|
||||
def test_window_weekend_skip() -> None:
|
||||
# 2026-07-24 周五可开;25/26 周六日不可开
|
||||
fri = datetime(2026, 7, 24, 17, 0, tzinfo=_SH)
|
||||
sat = datetime(2026, 7, 25, 12, 0, tzinfo=_SH)
|
||||
sun = datetime(2026, 7, 26, 10, 0, tzinfo=_SH)
|
||||
mon = datetime(2026, 7, 27, 9, 0, tzinfo=_SH)
|
||||
assert can_open_new(fri, skip_weekends=True) is True
|
||||
assert can_open_new(sat, skip_weekends=True) is False
|
||||
assert can_open_new(sun, skip_weekends=True) is False
|
||||
assert can_open_new(mon, skip_weekends=True) is True
|
||||
assert can_open_new(sat, skip_weekends=False) is True
|
||||
assert window_key(fri) == "20260724"
|
||||
|
||||
|
||||
def test_bid_mark_deviation_30pct() -> None:
|
||||
@@ -101,3 +106,14 @@ def test_bid_mark_deviation_30pct() -> None:
|
||||
ok3, why = bid_mark_ok(bid=None, mark=10.0, max_dev_pct=30)
|
||||
assert ok3 is False
|
||||
assert "买一" in why
|
||||
|
||||
|
||||
def test_expiry_close() -> None:
|
||||
assert check_expiry_close(expiry_ms=None).should_close is False
|
||||
d = check_expiry_close(expiry_ms=1_000, now_ms=999)
|
||||
assert d.should_close is False
|
||||
d2 = check_expiry_close(expiry_ms=1_000, now_ms=1_000)
|
||||
assert d2.should_close is True
|
||||
assert d2.reason == "expiry"
|
||||
d3 = check_expiry_close(expiry_ms=1_000, now_ms=1_001)
|
||||
assert d3.should_close is True
|
||||
|
||||
Reference in New Issue
Block a user