package bitgetservice import "time" // SubscribeReq 订阅请求结构(基于官方SDK) type SubscribeReq struct { InstType string `json:"instType"` // 产品类型:SPOT-现货,UMCBL-U本位合约,DMCBL-币本位合约 Channel string `json:"channel"` // 频道名称 InstId string `json:"instId"` // 产品ID // Coin string `json:"coin"` // 币种(可选) } // WsBaseReq WebSocket基础请求结构 type WsBaseReq struct { Op string `json:"op"` // 操作类型:subscribe, unsubscribe, login Args []interface{} `json:"args"` // 参数列表 } // WsLoginReq WebSocket登录请求 type WsLoginReq struct { ApiKey string `json:"apiKey"` Passphrase string `json:"passphrase"` Timestamp string `json:"timestamp"` Sign string `json:"sign"` } // OnReceive 消息接收回调函数类型 type OnReceive func(message string) // Set 集合数据结构(简化实现) type Set struct { items map[SubscribeReq]bool } // NewSet 创建新的集合 func NewSet() *Set { return &Set{ items: make(map[SubscribeReq]bool), } } // Add 添加元素到集合 func (s *Set) Add(item SubscribeReq) { s.items[item] = true } // Remove 从集合中移除元素 func (s *Set) Remove(item SubscribeReq) { delete(s.items, item) } // Contains 检查集合是否包含元素 func (s *Set) Contains(item SubscribeReq) bool { _, exists := s.items[item] return exists } // BitgetMarketData 市场数据基础结构 type BitgetMarketData struct { Action string `json:"action"` // 推送类型 Arg SubscribeReq `json:"arg"` // 订阅参数 Data interface{} `json:"data"` // 数据内容 Ts int64 `json:"ts"` // 时间戳 } // TickerData 行情数据 type TickerData struct { InstId string `json:"instId"` // 产品ID Last string `json:"last"` // 最新价 Open24h string `json:"open24h"` // 24小时开盘价 High24h string `json:"high24h"` // 24小时最高价 Low24h string `json:"low24h"` // 24小时最低价 Change24h string `json:"change24h"` // 24小时涨跌幅 Vol24h string `json:"vol24h"` // 24小时成交量 VolCcy24h string `json:"volCcy24h"` // 24小时成交额 Ts string `json:"ts"` // 时间戳 } // DepthData 深度数据 type DepthData struct { InstId string `json:"instId"` // 产品ID Asks [][]string `json:"asks"` // 卖盘 [价格, 数量] Bids [][]string `json:"bids"` // 买盘 [价格, 数量] Ts string `json:"ts"` // 时间戳 } // TradeData 成交数据 type TradeData struct { InstId string `json:"instId"` // 产品ID TradeId string `json:"tradeId"` // 成交ID Px string `json:"px"` // 成交价格 Sz string `json:"sz"` // 成交数量 Side string `json:"side"` // 成交方向 buy/sell Ts string `json:"ts"` // 成交时间 } // KlineData K线数据 type KlineData struct { InstId string `json:"instId"` // 产品ID Candle []string `json:"candle"` // K线数据 [时间戳, 开盘价, 最高价, 最低价, 收盘价, 成交量, 成交额] Ts string `json:"ts"` // 时间戳 } // BitgetMarketConfig 市场数据配置 type BitgetMarketConfig struct { WsUrl string // WebSocket地址 ReconnectInterval time.Duration // 重连间隔 PingInterval time.Duration // Ping间隔 ReadTimeout time.Duration // 读取超时 WriteTimeout time.Duration // 写入超时 MaxReconnectTimes int // 最大重连次数 EnableCompression bool // 是否启用压缩 } // DefaultMarketConfig 默认市场数据配置 func DefaultMarketConfig() *BitgetMarketConfig { return &BitgetMarketConfig{ WsUrl: "wss://ws.bitget.com/v2/ws/public", ReconnectInterval: 5 * time.Second, PingInterval: 15 * time.Second, ReadTimeout: 60 * time.Second, WriteTimeout: 10 * time.Second, MaxReconnectTimes: 10, EnableCompression: false, } }