From 48b919bb2bcc678dce4593e983008c1ed1b449f8 Mon Sep 17 00:00:00 2001 From: dekun Date: Wed, 7 Oct 2026 14:44:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AD=E6=8E=A7=E5=BF=AB=E7=85=A7=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=88=9D=E5=A7=8B=E8=B5=84=E9=87=91=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=EF=BC=8C=E4=BE=9B=E7=BB=9F=E8=AE=A1=E9=A1=B5=E6=94=B6=E7=9B=8A?= =?UTF-8?q?=E7=8E=87=E5=88=86=E6=AF=8D=E4=BD=BF=E7=94=A8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .env.example | 2 ++ lib/hub/hub_bridge_register.py | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/.env.example b/.env.example index 3ceee9b..b735a06 100644 --- a/.env.example +++ b/.env.example @@ -80,6 +80,8 @@ LIVE_TRADING_ENABLED=true SIM_DEFAULT_MODE=sim SIM_INITIAL_EQUITY_USDT=10000 SIM_INITIAL_USDC=0 +# 实盘初始资金(U);中控收益率=已结算盈亏/该值。不填则中控回退最早余额采样 +LIVE_INITIAL_EQUITY_USDT= SIM_FEE_RATE=0.0005 # ============================================================================= # OKX 账户 API(永续 + 期权共用同一套密钥;修改后须重启 PM2) diff --git a/lib/hub/hub_bridge_register.py b/lib/hub/hub_bridge_register.py index 0f7f886..ee173ac 100644 --- a/lib/hub/hub_bridge_register.py +++ b/lib/hub/hub_bridge_register.py @@ -198,11 +198,36 @@ def _enrich_hub_protocol(snap: dict[str, Any], *, app_module: Any) -> dict[str, out["pnl"] = { "unrealized_usdt": out.get("upl_total_usdc"), } + initial_cash_usdt = None + try: + import os + + if mode == "sim": + initial_cash_usdt = float(os.getenv("SIM_INITIAL_EQUITY_USDT") or 10000) + else: + for key in ( + "LIVE_INITIAL_EQUITY_USDT", + "OPTIONS_INITIAL_EQUITY_USDT", + "HUB_INITIAL_CASH_USDT", + ): + raw = (os.getenv(key) or "").strip() + if not raw: + continue + initial_cash_usdt = float(raw) + break + if initial_cash_usdt is not None and initial_cash_usdt <= 0: + initial_cash_usdt = None + elif initial_cash_usdt is not None: + initial_cash_usdt = round(float(initial_cash_usdt), 4) + except (TypeError, ValueError): + initial_cash_usdt = None + out["premium"] = { "paid_usdt": premium_usdt, "cash_usdt": cash_usdt, "equity_usdt": equity_usdt, "ratio_pct": ratio_pct, + "initial_cash_usdt": initial_cash_usdt, } out["positions_brief"] = slim_pos out["cond_order_locked"] = bool(out.get("cond_order_locked"))