Add 期期 close mode (全平/到期平) with scheme-C env toggle.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -29,6 +29,8 @@
|
||||
legB: null,
|
||||
market: null,
|
||||
ooSheetsMode: "same_sheets",
|
||||
ooCloseModeEnabled: root.getAttribute("data-oo-close-mode-enabled") !== "0",
|
||||
ooCloseMode: "close_all",
|
||||
tradingUsdc: null,
|
||||
tradeBudgetUsdc: null,
|
||||
budgetBuffer: 0.95,
|
||||
@@ -295,6 +297,19 @@
|
||||
});
|
||||
}
|
||||
|
||||
function syncOoCloseModeUI() {
|
||||
const enabled = !!state.ooCloseModeEnabled;
|
||||
const row = $("hp-oo-close-mode-row");
|
||||
const hint = $("hp-oo-close-mode-hint");
|
||||
if (row) row.classList.toggle("hidden", !enabled);
|
||||
if (hint) hint.classList.toggle("hidden", !enabled);
|
||||
if (!enabled) state.ooCloseMode = "hold_expiry";
|
||||
document.querySelectorAll(".hp-oo-close-mode").forEach(function (b) {
|
||||
const on = b.getAttribute("data-oo-close") === state.ooCloseMode;
|
||||
b.classList.toggle("active", on);
|
||||
});
|
||||
}
|
||||
|
||||
function updateOoBudgetLine(extra) {
|
||||
const line = $("hp-oo-budget-line");
|
||||
if (!line) return;
|
||||
@@ -331,6 +346,15 @@
|
||||
async function loadGates() {
|
||||
try {
|
||||
const d = await apiJson("/api/hedge-plan/gates?plan_type=" + encodeURIComponent(state.mode));
|
||||
if (d.oo_close_mode_enabled != null) {
|
||||
state.ooCloseModeEnabled = !!d.oo_close_mode_enabled;
|
||||
}
|
||||
if (!state.ooCloseModeEnabled) {
|
||||
state.ooCloseMode = "hold_expiry";
|
||||
} else if (d.oo_close_mode_default && !state._ooCloseModeTouched) {
|
||||
state.ooCloseMode = d.oo_close_mode_default === "hold_expiry" ? "hold_expiry" : "close_all";
|
||||
}
|
||||
syncOoCloseModeUI();
|
||||
setGateLine(d);
|
||||
} catch (e) {
|
||||
setGateLine({ can_preview: false, can_start: false, reasons: [e.message], is_full_margin: false });
|
||||
@@ -953,6 +977,14 @@
|
||||
autoFillOoSheets();
|
||||
});
|
||||
});
|
||||
document.querySelectorAll(".hp-oo-close-mode").forEach(function (b) {
|
||||
b.addEventListener("click", function () {
|
||||
if (!state.ooCloseModeEnabled) return;
|
||||
state.ooCloseMode = b.getAttribute("data-oo-close") || "close_all";
|
||||
state._ooCloseModeTouched = true;
|
||||
syncOoCloseModeUI();
|
||||
});
|
||||
});
|
||||
if ($("hp-preview-btn"))
|
||||
$("hp-preview-btn").addEventListener("click", function () {
|
||||
state.mode = "perp_options";
|
||||
@@ -1346,6 +1378,7 @@
|
||||
target_price_up: up,
|
||||
target_price_down: down,
|
||||
target_price: up,
|
||||
oo_close_mode: state.ooCloseModeEnabled ? state.ooCloseMode : "hold_expiry",
|
||||
leg_a: legPayload(state.legA, ooSheets("hp-oo-sheets-a")),
|
||||
leg_b: legPayload(state.legB, ooSheets("hp-oo-sheets-b")),
|
||||
};
|
||||
@@ -1410,6 +1443,7 @@
|
||||
syncUnderlyingUI();
|
||||
syncMoneyUI();
|
||||
syncOoSizeModeUI();
|
||||
syncOoCloseModeUI();
|
||||
updateOoBudgetLine(null);
|
||||
bind();
|
||||
void refreshAll();
|
||||
|
||||
@@ -3265,11 +3265,16 @@ html[data-theme="light"] .opt-be-dist-down {
|
||||
gap: 8px;
|
||||
margin: 6px 0 2px;
|
||||
}
|
||||
.hedge-plan-page-wrap .hp-oo-size-mode.active {
|
||||
.hedge-plan-page-wrap .hp-oo-size-mode.active,
|
||||
.hedge-plan-page-wrap .hp-oo-close-mode.active {
|
||||
border-color: var(--accent, #00d4ff);
|
||||
color: var(--text, #fff);
|
||||
background: rgba(0, 212, 255, 0.12);
|
||||
}
|
||||
.hedge-plan-page-wrap #hp-oo-close-mode-row.hidden,
|
||||
.hedge-plan-page-wrap #hp-oo-close-mode-hint.hidden {
|
||||
display: none !important;
|
||||
}
|
||||
.hedge-plan-page-wrap #hp-oo-budget-line.hp-oo-budget-warn {
|
||||
color: #ff8a8a;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user