package bitgetservice import ( log "github.com/go-admin-team/go-admin-core/logger" ) // ExampleBitgetMarketClient 展示如何使用Bitget公开行情客户端 func ExampleBitgetMarketClient() { // 1. 创建Bitget客户端(不需要API密钥用于公开数据) client := &BitgetClient{} // 初始化公开行情客户端 marketConfig := DefaultMarketConfig() client.marketClient = NewBitgetMarketClient(marketConfig) // 2. 设置代理(可选) // client.SetMarketProxy("socks5", "127.0.0.1:1080") // 3. 设置消息监听器 msgListener := func(message string) { log.Info("收到市场数据: %s", message) // 在这里处理市场数据 } errorListener := func(message string) { log.Error("收到错误消息: %s", message) } client.SetMarketListeners(msgListener, errorListener) // 4. 连接WebSocket if err := client.ConnectMarketData(); err != nil { log.Error("连接市场数据失败: %v", err) return } // 5. 订阅现货行情 tickerListener := func(message string) { log.Info("收到BTC-USDT行情: %s", message) } if err := client.SubscribeSpotTicker("BTCUSDT", tickerListener); err != nil { log.Error("订阅现货行情失败: %v", err) return } // 6. 订阅深度数据 depthListener := func(message string) { log.Info("收到BTC-USDT深度: %s", message) } if err := client.SubscribeSpotDepth("BTCUSDT", depthListener); err != nil { log.Error("订阅深度数据失败: %v", err) return } // 7. 订阅成交数据 tradeListener := func(message string) { log.Info("收到BTC-USDT成交: %s", message) } if err := client.SubscribeSpotTrades("BTCUSDT", tradeListener); err != nil { log.Error("订阅成交数据失败: %v", err) return } // 8. 订阅K线数据 klineListener := func(message string) { log.Info("收到BTC-USDT K线: %s", message) } if err := client.SubscribeKline("BTCUSDT", "1m", klineListener); err != nil { log.Error("订阅K线数据失败: %v", err) return } log.Info("所有订阅完成,开始接收数据...") // 保持连接(在实际应用中,你可能需要其他方式来保持程序运行) // select {} } // ExampleBitgetPrivateWebSocket 展示如何使用私有WebSocket(订单、持仓等) func ExampleBitgetPrivateWebSocket() { // 私有数据订阅仍然使用 BitgetWebSocketManager // apiKey := "your_api_key" // secretKey := "your_secret_key" // passphrase := "your_passphrase" // // 创建私有WebSocket管理器 // manager := GetOrCreateBitgetWebSocketManager(apiKey, secretKey, passphrase, "spot") // // 启动连接 // if err := manager.Start(); err != nil { // log.Error("启动私有WebSocket连接失败: %v", err) // return // } // log.Info("私有WebSocket连接成功,可以接收订单、持仓等私有数据") } // ExampleMixedUsage 展示混合使用公开和私有订阅 func ExampleMixedUsage() { // apiKey := "your_api_key" // secretKey := "your_secret_key" // passphrase := "your_passphrase" // // 1. 创建完整的Bitget客户端 // client, err := NewBitgetClient(apiKey, secretKey, passphrase) // if err != nil { // log.Error("创建Bitget客户端失败: %v", err) // return // } // // 2. 设置公开行情监听器 // client.SetMarketListeners( // func(message string) { // log.Info("公开行情数据: %s", message) // }, // func(message string) { // log.Error("公开行情错误: %s", message) // }, // ) // // 3. 连接公开行情 // if err := client.ConnectMarketData(); err != nil { // log.Error("连接公开行情失败: %v", err) // return // } // // 4. 订阅公开行情 // if err := client.SubscribeSpotTicker("BTCUSDT", func(message string) { // log.Info("BTC行情: %s", message) // }); err != nil { // log.Error("订阅行情失败: %v", err) // return // } // // 5. 同时使用私有WebSocket(如果需要) // privateManager, err := GetOrCreateBitgetWebSocketManager(apiKey, secretKey, passphrase, "spot") // if err != nil { // log.Error("创建私有WebSocket失败: %v", err) // return // } // if err := privateManager.Start(); err != nil { // log.Error("启动私有WebSocket失败: %v", err) // return // } // log.Info("混合使用设置完成:公开行情 + 私有数据") } // ExampleSubscribeMultipleSymbols 展示如何订阅多个交易对 func ExampleSubscribeMultipleSymbols() { client := &BitgetClient{} marketConfig := DefaultMarketConfig() client.marketClient = NewBitgetMarketClient(marketConfig) // 连接 if err := client.ConnectMarketData(); err != nil { log.Error("连接失败: %v", err) return } // 批量订阅多个交易对的行情 symbols := []string{"BTCUSDT", "ETHUSDT", "ADAUSDT", "DOTUSDT"} for _, symbol := range symbols { listener := func(sym string) OnReceive { return func(message string) { log.Info("%s 行情更新: %s", sym, message) } }(symbol) if err := client.SubscribeSpotTicker(symbol, listener); err != nil { log.Error("订阅 %s 行情失败: %v", symbol, err) } else { log.Info("成功订阅 %s 行情", symbol) } } log.Info("批量订阅完成") } // ExampleCustomSubscription 展示如何使用自定义订阅 func ExampleCustomSubscription() { client := &BitgetClient{} marketConfig := DefaultMarketConfig() client.marketClient = NewBitgetMarketClient(marketConfig) if err := client.ConnectMarketData(); err != nil { log.Error("连接失败: %v", err) return } // 自定义订阅请求 customSubscriptions := []SubscribeReq{ { InstType: "SPOT", Channel: "ticker", InstId: "BTCUSDT", }, { InstType: "SPOT", Channel: "books", InstId: "ETHUSDT", }, { InstType: "UMCBL", // 合约 Channel: "ticker", InstId: "BTCUSDT", }, } // 统一的消息处理器 messageHandler := func(message string) { log.Info("自定义订阅数据: %s", message) // 在这里根据消息内容进行不同的处理 } // 批量订阅 if err := client.SubscribeMarketData(customSubscriptions, messageHandler); err != nil { log.Error("自定义订阅失败: %v", err) return } log.Info("自定义订阅完成") }