package okx // 行情频道 channel: tickers // 获取产品的最新成交价、买一价、卖一价和24小时交易量等信息。 // 最快100ms推送一次,没有触发事件时不推送,触发推送的事件有:成交、买一卖一发生变动。 type TickersData struct { InstType string `json:"instType"` // 产品类型 InstId string `json:"instId"` // 产品ID Last string `json:"last"` // 最新成交价 LastSz string `json:"lastSz"` // 最新成交的数量,0 代表没有成交量 AskPx string `json:"askPx"` // 卖一价 AskSz string `json:"askSz"` // 卖一价对应的数量 BidPx string `json:"bidPx"` // 买一价 BidSz string `json:"bidSz"` // 买一价对应的数量 Open24h string `json:"open24h"` // 24小时开盘价 High24h string `json:"high24h"` // 24小时最高价 Low24h string `json:"low24h"` // 24小时最低价 VolCcy24h string `json:"volCcy24h"` // 24小时成交量,以币为单位如果是衍生品合约,数值为交易货币的数量。如果是币币/币币杠杆,数值为计价货币的数量。 Vol24h string `json:"vol24h"` // 24小时成交量,以张为单位如果是衍生品合约,数值为合约的张数。如果是币币/币币杠杆,数值为交易货币的数量。 SodUtc0 string `json:"sodUtc0"` // UTC+0 时开盘价 SodUtc8 string `json:"sodUtc8"` // UTC+8 时开盘价 Ts string `json:"ts"` // ticker数据产生时间,Unix时间戳的毫秒数格式,如 1597026383085 } // ChannelTickers 行情频道 type ChannelTickers struct { cfg wsChannelConfig[*[]TickersData, *ChannelData[*[]TickersData]] wsChannel *wsChannel[*[]TickersData, *ChannelData[*[]TickersData]] } func NewChannelTickers( traceId string, httpProxy string, ) *ChannelTickers { cfg := wsChannelConfig[*[]TickersData, *ChannelData[*[]TickersData]]{ channelId: traceId, httpProxy: httpProxy, wsUrl: "/ws/v5/public", subscribeChannels: []string{"tickers"}, dataInstanceFunc: func() *[]TickersData { var d []TickersData return &d }, dataMappingFunc: func(data *ChannelData[*[]TickersData]) (*ChannelData[*[]TickersData], error) { return data, nil }, } return &ChannelTickers{cfg: cfg} } func (c *ChannelTickers) Init() (err error) { c.wsChannel = newWsChannel(c.cfg) return c.wsChannel.Init() } func (c *ChannelTickers) Consumer() <-chan *ChannelData[*[]TickersData] { return c.wsChannel.Consumer() } func (c *ChannelTickers) Subscribe(instIds ...string) (err error) { return c.wsChannel.Subscribe(instIds...) } func (c *ChannelTickers) Unsubscribe(instIds ...string) (err error) { return c.wsChannel.Unsubscribe(instIds...) } func (c *ChannelTickers) IsSubscribe(instId string) bool { return c.wsChannel.IsSubscribed(instId) } func (c *ChannelTickers) GetSubscribes() (instIds []string) { return c.wsChannel.GetSubscribes() }