Show OKX option Delta on hedge plan strike picker.

Surface ticker delta (gamma in tooltip) in the chain table and selected premium line for easier ITM selection.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-10-14 21:59:17 +08:00
parent a841c8f31b
commit 37428c0bf9
3 changed files with 34 additions and 6 deletions
+24 -4
View File
@@ -894,6 +894,14 @@
}
/** CoinOX 币本位:卖一为币报价 → 杠杆≈1÷卖一(与期权页一致). */
function fmtDelta(v) {
const n = Number(v);
if (v == null || Number.isNaN(n)) return "—";
// Call 多为正,Put 多为负;保留两位便于对比实虚值
const s = fmt(n, 2);
return n > 0 ? "+" + s : s;
}
function calcIndexAskLeverage(ask) {
const a = Number(ask);
if (!(a > 0)) return "—";
@@ -2262,7 +2270,7 @@
const want = optTypeForDirection(getDirection());
const exp = currentExp("hp-exp-select");
const prevInst = state.selected && state.selected.inst_id;
const cols = isOptionPrimary() ? 7 : 6;
const cols = isOptionPrimary() ? 8 : 7;
tbody.innerHTML = "";
if (!exp) {
tbody.innerHTML = '<tr><td colspan="' + cols + '" class="muted">请选择到期日</td></tr>';
@@ -2302,13 +2310,21 @@
tr.className = "opt-strike-row" + (c.moneyness ? " opt-row-" + c.moneyness : "");
if (prevInst && c.inst_id === prevInst) tr.classList.add("opt-row-selected");
tr.setAttribute("data-inst", c.inst_id);
const deltaCell =
'<td class="opt-chain-delta" title="交易所 Delta' +
(c.gamma != null ? " · γ=" + fmt(c.gamma, 4) : "") +
'">' +
fmtDelta(c.delta) +
"</td>";
if (isOptionPrimary()) {
tr.innerHTML =
"<td>" +
c.strike +
"</td><td>" +
moneynessBadge(c) +
"</td><td><code class=\"opt-inst-code\">" +
"</td>" +
deltaCell +
'<td><code class="opt-inst-code">' +
(c.inst_id || "") +
'</code></td><td class="opt-px-sz">' +
fmtPxSz(c.ask, c.ask_sz, c.ask_estimated, c.tick_sz) +
@@ -2327,7 +2343,9 @@
c.strike +
"</td><td>" +
moneynessBadge(c) +
'</td><td class="opt-chain-lev" title="指数÷卖一">' +
"</td>" +
deltaCell +
'<td class="opt-chain-lev" title="指数÷卖一">' +
calcIndexAskLeverage(c.ask) +
'</td><td class="opt-px-sz">' +
fmtPxSz(c.ask, c.ask_sz, c.ask_estimated, c.tick_sz) +
@@ -2366,6 +2384,7 @@
// U 以期权标的指数为准(买 BTC/ETH 开期权);跨币不可用永续 ETH 价
const buyPx = Number(optionIndexPx() || 0);
const premU = buyPx > 0 ? prem * buyPx : null;
const dlt = state.selected.delta;
line.textContent =
"权利金 ≈ " +
fmt(prem, 4) +
@@ -2374,7 +2393,8 @@
(premU != null ? " / " + fmt(premU, 2) + " U" : "") +
" · 卖一 " +
fmt(ask, 4) +
(buyPx > 0 ? " · 买" + optionCoin() + "参考 " + fmt(buyPx, 2) : "");
(buyPx > 0 ? " · 买" + optionCoin() + "参考 " + fmt(buyPx, 2) : "") +
(dlt != null && !Number.isNaN(Number(dlt)) ? " · Δ " + fmtDelta(dlt) : "");
}
function buildStraddleRows(contracts) {