Tune CoinOX env: drop auto-transfer; map leverage to hedge perp opens.

BTC_LEVERAGE/ALT_LEVERAGE now drive永期永续 default leverage in UI and start fallback.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-10-14 12:46:14 +08:00
parent 4b1c629d26
commit 4c48c95562
7 changed files with 62 additions and 46 deletions
+22 -3
View File
@@ -40,6 +40,7 @@
optionPrimary: root.getAttribute("data-option-primary") !== "0",
opLevTouched: false,
opRatioTouched: false,
perpLevTouched: false,
tradingUsdc: null,
fundingUsdc: null,
tradeBudgetUsdc: null,
@@ -377,6 +378,14 @@
};
}
function defaultPerpLeverage(uly) {
const u = (uly || "ETH").toUpperCase();
const btc = Number(root.getAttribute("data-btc-leverage") || 10);
const eth = Number(root.getAttribute("data-eth-leverage") || 5);
if (u === "BTC") return Number.isFinite(btc) && btc > 0 ? btc : 10;
return Number.isFinite(eth) && eth > 0 ? eth : 5;
}
function syncUnderlyingUI() {
const uly = state.underlying || "ETH";
document.querySelectorAll(".hp-uly-btn, .hp-uly-btn-oo").forEach(function (b) {
@@ -388,6 +397,11 @@
if (lab) lab.textContent = uly;
const ooLab = $("hp-oo-uly-label");
if (ooLab) ooLab.textContent = uly;
// 永续开仓杠杆跟随 env(BTC_LEVERAGE / ALT_LEVERAGE=ETH)
const levEl = $("hp-perp-leverage");
if (levEl && !state.perpLevTouched) {
levEl.value = String(defaultPerpLeverage(uly));
}
}
function syncMoneyUI() {
@@ -1664,7 +1678,7 @@
strike_interval: numInput("hp-strike-interval", 15),
min_option_hours: numInput("hp-min-hours", 36),
option_leverage: numInput("hp-opt-leverage", 100),
leverage: numInput("hp-perp-leverage", 100),
leverage: numInput("hp-perp-leverage", defaultPerpLeverage(state.underlying)),
moneyness: opMoneyKind(),
hours_to_expiry: exp ? hoursFromExpMs(exp.exp_time) : null,
};
@@ -1868,6 +1882,11 @@
renderListStrikes();
});
}
if ($("hp-perp-leverage")) {
$("hp-perp-leverage").addEventListener("input", function () {
state.perpLevTouched = true;
});
}
if ($("hp-opt-leverage")) {
$("hp-opt-leverage").addEventListener("input", function () {
state.opLevTouched = true;
@@ -2618,7 +2637,7 @@
strike_interval: numInput("hp-strike-interval", 15),
min_option_hours: numInput("hp-min-hours", 36),
option_leverage: optLev,
leverage: numInput("hp-perp-leverage", 100),
leverage: numInput("hp-perp-leverage", defaultPerpLeverage(state.underlying)),
moneyness: opMoneyKind(),
};
const d = await apiJson("/api/hedge-plan/start", {
@@ -2684,7 +2703,7 @@
ask: state.selected.ask,
index_px: entry,
exchange_symbol: (state.market && state.market.exchange_symbol) || "",
leverage: numInput("hp-perp-leverage", 100),
leverage: numInput("hp-perp-leverage", defaultPerpLeverage(state.underlying)),
option_leverage: numInput("hp-opt-leverage", 100),
premium_budget: numInput("hp-premium-budget", 0),
option_perp_ratio: numInput("hp-opt-perp-ratio", 2),