"""日历日分组键(开仓时间窗已取消,由期权剩余时长约束)。""" from __future__ import annotations from datetime import datetime from zoneinfo import ZoneInfo _SH = ZoneInfo("Asia/Shanghai") def now_sh(now: datetime | None = None) -> datetime: return (now or datetime.now(tz=_SH)).astimezone(_SH) def window_key(now: datetime | None = None) -> str: """组号日期键:日历日 YYYYMMDD。""" return now_sh(now).strftime("%Y%m%d") def can_open_new( now: datetime | None = None, *, open_hhmm: str = "16:00", stop_hhmm: str = "08:00", ) -> bool: """开仓窗已取消,始终允许(仍受期权剩余时长/杠杆筛选)。""" return True def group_date_ymd(now: datetime | None = None) -> str: return window_key(now)