mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-06-04 15:10:54 +00:00
* Initial commit setting up a map orderbook system with a buffer. It will write to the buffer, sort apply to main orderbook and then process. * Moves namespaces again * Updates orderbook to use a sweet new WebsocketOrderbookUpdate type to handle all updates whether its using ID or not. So good. Adds many tests * Starting to implement orderbook update handling per exchange. Updates namespaces again. Hopefuylly will find a way to update via ID not timestamp, too many endpoints dont provide update timestamps * Changes orderbookbuffer to use BufferUpdate type instead of orderbook.Base to achieve more functionality and no need for type conversion functions. Updates tests * Updates all instances of ws.orderbook.Update. Simplifies some orderbook logic * Introduces toggleable buffer. Renames orderbooks. Completes implementation for everywhere but OKGroup due to hash calculation * Implements orderbook update for okgroup, but forgets about the orderbook hash checking * Fixes okgroup checksum calculation. Fixes linting issue. Removes redundant Kraken tests. * Introduces sorting toggle and separates from buffer toggle. Uses benchmarks to highlight performance gains * Fixes Gemini rate limit and parsing. Removes comments and fixes typos * Fixes bitfinex orderbook processing * Inbuilt sorting, minor fixes for websocket implementations. Improves test coverage * Adds surprise LakeBTC websocket support * Fixes data race * Fixes rebasing issues due to namespace movements * Addresses PR nits: moves folder namespace from ws to websocket. Removes line spaces in imports. Fixes lakebtc websocket returns and defer fucntions. Fixes comments * Adds poloniex orderook sorting support * Enables bitstamp and hitbtc orderbook sorting. Fixes poloniex's sorting * Renames namespaces and combines monitor and connection into wshandler. Removes unused SPOT const. Changes how orderbook stuff is loaded. It is done in startup with a setup. Removes exchange name from loadsnapshot as well * Removes the connection.go from rebasing issues. Removes error response from functions used in goroutines * Fixes test with exchange name output change * Fixes issues where copy and paste and replace all were used poorly
67 lines
2.3 KiB
Go
67 lines
2.3 KiB
Go
package okcoin
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/thrasher-corp/gocryptotrader/common"
|
|
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
|
"github.com/thrasher-corp/gocryptotrader/exchanges/okgroup"
|
|
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
|
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
|
)
|
|
|
|
const (
|
|
okCoinAuthRate = 600
|
|
okCoinUnauthRate = 600
|
|
okCoinAPIPath = "api/"
|
|
okCoinAPIURL = "https://www.okcoin.com/" + okCoinAPIPath
|
|
okCoinAPIVersion = "/v3/"
|
|
okCoinExchangeName = "OKCOIN International"
|
|
okCoinWebsocketURL = "wss://real.okcoin.com:10442/ws/v3"
|
|
)
|
|
|
|
// OKCoin bases all methods off okgroup implementation
|
|
type OKCoin struct {
|
|
okgroup.OKGroup
|
|
}
|
|
|
|
// SetDefaults method assignes the default values for OKEX
|
|
func (o *OKCoin) SetDefaults() {
|
|
o.SetErrorDefaults()
|
|
o.SetCheckVarDefaults()
|
|
o.Name = okCoinExchangeName
|
|
o.Enabled = false
|
|
o.Verbose = false
|
|
o.RESTPollingDelay = 10
|
|
o.APIWithdrawPermissions = exchange.AutoWithdrawCrypto |
|
|
exchange.NoFiatWithdrawals
|
|
o.RequestCurrencyPairFormat.Delimiter = "_"
|
|
o.RequestCurrencyPairFormat.Uppercase = false
|
|
o.ConfigCurrencyPairFormat.Delimiter = "_"
|
|
o.ConfigCurrencyPairFormat.Uppercase = true
|
|
o.SupportsAutoPairUpdating = true
|
|
o.SupportsRESTTickerBatching = false
|
|
o.Requester = request.New(o.Name,
|
|
request.NewRateLimit(time.Second, okCoinAuthRate),
|
|
request.NewRateLimit(time.Second, okCoinUnauthRate),
|
|
common.NewHTTPClientWithTimeout(exchange.DefaultHTTPTimeout))
|
|
o.APIUrlDefault = okCoinAPIURL
|
|
o.APIUrl = okCoinAPIURL
|
|
o.AssetTypes = []string{ticker.Spot}
|
|
o.Websocket = wshandler.New()
|
|
o.WebsocketURL = okCoinWebsocketURL
|
|
o.APIVersion = okCoinAPIVersion
|
|
o.Websocket.Functionality = wshandler.WebsocketTickerSupported |
|
|
wshandler.WebsocketTradeDataSupported |
|
|
wshandler.WebsocketKlineSupported |
|
|
wshandler.WebsocketOrderbookSupported |
|
|
wshandler.WebsocketSubscribeSupported |
|
|
wshandler.WebsocketUnsubscribeSupported |
|
|
wshandler.WebsocketAuthenticatedEndpointsSupported |
|
|
wshandler.WebsocketMessageCorrelationSupported
|
|
o.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
|
o.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
|
o.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
|
}
|