Add risk leverage basis option: actual ask vs selection leverage.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-08-01 17:01:18 +08:00
parent f1da2778ef
commit 9c515644a3
7 changed files with 201 additions and 7 deletions
+21
View File
@@ -50,6 +50,7 @@ KEYS = (
"option_qty_eth",
"show_manual_trade_buttons",
"sizing_mode",
"risk_leverage_basis",
"risk_loss_mode",
"risk_loss_pct",
"risk_loss_usdt",
@@ -86,6 +87,9 @@ class StrategySettingsBody(BaseModel):
show_manual_trade_buttons: bool | None = None
exchange: str | None = Field(default=None, pattern="^(okx|binance|bn)$")
sizing_mode: str | None = Field(default=None, pattern="^(manual|risk_based)$")
risk_leverage_basis: str | None = Field(
default=None, pattern="^(actual|selection)$"
)
risk_loss_mode: str | None = Field(default=None, pattern="^(percent|absolute)$")
risk_loss_pct: float | None = Field(default=None, ge=0.01, le=100)
risk_loss_usdt: float | None = Field(default=None, ge=0.1, le=1_000_000)
@@ -228,6 +232,23 @@ def _read_settings() -> dict:
in ("manual", "risk_based")
else "manual"
),
"risk_leverage_basis": (
rb
if (
rb := str(
db.get_setting(
"risk_leverage_basis",
str(s.risk_leverage_basis),
)
or s.risk_leverage_basis
or "selection"
)
.strip()
.lower()
)
in ("actual", "selection")
else "selection"
),
"risk_loss_mode": (
lm
if (