fix: HL size 动态格式化(从 Meta 取 szDecimals)
- 新增 HyperLiquidTrade.GetSize(),从 HL Meta.Universe 获取 每个币的 SzDecimals 运行时格式化订单数量 - 替代硬编码的 exchange.GetHLSize() switch case - trader.go 中 placeOrder/placeOrderAt 两处调用切换为新方法 - 新增 TryEntry 价格<=0 检查,过滤异常数据
This commit is contained in:
@@ -488,6 +488,12 @@ func (t *Trader) TryEntry(opp *ArbOpportunity, store *PriceStore, notifier *Noti
|
||||
return false
|
||||
}
|
||||
|
||||
// Data quality: reject if either price is zero or negative (stale/fake data)
|
||||
if opp.BuyPrice <= 0 || opp.SellPrice <= 0 {
|
||||
log.Printf("[Trader] %s: skip entry (price=%v/%v <= 0), likely stale/delisted coin", opp.Coin, opp.BuyPrice, opp.SellPrice)
|
||||
return false
|
||||
}
|
||||
|
||||
t.mu.Lock()
|
||||
if t.shuttingDown {
|
||||
t.mu.Unlock()
|
||||
@@ -1159,7 +1165,7 @@ func (t *Trader) placeOrder(leg *PositionLeg, side string, store *PriceStore) (s
|
||||
}
|
||||
return "", fee
|
||||
} else {
|
||||
size := exchange.GetHLSize(leg.Coin, t.cfg.TradeAmountUSD, leg.EntryPrice)
|
||||
size := t.hyperliquid.GetSize(leg.Coin, t.cfg.TradeAmountUSD, leg.EntryPrice)
|
||||
resp, err := t.hyperliquid.PlaceMarketOrder(leg.Coin, side, size)
|
||||
if err != nil {
|
||||
return fmt.Sprintf("HL %s error: %v", side, err), 0
|
||||
@@ -1544,7 +1550,7 @@ func (t *Trader) placeOrderAt(leg *PositionLeg, side string, store *PriceStore,
|
||||
return fmt.Sprintf("BG %s error: %v", side, err)
|
||||
}
|
||||
} else {
|
||||
size := exchange.GetHLSize(leg.Coin, t.cfg.TradeAmountUSD, price)
|
||||
size := t.hyperliquid.GetSize(leg.Coin, t.cfg.TradeAmountUSD, price)
|
||||
_, err := t.hyperliquid.PlaceMarketOrder(leg.Coin, side, size)
|
||||
if err != nil {
|
||||
return fmt.Sprintf("HL %s error: %v", side, err)
|
||||
|
||||
Reference in New Issue
Block a user