Allow risk-based 永期 exits via premium multiple as well as base×k.

Settings UI picks 基数 or 权利金×n; sizing preview and control monitor follow.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-08-07 18:13:11 +08:00
parent ab612df818
commit 06f612aa52
5 changed files with 161 additions and 28 deletions
+15 -5
View File
@@ -208,10 +208,13 @@ function riskLines(strat: Record<string, unknown>): RiskLines {
const minH = Number(
strat.oo_min_option_hours ?? strat.min_option_hours,
);
const ampFilt = strat.oo_amplitude_filter_enabled === true;
const amp =
Number.isFinite(ampN) && Number.isFinite(ampH)
? `${fmt(ampN, ampN % 1 === 0 ? 0 : 1)}${fmt(ampH, 0)}h`
: "≤—";
? ampFilt
? `${fmt(ampN, ampN % 1 === 0 ? 0 : 1)}${fmt(ampH, 0)}h`
: `${fmt(ampH, 0)}h`
: "—";
const callQ =
strat.risk_sizing_preview &&
typeof strat.risk_sizing_preview === "object" &&
@@ -246,13 +249,15 @@ function riskLines(strat: Record<string, unknown>): RiskLines {
isOo: true,
sizing: riskBased ? "以损定仓(A)" : "手动开仓(B)",
sizingShort: riskBased ? "A" : "B",
lossPct: Number.isFinite(ampN)
lossPct: ampFilt && Number.isFinite(ampN)
? `${fmt(ampN, ampN % 1 === 0 ? 0 : 1)}%`
: null,
exit,
openRatio,
riskOrOpen: `${amp}/${openRatio}/${minHours}`,
riskOrOpenTitle: "振幅上限·回看 / Call:Put 数量 / 最短剩余(h)",
riskOrOpenTitle: ampFilt
? "振幅上限·回看 / Call:Put 数量 / 最短剩余(h)"
: "振幅回看 / Call:Put 数量 / 最短剩余(h)",
minHours,
leverage,
leverageTitle: "期期单腿最低杠杆",
@@ -261,7 +266,12 @@ function riskLines(strat: Record<string, unknown>): RiskLines {
const exitMode = String(strat.exit_mode || "fixed_usdt");
let exit: string;
if (riskBased) {
if (riskBased && exitMode === "premium_multiple") {
exit =
strat.premium_exit_multiple != null
? `权利金×${fmt(strat.premium_exit_multiple, 2)}`
: "权利金×—";
} else if (riskBased) {
exit =
strat.risk_exit_unit != null && Number.isFinite(Number(strat.risk_exit_unit))
? `基数${unitLabel(strat.risk_exit_unit)}`