diff --git a/src/strategy/maker-engine.ts b/src/strategy/maker-engine.ts index 2ffb022..3c59fbc 100644 --- a/src/strategy/maker-engine.ts +++ b/src/strategy/maker-engine.ts @@ -41,6 +41,7 @@ export interface MakerEngineSnapshot { topBid: number | null; topAsk: number | null; spread: number | null; + priceDecimals: number; position: PositionSnapshot; pnl: number; accountUnrealized: number; @@ -599,6 +600,7 @@ export class MakerEngine { topBid: topBid, topAsk: topAsk, spread, + priceDecimals: this.getPriceDecimals(), position, pnl, accountUnrealized: this.accountUnrealized, diff --git a/src/strategy/offset-maker-engine.ts b/src/strategy/offset-maker-engine.ts index dac22e0..e23284d 100644 --- a/src/strategy/offset-maker-engine.ts +++ b/src/strategy/offset-maker-engine.ts @@ -725,6 +725,7 @@ export class OffsetMakerEngine { topBid: topBid, topAsk: topAsk, spread, + priceDecimals: this.getPriceDecimals(), position, pnl, accountUnrealized: this.accountUnrealized, diff --git a/src/ui/MakerApp.tsx b/src/ui/MakerApp.tsx index 8ee81f1..b346d67 100644 --- a/src/ui/MakerApp.tsx +++ b/src/ui/MakerApp.tsx @@ -70,7 +70,10 @@ export function MakerApp({ onExit }: MakerAppProps) { const topBid = snapshot.topBid; const topAsk = snapshot.topAsk; - const spreadDisplay = snapshot.spread != null ? `${snapshot.spread.toFixed(4)} USDT` : "-"; + const priceDigits = snapshot.priceDecimals ?? 2; + const spreadDigits = Math.max(priceDigits + 1, 4); + const spreadDisplay = + snapshot.spread != null ? `${formatNumber(snapshot.spread, spreadDigits)} USDT` : "-"; const hasPosition = Math.abs(snapshot.position.positionAmt) > 1e-5; const sortedOrders = [...snapshot.openOrders].sort((a, b) => (Number(b.updateTime ?? 0) - Number(a.updateTime ?? 0)) || Number(b.orderId) - Number(a.orderId)); const openOrderRows = sortedOrders.slice(0, 8).map((order) => ({ @@ -121,7 +124,7 @@ export function MakerApp({ onExit }: MakerAppProps) { Maker Strategy Dashboard - 交易所: {exchangeName} | 交易对: {snapshot.symbol} | 买一价: {formatNumber(topBid, 2)} | 卖一价: {formatNumber(topAsk, 2)} | 点差: {spreadDisplay} + 交易所: {exchangeName} | 交易对: {snapshot.symbol} | 买一价: {formatNumber(topBid, priceDigits)} | 卖一价: {formatNumber(topAsk, priceDigits)} | 点差: {spreadDisplay} 状态: {snapshot.ready ? "实时运行" : "等待市场数据"} | 按 Esc 返回策略选择 @@ -141,7 +144,7 @@ export function MakerApp({ onExit }: MakerAppProps) { {hasPosition ? ( <> - 方向: {snapshot.position.positionAmt > 0 ? "多" : "空"} | 数量: {formatNumber(Math.abs(snapshot.position.positionAmt), 4)} | 开仓价: {formatNumber(snapshot.position.entryPrice, 2)} + 方向: {snapshot.position.positionAmt > 0 ? "多" : "空"} | 数量: {formatNumber(Math.abs(snapshot.position.positionAmt), 4)} | 开仓价: {formatNumber(snapshot.position.entryPrice, priceDigits)} 浮动盈亏: {formatNumber(snapshot.pnl, 4)} USDT | 账户未实现盈亏: {formatNumber(snapshot.accountUnrealized, 4)} USDT diff --git a/src/ui/OffsetMakerApp.tsx b/src/ui/OffsetMakerApp.tsx index db73616..0a67f69 100644 --- a/src/ui/OffsetMakerApp.tsx +++ b/src/ui/OffsetMakerApp.tsx @@ -70,7 +70,10 @@ export function OffsetMakerApp({ onExit }: OffsetMakerAppProps) { const topBid = snapshot.topBid; const topAsk = snapshot.topAsk; - const spreadDisplay = snapshot.spread != null ? `${snapshot.spread.toFixed(4)} USDT` : "-"; + const priceDigits = snapshot.priceDecimals ?? 2; + const spreadDigits = Math.max(priceDigits + 1, 4); + const spreadDisplay = + snapshot.spread != null ? `${formatNumber(snapshot.spread, spreadDigits)} USDT` : "-"; const hasPosition = Math.abs(snapshot.position.positionAmt) > 1e-5; const sortedOrders = [...snapshot.openOrders].sort((a, b) => (Number(b.updateTime ?? 0) - Number(a.updateTime ?? 0)) || Number(b.orderId) - Number(a.orderId) @@ -121,7 +124,7 @@ export function OffsetMakerApp({ onExit }: OffsetMakerAppProps) { Offset Maker Strategy Dashboard - 交易所: {exchangeName} | 交易对: {snapshot.symbol} | 买一价: {formatNumber(topBid, 2)} | 卖一价: {formatNumber(topAsk, 2)} | 点差: {spreadDisplay} + 交易所: {exchangeName} | 交易对: {snapshot.symbol} | 买一价: {formatNumber(topBid, priceDigits)} | 卖一价: {formatNumber(topAsk, priceDigits)} | 点差: {spreadDisplay} 买10档累计: {formatNumber(snapshot.buyDepthSum10, 4)} | 卖10档累计: {formatNumber(snapshot.sellDepthSum10, 4)} | 状态: {imbalanceLabel} @@ -138,7 +141,7 @@ export function OffsetMakerApp({ onExit }: OffsetMakerAppProps) { {hasPosition ? ( <> - 方向: {snapshot.position.positionAmt > 0 ? "多" : "空"} | 数量: {formatNumber(Math.abs(snapshot.position.positionAmt), 4)} | 开仓价: {formatNumber(snapshot.position.entryPrice, 2)} + 方向: {snapshot.position.positionAmt > 0 ? "多" : "空"} | 数量: {formatNumber(Math.abs(snapshot.position.positionAmt), 4)} | 开仓价: {formatNumber(snapshot.position.entryPrice, priceDigits)} 浮动盈亏: {formatNumber(snapshot.pnl, 4)} USDT | 账户未实现盈亏: {formatNumber(snapshot.accountUnrealized, 4)} USDT