Show live risk-sizing estimate on plan page instead of stale manual qty.
When 以损定仓 is on, state() overlays next-open k/qty/exit from market preview. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -128,6 +128,32 @@ class StrategyEngine:
|
||||
risk_option_unit = self.ledger.get_setting_float("risk_option_unit", 2.0)
|
||||
risk_exit_unit = self.ledger.get_setting_float("risk_exit_unit", 15.0)
|
||||
risk_last_k = self.ledger.get_setting_float("risk_last_k", 0.0)
|
||||
risk_preview: dict[str, Any] | None = None
|
||||
# 以损定仓:监控页展示「下一次开仓」实时估算,避免仍显示上次手填/过期名义
|
||||
if sizing_mode == "risk_based":
|
||||
try:
|
||||
from .risk_sizing import preview_risk_sizing
|
||||
|
||||
risk_preview = preview_risk_sizing(self.db)
|
||||
if risk_preview.get("ok"):
|
||||
if risk_preview.get("perp_qty_eth") is not None:
|
||||
perp_qty = float(risk_preview["perp_qty_eth"])
|
||||
if risk_preview.get("option_qty_eth") is not None:
|
||||
opt_qty = float(risk_preview["option_qty_eth"])
|
||||
if risk_preview.get("net_profit_target") is not None:
|
||||
net_target = float(risk_preview["net_profit_target"])
|
||||
exit_amt = net_target
|
||||
if risk_preview.get("k") is not None:
|
||||
risk_last_k = float(risk_preview["k"])
|
||||
if risk_preview.get("perp_unit") is not None:
|
||||
risk_perp_unit = float(risk_preview["perp_unit"])
|
||||
if risk_preview.get("option_unit") is not None:
|
||||
risk_option_unit = float(risk_preview["option_unit"])
|
||||
if risk_preview.get("exit_unit") is not None:
|
||||
risk_exit_unit = float(risk_preview["exit_unit"])
|
||||
except Exception:
|
||||
logger.exception("risk sizing preview for state() failed")
|
||||
risk_preview = {"ok": False, "detail": "以损定仓预览失败"}
|
||||
rest_until = row["rest_until_ms"]
|
||||
rest_left = 0
|
||||
if rest_until:
|
||||
@@ -172,6 +198,7 @@ class StrategyEngine:
|
||||
"risk_option_unit": risk_option_unit,
|
||||
"risk_exit_unit": risk_exit_unit,
|
||||
"risk_last_k": risk_last_k if risk_last_k > 0 else None,
|
||||
"risk_sizing_preview": risk_preview,
|
||||
"min_option_hours": min_hours,
|
||||
"min_option_leverage": min_opt_lev,
|
||||
"atm_open_offset_enabled": atm_off_on,
|
||||
|
||||
Reference in New Issue
Block a user