mirror of
https://github.com/NoFxAiOS/nofx.git
synced 2026-07-03 19:11:02 +08:00
Fix/binance server time (#453)
* Fix Binance futures server time sync * Fix Binance server time sync; clean up logging and restore decision sorting --------- Co-authored-by: tinkle-community <tinklefund@gmail.com>
This commit is contained in:
@@ -436,7 +436,7 @@ func (at *AutoTrader) runCycle() error {
|
||||
})
|
||||
}
|
||||
|
||||
// 保存候选币种列表
|
||||
log.Print(strings.Repeat("=", 70))
|
||||
for _, coin := range ctx.CandidateCoins {
|
||||
record.CandidateCoins = append(record.CandidateCoins, coin.Symbol)
|
||||
}
|
||||
@@ -465,7 +465,6 @@ func (at *AutoTrader) runCycle() error {
|
||||
|
||||
// 打印系统提示词和AI思维链(即使有错误,也要输出以便调试)
|
||||
if decision != nil {
|
||||
if decision.SystemPrompt != "" {
|
||||
log.Print("\n" + strings.Repeat("=", 70) + "\n")
|
||||
log.Printf("📋 系统提示词 [模板: %s] (错误情况)", at.systemPromptTemplate)
|
||||
log.Println(strings.Repeat("=", 70))
|
||||
@@ -510,6 +509,9 @@ func (at *AutoTrader) runCycle() error {
|
||||
// }
|
||||
// }
|
||||
log.Println()
|
||||
log.Print(strings.Repeat("-", 70))
|
||||
// 8. 对决策排序:确保先平仓后开仓(防止仓位叠加超限)
|
||||
log.Print(strings.Repeat("-", 70))
|
||||
|
||||
// 8. 对决策排序:确保先平仓后开仓(防止仓位叠加超限)
|
||||
sortedDecisions := sortDecisionsByPriority(decision.Decisions)
|
||||
|
||||
@@ -33,6 +33,8 @@ type FuturesTrader struct {
|
||||
// NewFuturesTrader 创建合约交易器
|
||||
func NewFuturesTrader(apiKey, secretKey string) *FuturesTrader {
|
||||
client := futures.NewClient(apiKey, secretKey)
|
||||
// 同步时间,避免 Timestamp ahead 错误
|
||||
syncBinanceServerTime(client)
|
||||
trader := &FuturesTrader{
|
||||
client: client,
|
||||
cacheDuration: 15 * time.Second, // 15秒缓存
|
||||
@@ -69,6 +71,20 @@ func (t *FuturesTrader) setDualSidePosition() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// syncBinanceServerTime 同步币安服务器时间,确保请求时间戳合法
|
||||
func syncBinanceServerTime(client *futures.Client) {
|
||||
serverTime, err := client.NewServerTimeService().Do(context.Background())
|
||||
if err != nil {
|
||||
log.Printf("⚠️ 同步币安服务器时间失败: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
now := time.Now().UnixMilli()
|
||||
offset := now - serverTime
|
||||
client.TimeOffset = offset
|
||||
log.Printf("⏱ 已同步币安服务器时间,偏移 %dms", offset)
|
||||
}
|
||||
|
||||
// GetBalance 获取账户余额(带缓存)
|
||||
func (t *FuturesTrader) GetBalance() (map[string]interface{}, error) {
|
||||
// 先检查缓存是否有效
|
||||
|
||||
Reference in New Issue
Block a user