feat(shadow-desk): P1-b/c 影子柜台常驻进程+本地撮合broker+前端引擎选择: ShadowBroker(实时价±滑点即时成交/佣金印花最低佣金/A股整手/T+1日锁/资金不足拒单/均价加权/duck-typed BrokerBase协议); runner挂bullet_trade LiveEngine同实盘唯一差=broker_factory换影子(双轨对账基础),成交落paper_trades+30s快照落持仓净值; CLI单实例文件锁(python -m sanguo_trader.shadow); paper_accounts加engine列(eod_replay/shadow迁移); 前端:模拟盘新建组合卡撮合引擎单选+列表影子/日终徽标; 10 broker单测 [vps]
This commit is contained in:
@@ -56,6 +56,8 @@ class PaperCreateRequest(BaseModel):
|
||||
# 组合策略实走(E1):strategy_type=portfolio 时 mode 必须 live,
|
||||
# strategies[0].name=组合策略名,pool/max_pool/benchmark 进 params
|
||||
strategy_type: str = "cta"
|
||||
# 撮合引擎(影子柜台 P1):eod_replay=日终回放(NAS 20:30) / shadow=影子柜台(VPS 盘中实时)
|
||||
engine: str = "eod_replay"
|
||||
pool: str = "hs300_subset"
|
||||
max_pool: int = 30
|
||||
benchmark: str = "000300.XSHG"
|
||||
@@ -71,6 +73,8 @@ def create_paper(req: PaperCreateRequest):
|
||||
if req.strategy_type == "portfolio":
|
||||
if req.mode != "live":
|
||||
raise HTTPException(400, "组合策略模拟盘仅支持实走(live)模式;历史回放请用「组合回测」")
|
||||
if req.engine not in ("eod_replay", "shadow"):
|
||||
raise HTTPException(400, "engine 须为 eod_replay(日终回放) 或 shadow(影子柜台)")
|
||||
payload = req.model_dump()
|
||||
payload["symbols"] = [req.pool]
|
||||
payload["strategies"] = [{
|
||||
|
||||
Reference in New Issue
Block a user