Add weekend open skip, expiry force-close, and Chinese trade labels.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+10
-5
@@ -5,11 +5,12 @@ from typing import Annotated
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from ..config import get_settings
|
||||
from ..market import get_gateway
|
||||
from ..models.db import get_db
|
||||
from ..sim.ledger import Ledger
|
||||
from ..sim.matcher import Matcher
|
||||
from ..strategy.clock import window_key
|
||||
from ..strategy.clock import can_open_new, window_key
|
||||
from ..strategy.group import next_group_id
|
||||
from .auth import require_user
|
||||
|
||||
@@ -39,6 +40,13 @@ async def sim_open_group(
|
||||
) -> dict:
|
||||
if Matcher().has_open_position():
|
||||
raise HTTPException(status_code=409, detail="有未平仓,禁止开下一组")
|
||||
s = get_settings()
|
||||
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,
|
||||
detail="周六/周日跳过开仓(上海时区)",
|
||||
)
|
||||
gw = get_gateway()
|
||||
pick = await gw.pick_for_open_async()
|
||||
if pick is None:
|
||||
@@ -53,12 +61,9 @@ async def sim_open_group(
|
||||
perp_side = "short" if force == "call" else "long"
|
||||
bias = "manual_" + force
|
||||
option_ask = pick.call_ask if force == "call" else pick.put_ask
|
||||
from ..config import get_settings
|
||||
from ..strategy.selection import option_leverage
|
||||
from ..sim.ledger import Ledger as Led
|
||||
|
||||
s = get_settings()
|
||||
min_lev = Led().get_setting_float("min_option_leverage", s.min_option_leverage)
|
||||
min_lev = Ledger().get_setting_float("min_option_leverage", s.min_option_leverage)
|
||||
lev = option_leverage(pick.underlying_px, option_ask)
|
||||
if lev is None or lev < min_lev:
|
||||
raise HTTPException(
|
||||
|
||||
Reference in New Issue
Block a user