Rename 永期「市价下单」文案为「手动下单」(卖一限价,非交易所市价单).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-10-14 15:24:05 +08:00
parent c9e69ce8ef
commit e474c89c35
3 changed files with 22 additions and 22 deletions
+11 -11
View File
@@ -26,7 +26,7 @@
ooMoneyFilter: "atm_otm", // 期期锁定:平值+虚值 ooMoneyFilter: "atm_otm", // 期期锁定:平值+虚值
ooRecommend: null, // atm_straddle | double_otm | null ooRecommend: null, // atm_straddle | double_otm | null
ooStrikeExpandAll: false, // 默认 Call/Put 各 3 档 ooStrikeExpandAll: false, // 默认 Call/Put 各 3 档
poStrikeExpandAll: false, // 永期市价选约:默认平值+实3+虚3 poStrikeExpandAll: false, // 永期手动选约:默认平值+实3+虚3
chain: null, chain: null,
selected: null, selected: null,
legA: null, legA: null,
@@ -71,7 +71,7 @@
if (isOptionPrimary()) { if (isOptionPrimary()) {
hint.textContent = hint.textContent =
(dir === "short" ? "买 Put + 永续多" : "买 Call + 永续空") + (dir === "short" ? "买 Put + 永续多" : "买 Call + 永续空") +
" · 点「选择」填入右侧市价下单;比例默认 2(期权 1 → 永续 0.5)。"; " · 点「选择」填入右侧手动下单;比例默认 2(期权 1 → 永续 0.5)。";
} else { } else {
hint.textContent = dir === "short" ? "永续空 + 保险 Call" : "永续多 + 保险 Put"; hint.textContent = dir === "short" ? "永续空 + 保险 Call" : "永续多 + 保险 Put";
} }
@@ -165,7 +165,7 @@
return fmt(v, 2) + ":1"; return fmt(v, 2) + ":1";
} }
/** 条件单杠杆门槛;市价下单传 0 则不筛. */ /** 条件单杠杆门槛;手动下单传 0 则不筛. */
function optionPrimaryMinLev() { function optionPrimaryMinLev() {
const minLev = numInput("hp-opt-leverage", 0); const minLev = numInput("hp-opt-leverage", 0);
if (!(minLev > 0)) return 0; if (!(minLev > 0)) return 0;
@@ -187,7 +187,7 @@
const m = (c.moneyness || "").toLowerCase(); const m = (c.moneyness || "").toLowerCase();
// 保险模式不可选虚值 // 保险模式不可选虚值
if (!isOptionPrimary() && f === "otm") return false; if (!isOptionPrimary() && f === "otm") return false;
// 市价下单:仅按 全部/实值/虚值 筛选,不做间隔/杠杆条件门槛 // 手动下单:仅按 全部/实值/虚值 筛选,不做间隔/杠杆条件门槛
if (isOptionPrimary()) { if (isOptionPrimary()) {
if (f === "all" || f === "any") return true; if (f === "all" || f === "any") return true;
if (f === "itm") return m === "itm" || m === "atm"; if (f === "itm") return m === "itm" || m === "atm";
@@ -371,7 +371,7 @@
if (on) applyOpDefaultsFromMoney(false); if (on) applyOpDefaultsFromMoney(false);
const badge = $("hp-po-mode-badge"); const badge = $("hp-po-mode-badge");
if (badge) { if (badge) {
badge.textContent = on ? "市价下单" : "保险模式"; badge.textContent = on ? "手动下单" : "保险模式";
badge.classList.toggle("is-insurance", !on); badge.classList.toggle("is-insurance", !on);
} }
const title = $("hp-po-card-title"); const title = $("hp-po-card-title");
@@ -532,8 +532,8 @@
const btn = $("hp-preview-btn"); const btn = $("hp-preview-btn");
if (!btn) return; if (!btn) return;
if (isOptionPrimary()) { if (isOptionPrimary()) {
btn.textContent = "市价下单"; btn.textContent = "手动下单";
btn.title = "按左侧已选合约立即开仓(买期权+对冲永续);非条件盯盘"; btn.title = "按左侧已选合约卖一限价开仓(买期权+对冲永续);非交易所市价单、非条件盯盘";
} else { } else {
btn.textContent = "计算"; btn.textContent = "计算";
btn.title = "情景测算后再启动"; btn.title = "情景测算后再启动";
@@ -637,7 +637,7 @@
updatePerpPnlHint(); updatePerpPnlHint();
} }
/** 市价选约:不自动代选;仅在已选失效(换 Call/Put 或筛掉)时清空. */ /** 手动选约:不自动代选;仅在已选失效(换 Call/Put 或筛掉)时清空. */
function autoMatchPoOption(force) { function autoMatchPoOption(force) {
if (!isOptionPrimary()) return; if (!isOptionPrimary()) return;
const want = optTypeForDirection(getDirection()); const want = optTypeForDirection(getDirection());
@@ -1237,7 +1237,7 @@
function fillExpSelect(sel, chain) { function fillExpSelect(sel, chain) {
if (!sel) return; if (!sel) return;
const prev = sel.value; const prev = sel.value;
// 市价选约:到期列表不过滤(与期权页一致,默认最近一期);条件单 hidden 字段 min-hours=0 // 手动选约:到期列表不过滤(与期权页一致,默认最近一期);条件单 hidden 字段 min-hours=0
const minH = sel.id === "hp-exp-select" ? numInput("hp-min-hours", 0) : 0; const minH = sel.id === "hp-exp-select" ? numInput("hp-min-hours", 0) : 0;
sel.innerHTML = '<option value="">选择到期日</option>'; sel.innerHTML = '<option value="">选择到期日</option>';
let firstOk = null; let firstOk = null;
@@ -2229,7 +2229,7 @@
if ($("hp-preview-btn")) if ($("hp-preview-btn"))
$("hp-preview-btn").addEventListener("click", function () { $("hp-preview-btn").addEventListener("click", function () {
state.mode = "perp_options"; state.mode = "perp_options";
// 以期权为主 = 市价下单(左侧人工选约后立即开);条件盯盘不再从此入口 // 以期权为主 = 手动下单(左侧人工选约后按卖一限价开);条件盯盘不再从此入口
if (isOptionPrimary()) void startPlan("perp_options", false); if (isOptionPrimary()) void startPlan("perp_options", false);
else void runPreview(); else void runPreview();
}); });
@@ -2890,7 +2890,7 @@
} }
if (!fromPreviewModal) { if (!fromPreviewModal) {
const confMsg = isOptionPrimary() const confMsg = isOptionPrimary()
? "确认市价下单?\n期权 " + ? "确认手动下单(卖一限价)?\n期权 " +
(state.selected && state.selected.inst_id) + (state.selected && state.selected.inst_id) +
" × " + " × " +
(body.sheets || "") + (body.sheets || "") +
@@ -267,7 +267,7 @@ def validate_option_primary_moneyness(
m_want = (moneyness or "atm").strip().lower() m_want = (moneyness or "atm").strip().lower()
m_got = classify_moneyness(opt_type=o, strike=k, index_px=s) m_got = classify_moneyness(opt_type=o, strike=k, index_px=s)
if m_want in ("all", "any", ""): if m_want in ("all", "any", ""):
# 市价人工选约:不限制虚实值 # 手动选约:不限制虚实值
pass pass
elif m_want == "itm": elif m_want == "itm":
if not is_itm_or_atm(opt_type=o, strike=k, index_px=s): if not is_itm_or_atm(opt_type=o, strike=k, index_px=s):
@@ -283,7 +283,7 @@ def validate_option_primary_moneyness(
else: else:
return "期权类型(实/平/虚)无效" return "期权类型(实/平/虚)无效"
# 间隔/最短到期/杠杆门槛:仅条件单使用;传 0 表示市价下单跳过 # 间隔/最短到期/杠杆门槛:仅条件单使用;传 0 表示手动下单跳过
interval_raw = _sf(strike_interval) interval_raw = _sf(strike_interval)
if interval_raw is None: if interval_raw is None:
interval_raw = DEFAULT_STRIKE_INTERVAL interval_raw = DEFAULT_STRIKE_INTERVAL
@@ -390,7 +390,7 @@ def validate_option_primary_start(body: dict[str, Any]) -> Optional[str]:
want = opt_type_for_view(direction) want = opt_type_for_view(direction)
if opt_type != want: if opt_type != want:
return f"以期权为主时做{'多' if direction == 'long' else '空'}须用 {'Call' if want == 'C' else 'Put'}" return f"以期权为主时做{'多' if direction == 'long' else '空'}须用 {'Call' if want == 'C' else 'Put'}"
# 市价下单:左侧人工选约,跳过条件单(间隔/最短到期/杠杆门槛) # 手动下单:左侧人工选约,跳过条件单(间隔/最短到期/杠杆门槛)
if market: if market:
return None return None
moneyness = str(body.get("moneyness") or body.get("option_moneyness") or "otm").strip().lower() moneyness = str(body.get("moneyness") or body.get("option_moneyness") or "otm").strip().lower()
@@ -45,11 +45,11 @@
<div id="hp-tab-perp_options" class="hp-tab-panel" role="tabpanel"> <div id="hp-tab-perp_options" class="hp-tab-panel" role="tabpanel">
<div class="options-dual-grid" id="hp-po-layout"> <div class="options-dual-grid" id="hp-po-layout">
<!-- 左:市价选约(与期权下单同风格,人工选) --> <!-- 左:手动选约(与期权下单同风格,人工选;开仓按卖一限价) -->
<div class="card hp-po-left-card hp-po-select-card"> <div class="card hp-po-left-card hp-po-select-card">
<div class="hp-po-left-stack"> <div class="hp-po-left-stack">
<div class="hp-po-inner-card hp-opt-card"> <div class="hp-po-inner-card hp-opt-card">
<h2>市价选约 · <span id="hp-opt-type-label">Call</span> <span class="muted hp-acct-tag" id="hp-opt-acct-tag">币本位</span></h2> <h2>手动选约 · <span id="hp-opt-type-label">Call</span> <span class="muted hp-acct-tag" id="hp-opt-acct-tag">币本位</span></h2>
<div class="form-row hp-opt-toolbar hp-po-opt-toolbar options-chain-toolbar"> <div class="form-row hp-opt-toolbar hp-po-opt-toolbar options-chain-toolbar">
<button type="button" class="btn-secondary hp-uly-btn active" data-uly="ETH">ETH</button> <button type="button" class="btn-secondary hp-uly-btn active" data-uly="ETH">ETH</button>
<button type="button" class="btn-secondary hp-uly-btn" data-uly="BTC">BTC</button> <button type="button" class="btn-secondary hp-uly-btn" data-uly="BTC">BTC</button>
@@ -73,8 +73,8 @@
<button type="button" class="btn-secondary" id="hp-load-chain">刷新链</button> <button type="button" class="btn-secondary" id="hp-load-chain">刷新链</button>
<span id="hp-index-line" class="hp-po-index" aria-live="polite">指数 —</span> <span id="hp-index-line" class="hp-po-index" aria-live="polite">指数 —</span>
</div> </div>
<p class="muted hp-po-chain-hint" id="hp-po-pair-hint">买 Call + 永续空 · 点「选择」填入右侧市价下单;比例默认 2(期权 1 → 永续 0.5)。</p> <p class="muted hp-po-chain-hint" id="hp-po-pair-hint">买 Call + 永续空 · 点「选择」填入右侧手动下单;比例默认 2(期权 1 → 永续 0.5)。</p>
{# 条件单残留字段:隐藏,市价下单不用 #} {# 条件单残留字段:隐藏,手动下单不用 #}
<input type="hidden" id="hp-min-hours" value="0" /> <input type="hidden" id="hp-min-hours" value="0" />
<input type="hidden" id="hp-strike-interval" value="0" /> <input type="hidden" id="hp-strike-interval" value="0" />
<input type="hidden" id="hp-opt-leverage" value="0" /> <input type="hidden" id="hp-opt-leverage" value="0" />
@@ -106,10 +106,10 @@
</div> </div>
</div> </div>
</div> </div>
<!-- 右:市价下单参数(无选约条件;条件单另议) --> <!-- 右:手动下单参数(无选约条件;条件单另议;开仓按盘口卖一限价,非交易所市价单) -->
<div class="card hp-po-right-card hp-po-order-card"> <div class="card hp-po-right-card hp-po-order-card">
<h2> <h2>
<span id="hp-po-mode-badge" class="hp-po-mode-badge">市价下单</span> <span id="hp-po-mode-badge" class="hp-po-mode-badge">手动下单</span>
<span id="hp-po-card-title">下单</span> <span id="hp-po-card-title">下单</span>
· <span id="hp-perp-uly-label">ETH</span> · <span id="hp-perp-uly-label">ETH</span>
<span class="muted hp-acct-tag" id="hp-perp-acct-tag">合约账户</span> <span class="muted hp-acct-tag" id="hp-perp-acct-tag">合约账户</span>
@@ -117,7 +117,7 @@
<details class="tip-collapse hp-rule-collapse"> <details class="tip-collapse hp-rule-collapse">
<summary class="tip-collapse-summary">规则说明</summary> <summary class="tip-collapse-summary">规则说明</summary>
<div class="tip-collapse-body rule-tip"> <div class="tip-collapse-body rule-tip">
<p><strong>市价下单</strong>:左侧人工选约(同期权页:到期/Call·Put/实虚值),点「选择」后右侧下单;非条件盯盘。</p> <p><strong>手动下单</strong>:左侧人工选约(同期权页:到期/Call·Put/实虚值),点「选择」后右侧下单;开仓按<strong>卖一限价</strong>(非交易所市价单);非条件盯盘。</p>
<p><strong>组合</strong>:买 Call → 永续空;买 Put → 永续多。</p> <p><strong>组合</strong>:买 Call → 永续空;买 Put → 永续多。</p>
<p><strong>比例</strong>:期权:永续默认 <strong>2</strong>(期权名义 ÷ 比例 = 永续名义)。例:期权 1 BTC → 永续 0.5 BTC。</p> <p><strong>比例</strong>:期权:永续默认 <strong>2</strong>(期权名义 ÷ 比例 = 永续名义)。例:期权 1 BTC → 永续 0.5 BTC。</p>
</div> </div>
@@ -186,7 +186,7 @@
</div> </div>
<div class="form-row hp-action-row hp-po-action-row"> <div class="form-row hp-action-row hp-po-action-row">
<span id="hp-po-strategy-status" class="hp-po-strategy-status" aria-live="polite"></span> <span id="hp-po-strategy-status" class="hp-po-strategy-status" aria-live="polite"></span>
<button type="button" class="primary" id="hp-preview-btn" title="按左侧已选合约市价开仓(期权+永续)">市价下单</button> <button type="button" class="primary" id="hp-preview-btn" title="按左侧已选合约卖一限价开仓(期权+永续)">手动下单</button>
</div> </div>
</div> </div>
</div> </div>