Add one-expiry-per-day open rhythm gate (default on).
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+18
-1
@@ -59,7 +59,8 @@ async def sim_open_group(
|
||||
if ex.has_open_position():
|
||||
raise HTTPException(status_code=409, detail="有未平仓,禁止开下一组")
|
||||
s = get_settings()
|
||||
skip_weekends = Ledger().get_setting_bool("skip_weekends", s.skip_weekends)
|
||||
ledger = Ledger()
|
||||
skip_weekends = ledger.get_setting_bool("skip_weekends", s.skip_weekends)
|
||||
if not can_open_new(skip_weekends=skip_weekends):
|
||||
raise HTTPException(
|
||||
status_code=409,
|
||||
@@ -72,6 +73,22 @@ async def sim_open_group(
|
||||
status_code=409,
|
||||
detail="无合格期权:请检查剩余时长、ATM开仓偏差(若已开启)与杠杆(现价/卖一)",
|
||||
)
|
||||
one_expiry = ledger.get_setting_bool("one_expiry_per_day", s.one_expiry_per_day)
|
||||
if one_expiry:
|
||||
from ..strategy.clock import (
|
||||
expiry_blocked_by_one_per_day,
|
||||
used_expiry_ymds_for_day,
|
||||
)
|
||||
|
||||
used = used_expiry_ymds_for_day(get_db())
|
||||
if expiry_blocked_by_one_per_day(pick.pair.expiry_ymd, used, enabled=True):
|
||||
raise HTTPException(
|
||||
status_code=409,
|
||||
detail=(
|
||||
f"同到期日一天只开一次:今日已用过 {pick.pair.expiry_ymd},"
|
||||
"请等下一到期日"
|
||||
),
|
||||
)
|
||||
|
||||
force = (body.force_option_side if body else None) or None
|
||||
if force in ("call", "put"):
|
||||
|
||||
Reference in New Issue
Block a user