Close residual options when premium recovers above configurable threshold.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-08-02 14:19:21 +08:00
parent 60b3743e8d
commit 62c91d4bd0
12 changed files with 603 additions and 11 deletions
+30 -4
View File
@@ -85,6 +85,7 @@ export default function SettingsPage() {
const [fixedDirOn, setFixedDirOn] = useState(false);
const [fixedPerpSide, setFixedPerpSide] = useState<"long" | "short">("long");
const [closeDevPct, setCloseDevPct] = useState(30);
const [residualMinPremPct, setResidualMinPremPct] = useState(20);
const [perpQty, setPerpQty] = useState(1);
const [optQty, setOptQty] = useState(2);
const [showManualTrade, setShowManualTrade] = useState(false);
@@ -196,6 +197,7 @@ export default function SettingsPage() {
setFixedDirOn(s.fixed_direction_enabled === true);
setFixedPerpSide(s.fixed_perp_side === "short" ? "short" : "long");
setCloseDevPct(s.close_bid_mark_max_pct ?? 30);
setResidualMinPremPct(s.residual_min_premium_pct ?? 20);
setPerpQty(s.perp_qty_eth ?? 1);
setOptQty(s.option_qty_eth ?? 2);
setShowManualTrade(s.show_manual_trade_buttons === true);
@@ -362,6 +364,7 @@ export default function SettingsPage() {
fixed_direction_enabled: fixedDirOn,
fixed_perp_side: fixedPerpSide,
close_bid_mark_max_pct: closeDevPct,
residual_min_premium_pct: residualMinPremPct,
show_manual_trade_buttons: showManualTrade,
sizing_mode: sizingMode,
risk_leverage_basis: riskLeverageBasis,
@@ -1160,6 +1163,23 @@ export default function SettingsPage() {
onChange={(e) => setCloseDevPct(Number(e.target.value))}
/>
</div>
<div className="field">
<label htmlFor="residualPrem">
/ %
</label>
<input
id="residualPrem"
className="mono"
type="number"
step="1"
min="1"
max="100"
value={residualMinPremPct}
onChange={(e) =>
setResidualMinPremPct(Number(e.target.value))
}
/>
</div>
</div>
</section>
) : null}
@@ -1297,10 +1317,16 @@ export default function SettingsPage() {
</>
) : null}
{stratSub === "exit" ? (
<li>
/ SIM
LIVE
</li>
<>
<li>
/ SIM
LIVE
</li>
<li>
20%
</li>
</>
) : null}
{stratSub === "pace" ? (
<>