Add daily loss force-flatten at configurable equity limit

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-03 12:42:13 +08:00
parent b6c3266a9e
commit 2081bf2da9
17 changed files with 850 additions and 97 deletions
+14 -3
View File
@@ -55,6 +55,10 @@ def build_risk_overview(
equity: Optional[float] = None,
margin_used: Optional[float] = None,
) -> dict[str, Any]:
from modules.risk.account_risk_lib import (
daily_loss_slippage_buffer_pct,
daily_loss_total_cap_pct,
)
from risk.account_risk_lib import (
cooling_hours_manual,
cooling_hours_manual_journal,
@@ -92,7 +96,9 @@ def build_risk_overview(
active_n = effective_active_position_count(
conn, mode, ctp_connected=ctp_connected,
)
risk = dict(get_risk_status(conn, equity=equity, active_count=active_n) or {})
risk = dict(get_risk_status(
conn, equity=equity, active_count=active_n, mode=mode, get_setting=get_setting,
) or {})
row = conn.execute("SELECT * FROM account_risk_state WHERE id=1").fetchone()
td = trading_day_label()
stored_td = str(row["trading_day"] or "") if row else ""
@@ -109,7 +115,10 @@ def build_risk_overview(
daily_opens = int(risk.get("daily_open_count") or count_daily_opens(conn))
daily_risk_used = risk.get("daily_risk_used_pct")
if daily_risk_used is None and equity and equity > 0:
daily_risk_used = daily_trading_risk_used_pct(conn, float(equity))
daily_risk_used = daily_trading_risk_used_pct(conn, float(equity), mode=mode)
daily_risk_lim = daily_trading_risk_pct_limit(get_setting)
slip_buf = daily_loss_slippage_buffer_pct(get_setting)
daily_risk_cap = daily_loss_total_cap_pct(get_setting)
return {
"enabled": risk_control_enabled(),
@@ -123,7 +132,9 @@ def build_risk_overview(
"position_mode": "single" if max_active_positions() <= 1 else "multi",
"position_mode_label": "单仓模式" if max_active_positions() <= 1 else "多仓模式",
"daily_position_limit": daily_position_limit(),
"daily_trading_risk_pct_limit": daily_trading_risk_pct_limit(),
"daily_trading_risk_pct_limit": daily_risk_lim,
"daily_loss_slippage_buffer_pct": slip_buf,
"daily_loss_total_cap_pct": daily_risk_cap,
"manual_close_daily_limit": manual_close_daily_limit(),
"cooling_hours_manual": cooling_hours_manual(),
"cooling_hours_manual_journal": cooling_hours_manual_journal(),