diff --git a/trader/binance_futures.go b/trader/binance_futures.go index 8f8b5da4..9ba1acd6 100644 --- a/trader/binance_futures.go +++ b/trader/binance_futures.go @@ -298,7 +298,7 @@ func (t *FuturesTrader) OpenLong(symbol string, quantity float64, leverage int) // ✅ 检查格式化后的数量是否为 0(防止四舍五入导致的错误) quantityFloat, parseErr := strconv.ParseFloat(quantityStr, 64) if parseErr != nil || quantityFloat <= 0 { - return nil, fmt.Errorf("开倉數量過小,格式化後為 0 (原始: %.8f → 格式化: %s)。建議增加開倉金額或選擇價格更低的幣種", quantity, quantityStr) + return nil, fmt.Errorf("开仓数量过小,格式化后为 0 (原始: %.8f → 格式化: %s)。建议增加开仓金额或选择价格更低的币种", quantity, quantityStr) } // ✅ 检查最小名义价值(Binance 要求至少 10 USDT) @@ -352,7 +352,7 @@ func (t *FuturesTrader) OpenShort(symbol string, quantity float64, leverage int) // ✅ 检查格式化后的数量是否为 0(防止四舍五入导致的错误) quantityFloat, parseErr := strconv.ParseFloat(quantityStr, 64) if parseErr != nil || quantityFloat <= 0 { - return nil, fmt.Errorf("开倉數量過小,格式化後為 0 (原始: %.8f → 格式化: %s)。建議增加開倉金額或選擇價格更低的幣種", quantity, quantityStr) + return nil, fmt.Errorf("开仓数量过小,格式化后为 0 (原始: %.8f → 格式化: %s)。建议增加开仓金额或选择价格更低的币种", quantity, quantityStr) } // ✅ 检查最小名义价值(Binance 要求至少 10 USDT) diff --git a/trader/hyperliquid_trader.go b/trader/hyperliquid_trader.go index 078b2135..812581f2 100644 --- a/trader/hyperliquid_trader.go +++ b/trader/hyperliquid_trader.go @@ -170,15 +170,15 @@ func (t *HyperliquidTrader) GetBalance() (map[string]interface{}, error) { } } - // ✅ Step 5: 正確處理 Spot + Perpetuals 余额 - // 重要:Spot 只加到總資產,不加到可用餘額 - // 原因:Spot 和 Perpetuals 是獨立帳戶,需手動 ClassTransfer 才能轉帳 + // ✅ Step 5: 正确处理 Spot + Perpetuals 余额 + // 重要:Spot 只加到总资产,不加到可用余额 + // 原因:Spot 和 Perpetuals 是独立帐户,需手动 ClassTransfer 才能转账 totalWalletBalance := walletBalanceWithoutUnrealized + spotUSDCBalance - result["totalWalletBalance"] = totalWalletBalance // 總資產(Perp + Spot) - result["availableBalance"] = availableBalance // 可用餘額(僅 Perpetuals,不含 Spot) - result["totalUnrealizedProfit"] = totalUnrealizedPnl // 未實現盈虧(僅來自 Perpetuals) - result["spotBalance"] = spotUSDCBalance // Spot 現貨餘額(單獨返回) + result["totalWalletBalance"] = totalWalletBalance // 总资产(Perp + Spot) + result["availableBalance"] = availableBalance // 可用余额(仅 Perpetuals,不含 Spot) + result["totalUnrealizedProfit"] = totalUnrealizedPnl // 未实现盈亏(仅来自 Perpetuals) + result["spotBalance"] = spotUSDCBalance // Spot 现货余额(单独返回) log.Printf("✓ Hyperliquid 完整账户:") log.Printf(" • Spot 现货余额: %.2f USDC (需手动转账到 Perpetuals 才能开仓)", spotUSDCBalance) @@ -186,9 +186,9 @@ func (t *HyperliquidTrader) GetBalance() (map[string]interface{}, error) { accountValue, walletBalanceWithoutUnrealized, totalUnrealizedPnl) - log.Printf(" • Perpetuals 可用余额: %.2f USDC (可直接用於開倉)", availableBalance) + log.Printf(" • Perpetuals 可用余额: %.2f USDC (可直接用于开仓)", availableBalance) log.Printf(" • 保证金占用: %.2f USDC", totalMarginUsed) - log.Printf(" • 總資產 (Perp+Spot): %.2f USDC", totalWalletBalance) + log.Printf(" • 总资产 (Perp+Spot): %.2f USDC", totalWalletBalance) log.Printf(" ⭐ 总资产: %.2f USDC | Perp 可用: %.2f USDC | Spot 余额: %.2f USDC", totalWalletBalance, availableBalance, spotUSDCBalance)