Add Binance SIM market adapter and exchange switch in settings.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -124,7 +124,9 @@ export default function PlanPage() {
|
||||
<div>
|
||||
<h2 style={{ marginTop: 0 }}>自动对冲计划</h2>
|
||||
<p style={{ color: "var(--muted)", marginTop: -8 }}>
|
||||
SIM 本地撮合 · 期权只买 · 净盈利达标或到期全平
|
||||
SIM 本地撮合 · 行情{" "}
|
||||
{(snap?.exchange || "okx").toUpperCase()}
|
||||
{snap?.perp_inst_id ? ` · ${snap.perp_inst_id}` : ""} · 净盈利达标或到期全平
|
||||
</p>
|
||||
{err ? <div className="err">{err}</div> : null}
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ export default function SettingsPage() {
|
||||
const [perpQty, setPerpQty] = useState(1);
|
||||
const [optQty, setOptQty] = useState(2);
|
||||
const [initialEquity, setInitialEquity] = useState(10000);
|
||||
const [exchange, setExchange] = useState<"okx" | "binance">("okx");
|
||||
const [stratOk, setStratOk] = useState("");
|
||||
|
||||
useEffect(() => {
|
||||
@@ -53,6 +54,7 @@ export default function SettingsPage() {
|
||||
setPerpQty(s.perp_qty_eth ?? 1);
|
||||
setOptQty(s.option_qty_eth ?? 2);
|
||||
setInitialEquity(s.initial_equity ?? 10000);
|
||||
setExchange(s.exchange === "binance" ? "binance" : "okx");
|
||||
})
|
||||
.catch(() => undefined);
|
||||
}, []);
|
||||
@@ -109,10 +111,11 @@ export default function SettingsPage() {
|
||||
perp_qty_eth: perpQty,
|
||||
option_qty_eth: optQty,
|
||||
initial_equity: initialEquity,
|
||||
exchange,
|
||||
}),
|
||||
});
|
||||
setStratOk(
|
||||
"策略参数已保存(模拟资金仅在数值变更且无持仓时重置账本)",
|
||||
"策略参数已保存(切换交易所/改模拟资金需无持仓;切换后会重连行情)",
|
||||
);
|
||||
} catch (ex) {
|
||||
setErr(ex instanceof Error ? ex.message : String(ex));
|
||||
@@ -142,11 +145,34 @@ export default function SettingsPage() {
|
||||
{tab === "strategy" ? (
|
||||
<div className="card settings-card">
|
||||
<p className="settings-lead">
|
||||
无开仓时间窗;可选周六日跳过开仓;期权按剩余时长选到期 → 平值 → 校验杠杆;出场可选固定金额或权利金倍数。
|
||||
无开仓时间窗;可切换 OKX / 币安行情(SIM 本地撮合);周六日可跳过开仓;出场按净盈利或到期全平。
|
||||
</p>
|
||||
{stratOk ? <div className="settings-ok">{stratOk}</div> : null}
|
||||
{err && tab === "strategy" ? <div className="err">{err}</div> : null}
|
||||
<form onSubmit={onSaveStrategy}>
|
||||
<section className="settings-section">
|
||||
<h3>交易所</h3>
|
||||
<div className="settings-fields">
|
||||
<div className="field">
|
||||
<label htmlFor="exch">行情交易所(SIM 只读)</label>
|
||||
<select
|
||||
id="exch"
|
||||
className="mono"
|
||||
value={exchange}
|
||||
onChange={(e) =>
|
||||
setExchange(e.target.value === "binance" ? "binance" : "okx")
|
||||
}
|
||||
>
|
||||
<option value="okx">OKX(USDC 期权族)</option>
|
||||
<option value="binance">币安(USDT 永续 + 欧洲期权)</option>
|
||||
</select>
|
||||
<p className="settings-hint">
|
||||
有持仓时不可切换。切换后自动套用该所合约并重连公共行情。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="settings-section">
|
||||
<h3>资金</h3>
|
||||
<div className="settings-fields">
|
||||
|
||||
Reference in New Issue
Block a user