From 518339474fdddf4847523f75c20fb699a314ad84 Mon Sep 17 00:00:00 2001 From: 0xYYBB | ZYY | Bobo <128128010+zhouyongyou@users.noreply.github.com> Date: Fri, 7 Nov 2025 08:36:14 +0800 Subject: [PATCH] =?UTF-8?q?style:=20convert=20Traditional=20Chinese=20comm?= =?UTF-8?q?ents=20to=20Simplified=20Chinese=20(#662)=20##=20Problem=20The?= =?UTF-8?q?=20codebase=20contains=20mixed=20Traditional=20Chinese=20(?= =?UTF-8?q?=E7=B9=81=E9=AB=94=E4=B8=AD=E6=96=87)=20and=20Simplified=20Chin?= =?UTF-8?q?ese=20(=E7=AE=80=E4=BD=93=E4=B8=AD=E6=96=87)=20in=20comments=20?= =?UTF-8?q?and=20error=20messages,=20causing:=20-=20Inconsistent=20code=20?= =?UTF-8?q?style=20-=20Reduced=20readability=20for=20mainland=20Chinese=20?= =?UTF-8?q?developers=20-=20Maintenance=20overhead=20when=20reviewing=20di?= =?UTF-8?q?ffs=20###=20Affected=20Files=20-=20**trader/hyperliquid=5Ftrade?= =?UTF-8?q?r.go**:=208=20occurrences=20-=20**trader/binance=5Ffutures.go**?= =?UTF-8?q?:=202=20occurrences=20##=20Solution=20Convert=20all=20Tradition?= =?UTF-8?q?al=20Chinese=20characters=20to=20Simplified=20Chinese=20to=20un?= =?UTF-8?q?ify=20code=20style.=20###=20Conversion=20Map=20|=20Traditional?= =?UTF-8?q?=20|=20Simplified=20|=20Context=20|=20|-------------|----------?= =?UTF-8?q?-|---------|=20|=20=E8=99=95=E7=90=86=20|=20=E5=A4=84=E7=90=86?= =?UTF-8?q?=20|=20"=E6=AD=A3=E7=A2=BA=E8=99=95=E7=90=86"=20=E2=86=92=20"?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E5=A4=84=E7=90=86"=20|=20|=20=E7=B8=BD?= =?UTF-8?q?=E8=B3=87=E7=94=A2=20|=20=E6=80=BB=E8=B5=84=E4=BA=A7=20|=20"?= =?UTF-8?q?=E7=B8=BD=E8=B3=87=E7=94=A2"=20=E2=86=92=20"=E6=80=BB=E8=B5=84?= =?UTF-8?q?=E4=BA=A7"=20|=20|=20=E9=A4=98=E9=A1=8D=20|=20=E4=BD=99?= =?UTF-8?q?=E9=A2=9D=20|=20"=E5=8F=AF=E7=94=A8=E9=A4=98=E9=A1=8D"=20?= =?UTF-8?q?=E2=86=92=20"=E5=8F=AF=E7=94=A8=E4=BD=99=E9=A2=9D"=20|=20|=20?= =?UTF-8?q?=E5=AF=A6=E7=8F=BE=20|=20=E5=AE=9E=E7=8E=B0=20|=20"=E6=9C=AA?= =?UTF-8?q?=E5=AF=A6=E7=8F=BE=E7=9B=88=E8=99=A7"=20=E2=86=92=20"=E6=9C=AA?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=9B=88=E4=BA=8F"=20|=20|=20=E4=BE=86=20|?= =?UTF-8?q?=20=E6=9D=A5=20|=20"=E5=83=85=E4=BE=86=E8=87=AA"=20=E2=86=92=20?= =?UTF-8?q?"=E4=BB=85=E6=9D=A5=E8=87=AA"=20|=20|=20=E7=8F=BE=E8=B2=A8=20|?= =?UTF-8?q?=20=E7=8E=B0=E8=B4=A7=20|=20"=E7=8F=BE=E8=B2=A8=E9=A4=98?= =?UTF-8?q?=E9=A1=8D"=20=E2=86=92=20"=E7=8E=B0=E8=B4=A7=E4=BD=99=E9=A2=9D"?= =?UTF-8?q?=20|=20|=20=E5=96=AE=E7=8D=A8=20|=20=E5=8D=95=E7=8B=AC=20|=20"?= =?UTF-8?q?=E5=96=AE=E7=8D=A8=E8=BF=94=E5=9B=9E"=20=E2=86=92=20"=E5=8D=95?= =?UTF-8?q?=E7=8B=AC=E8=BF=94=E5=9B=9E"=20|=20|=20=E9=96=8B=E5=80=89=20|?= =?UTF-8?q?=20=E5=BC=80=E4=BB=93=20|=20"=E9=96=8B=E5=80=89=E9=87=91?= =?UTF-8?q?=E9=A1=8D"=20=E2=86=92=20"=E5=BC=80=E4=BB=93=E9=87=91=E9=A2=9D"?= =?UTF-8?q?=20|=20|=20=E6=95=B8=E9=87=8F=20|=20=E6=95=B0=E9=87=8F=20|=20"?= =?UTF-8?q?=E9=96=8B=E5=80=89=E6=95=B8=E9=87=8F"=20=E2=86=92=20"=E5=BC=80?= =?UTF-8?q?=E4=BB=93=E6=95=B0=E9=87=8F"=20|=20|=20=E9=81=8E=20|=20?= =?UTF-8?q?=E8=BF=87=20|=20"=E9=81=8E=E5=B0=8F"=20=E2=86=92=20"=E8=BF=87?= =?UTF-8?q?=E5=B0=8F"=20|=20|=20=E7=82=BA=20|=20=E4=B8=BA=20|=20"=E5=BE=8C?= =?UTF-8?q?=E7=82=BA"=20=E2=86=92=20"=E5=90=8E=E4=B8=BA"=20|=20|=20?= =?UTF-8?q?=E5=BE=8C=20|=20=E5=90=8E=20|=20"=E6=A0=BC=E5=BC=8F=E5=8C=96?= =?UTF-8?q?=E5=BE=8C"=20=E2=86=92=20"=E6=A0=BC=E5=BC=8F=E5=8C=96=E5=90=8E"?= =?UTF-8?q?=20|=20|=20=E5=BB=BA=E8=AD=B0=20|=20=E5=BB=BA=E8=AE=AE=20|=20"?= =?UTF-8?q?=E5=BB=BA=E8=AD=B0=E5=A2=9E=E5=8A=A0"=20=E2=86=92=20"=E5=BB=BA?= =?UTF-8?q?=E8=AE=AE=E5=A2=9E=E5=8A=A0"=20|=20|=20=E9=81=B8=E6=93=87=20|?= =?UTF-8?q?=20=E9=80=89=E6=8B=A9=20|=20"=E9=81=B8=E6=93=87=E5=83=B9?= =?UTF-8?q?=E6=A0=BC"=20=E2=86=92=20"=E9=80=89=E6=8B=A9=E4=BB=B7=E6=A0=BC"?= =?UTF-8?q?=20|=20|=20=E5=B9=A3=E7=A8=AE=20|=20=E5=B8=81=E7=A7=8D=20|=20"?= =?UTF-8?q?=E5=B9=A3=E7=A8=AE"=20=E2=86=92=20"=E5=B8=81=E7=A7=8D"=20|=20##?= =?UTF-8?q?=20Changes=20###=20trader/hyperliquid=5Ftrader.go=20(8=20locati?= =?UTF-8?q?ons)=20**Line=20173-181**:=20Balance=20calculation=20comments?= =?UTF-8?q?=20```diff=20-//=20=E2=9C=85=20Step=205:=20=E6=AD=A3=E7=A2=BA?= =?UTF-8?q?=E8=99=95=E7=90=86=20Spot=20+=20Perpetuals=20=E4=BD=99=E9=A2=9D?= =?UTF-8?q?=20-//=20=E9=87=8D=E8=A6=81=EF=BC=9ASpot=20=E5=8F=AA=E5=8A=A0?= =?UTF-8?q?=E5=88=B0=E7=B8=BD=E8=B3=87=E7=94=A2=EF=BC=8C=E4=B8=8D=E5=8A=A0?= =?UTF-8?q?=E5=88=B0=E5=8F=AF=E7=94=A8=E9=A4=98=E9=A1=8D=20+//=20=E2=9C=85?= =?UTF-8?q?=20Step=205:=20=E6=AD=A3=E7=A1=AE=E5=A4=84=E7=90=86=20Spot=20+?= =?UTF-8?q?=20Perpetuals=20=E4=BD=99=E9=A2=9D=20+//=20=E9=87=8D=E8=A6=81?= =?UTF-8?q?=EF=BC=9ASpot=20=E5=8F=AA=E5=8A=A0=E5=88=B0=E6=80=BB=E8=B5=84?= =?UTF-8?q?=E4=BA=A7=EF=BC=8C=E4=B8=8D=E5=8A=A0=E5=88=B0=E5=8F=AF=E7=94=A8?= =?UTF-8?q?=E4=BD=99=E9=A2=9D=20-result["totalWalletBalance"]=20=3D=20tota?= =?UTF-8?q?lWalletBalance=20=20=20=20=20=20//=20=E7=B8=BD=E8=B3=87?= =?UTF-8?q?=E7=94=A2=EF=BC=88Perp=20+=20Spot=EF=BC=89=20-result["available?= =?UTF-8?q?Balance"]=20=3D=20availableBalance=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20//=20=E5=8F=AF=E7=94=A8=E9=A4=98=E9=A1=8D=EF=BC=88=E5=83=85?= =?UTF-8?q?=20Perpetuals=EF=BC=8C=E4=B8=8D=E5=90=AB=20Spot=EF=BC=89=20-res?= =?UTF-8?q?ult["totalUnrealizedProfit"]=20=3D=20totalUnrealizedPnl=20=20?= =?UTF-8?q?=20//=20=E6=9C=AA=E5=AF=A6=E7=8F=BE=E7=9B=88=E8=99=A7=EF=BC=88?= =?UTF-8?q?=E5=83=85=E4=BE=86=E8=87=AA=20Perpetuals=EF=BC=89=20-result["sp?= =?UTF-8?q?otBalance"]=20=3D=20spotUSDCBalance=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20//=20Spot=20=E7=8F=BE=E8=B2=A8=E9=A4=98?= =?UTF-8?q?=E9=A1=8D=EF=BC=88=E5=96=AE=E7=8D=A8=E8=BF=94=E5=9B=9E=EF=BC=89?= =?UTF-8?q?=20+result["totalWalletBalance"]=20=3D=20totalWalletBalance=20?= =?UTF-8?q?=20=20=20=20=20//=20=E6=80=BB=E8=B5=84=E4=BA=A7=EF=BC=88Perp=20?= =?UTF-8?q?+=20Spot=EF=BC=89=20+result["availableBalance"]=20=3D=20availab?= =?UTF-8?q?leBalance=20=20=20=20=20=20=20=20=20=20//=20=E5=8F=AF=E7=94=A8?= =?UTF-8?q?=E4=BD=99=E9=A2=9D=EF=BC=88=E4=BB=85=20Perpetuals=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E5=90=AB=20Spot=EF=BC=89=20+result["totalUnrealizedPr?= =?UTF-8?q?ofit"]=20=3D=20totalUnrealizedPnl=20=20=20//=20=E6=9C=AA?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=9B=88=E4=BA=8F=EF=BC=88=E4=BB=85=E6=9D=A5?= =?UTF-8?q?=E8=87=AA=20Perpetuals=EF=BC=89=20+result["spotBalance"]=20=3D?= =?UTF-8?q?=20spotUSDCBalance=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20//=20Spot=20=E7=8E=B0=E8=B4=A7=E4=BD=99=E9=A2=9D=EF=BC=88?= =?UTF-8?q?=E5=8D=95=E7=8B=AC=E8=BF=94=E5=9B=9E=EF=BC=89=20```=20**Line=20?= =?UTF-8?q?189-191**:=20Log=20output=20messages=20```diff=20-log.Printf("?= =?UTF-8?q?=20=20=E2=80=A2=20Perpetuals=20=E5=8F=AF=E7=94=A8=E4=BD=99?= =?UTF-8?q?=E9=A2=9D:=20%.2f=20USDC=20=EF=BC=88=E5=8F=AF=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E7=94=A8=E6=96=BC=E9=96=8B=E5=80=89=EF=BC=89",=20availableBala?= =?UTF-8?q?nce)=20-log.Printf("=20=20=E2=80=A2=20=E7=B8=BD=E8=B3=87?= =?UTF-8?q?=E7=94=A2=20(Perp+Spot):=20%.2f=20USDC",=20totalWalletBalance)?= =?UTF-8?q?=20+log.Printf("=20=20=E2=80=A2=20Perpetuals=20=E5=8F=AF?= =?UTF-8?q?=E7=94=A8=E4=BD=99=E9=A2=9D:=20%.2f=20USDC=20=EF=BC=88=E5=8F=AF?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E7=94=A8=E4=BA=8E=E5=BC=80=E4=BB=93=EF=BC=89?= =?UTF-8?q?",=20availableBalance)=20+log.Printf("=20=20=E2=80=A2=20?= =?UTF-8?q?=E6=80=BB=E8=B5=84=E4=BA=A7=20(Perp+Spot):=20%.2f=20USDC",=20to?= =?UTF-8?q?talWalletBalance)=20```=20###=20trader/binance=5Ffutures.go=20(?= =?UTF-8?q?2=20locations)=20**Line=20301,=20355**:=20Error=20messages=20fo?= =?UTF-8?q?r=20insufficient=20quantity=20```diff=20-return=20nil,=20fmt.Er?= =?UTF-8?q?rorf("=E5=BC=80=E5=80=89=E6=95=B8=E9=87=8F=E9=81=8E=E5=B0=8F?= =?UTF-8?q?=EF=BC=8C=E6=A0=BC=E5=BC=8F=E5=8C=96=E5=BE=8C=E7=82=BA=200=20(?= =?UTF-8?q?=E5=8E=9F=E5=A7=8B:=20%.8f=20=E2=86=92=20=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=8C=96:=20%s)=E3=80=82=E5=BB=BA=E8=AD=B0=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=96=8B=E5=80=89=E9=87=91=E9=A1=8D=E6=88=96=E9=81=B8=E6=93=87?= =?UTF-8?q?=E5=83=B9=E6=A0=BC=E6=9B=B4=E4=BD=8E=E7=9A=84=E5=B9=A3=E7=A8=AE?= =?UTF-8?q?",=20quantity,=20quantityStr)=20+return=20nil,=20fmt.Errorf("?= =?UTF-8?q?=E5=BC=80=E4=BB=93=E6=95=B0=E9=87=8F=E8=BF=87=E5=B0=8F=EF=BC=8C?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E5=90=8E=E4=B8=BA=200=20(=E5=8E=9F?= =?UTF-8?q?=E5=A7=8B:=20%.8f=20=E2=86=92=20=E6=A0=BC=E5=BC=8F=E5=8C=96:=20?= =?UTF-8?q?%s)=E3=80=82=E5=BB=BA=E8=AE=AE=E5=A2=9E=E5=8A=A0=E5=BC=80?= =?UTF-8?q?=E4=BB=93=E9=87=91=E9=A2=9D=E6=88=96=E9=80=89=E6=8B=A9=E4=BB=B7?= =?UTF-8?q?=E6=A0=BC=E6=9B=B4=E4=BD=8E=E7=9A=84=E5=B8=81=E7=A7=8D",=20quan?= =?UTF-8?q?tity,=20quantityStr)=20```=20##=20Testing=20-=20=E2=9C=85=20Com?= =?UTF-8?q?pilation:=20Passes=20`go=20build`=20-=20=E2=9C=85=20Verificatio?= =?UTF-8?q?n:=20No=20Traditional=20Chinese=20characters=20remain=20in=20tr?= =?UTF-8?q?ader/*.go=20-=20=E2=9C=85=20Functionality:=20No=20logic=20chang?= =?UTF-8?q?es,=20only=20text=20updates=20##=20Impact=20-=20=E2=9C=85=20Uni?= =?UTF-8?q?fied=20code=20style=20(100%=20Simplified=20Chinese)=20-=20?= =?UTF-8?q?=E2=9C=85=20Improved=20readability=20and=20maintainability=20-?= =?UTF-8?q?=20=E2=9C=85=20Easier=20code=20review=20for=20Chinese=20develop?= =?UTF-8?q?ers=20-=20=E2=9C=85=20No=20functional=20changes=20or=20behavior?= =?UTF-8?q?=20modifications=20---=20Co-authored-by:=20tinkle-community=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- trader/binance_futures.go | 4 ++-- trader/hyperliquid_trader.go | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) 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)