diff --git a/lib/options/options_pricing_lib.py b/lib/options/options_pricing_lib.py index ee978c3..8548b4e 100644 --- a/lib/options/options_pricing_lib.py +++ b/lib/options/options_pricing_lib.py @@ -387,7 +387,7 @@ def calc_order_size( ct_mult: float, min_sz: int, budget_usdc: float | None = None, - budget_buffer: float = 0.95, + budget_buffer: float = 1.0, eth_amount: float | None = None, sheets: int | None = None, budget_cap: float | None = None, diff --git a/lib/options/options_register.py b/lib/options/options_register.py index 4bb65cb..5419b6a 100644 --- a/lib/options/options_register.py +++ b/lib/options/options_register.py @@ -250,9 +250,22 @@ def _compound_full_enabled() -> bool: def _normalize_size_mode(mode: str) -> tuple[str, str | None]: - """USDC 预算/全仓模式已下线;统一落到指定张数.""" - m = (mode or "sheets").strip() or "sheets" + """币本位保留打满/复利;USDC 预算模式已下线,落到指定张数.""" + m = (mode or "").strip() + if m == "eth_amount": + m = "eth" + coin = False + try: + from lib.options.options_margin_mode_lib import is_coin_margin_mode + + coin = bool(is_coin_margin_mode()) + except Exception: + coin = False + if not m: + return ("budget_full" if coin else "sheets"), None if m in ("compound_full", "budget_full"): + if coin: + return m, None return "sheets", "USDC 期权模式已下线,已改用指定张数" return m, None @@ -587,7 +600,7 @@ def register_options_routes(app: Flask, cfg: dict[str, Any]) -> None: ask = q.get("ask") ct_mult = q.get("ct_mult") or 0.01 min_sz = q.get("min_sz") or 1 - mode = (request.args.get("mode") or "sheets").strip() + mode = (request.args.get("mode") or "").strip() sheet_count = None try: if request.args.get("sheets"): @@ -766,7 +779,7 @@ def register_options_routes(app: Flask, cfg: dict[str, Any]) -> None: return jsonify({"ok": False, "msg": f"交易模式校验失败: {e}", "can_open": False}) data = request.get_json(silent=True) or {} inst_id = (data.get("inst_id") or "").strip() - mode = (data.get("mode") or "sheets").strip() + mode = (data.get("mode") or "").strip() mode, mode_note = _normalize_size_mode(mode) signal_note = (data.get("signal_note") or "").strip() # 中控条件单占用时禁止手动开仓