mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 23:16:45 +00:00
(BTC Markets) Ticker batching support (#399)
* moved to getticekers endpoint * add support for tickerbatching * const and things * moved openOrders to bool * gofmt and clean up test logs * revert canManipulateRealOrders to false
This commit is contained in:
@@ -29,7 +29,7 @@ const (
|
||||
btcMarketsGetTrades = "/trades?"
|
||||
btcMarketOrderBooks = "/orderbook?"
|
||||
btcMarketsCandles = "/candles?"
|
||||
btcMarketsTickers = "/tickers?"
|
||||
btcMarketsTickers = "tickers?"
|
||||
btcMarketsMultipleOrderbooks = "/orderbooks?"
|
||||
btcMarketsGetTime = "/time"
|
||||
btcMarketsWithdrawalFees = "/withdrawal-fees"
|
||||
@@ -227,11 +227,11 @@ func (b *BTCMarkets) GetMarketCandles(marketID, timeWindow, from, to string, bef
|
||||
}
|
||||
|
||||
// GetTickers gets multiple tickers
|
||||
func (b *BTCMarkets) GetTickers(marketIDs []string) ([]Ticker, error) {
|
||||
func (b *BTCMarkets) GetTickers(marketIDs []currency.Pair) ([]Ticker, error) {
|
||||
var tickers []Ticker
|
||||
params := url.Values{}
|
||||
for x := range marketIDs {
|
||||
params.Add("marketId", marketIDs[x])
|
||||
params.Add("marketId", marketIDs[x].String())
|
||||
}
|
||||
return tickers, b.SendHTTPRequest(btcMarketsUnauthPath+btcMarketsTickers+params.Encode(),
|
||||
&tickers)
|
||||
@@ -375,7 +375,7 @@ func (b *BTCMarkets) NewOrder(marketID string, price, amount float64, orderType,
|
||||
}
|
||||
|
||||
// GetOrders returns current order information on the exchange
|
||||
func (b *BTCMarkets) GetOrders(marketID string, before, after, limit int64, status string) ([]OrderData, error) {
|
||||
func (b *BTCMarkets) GetOrders(marketID string, before, after, limit int64, openOnly bool) ([]OrderData, error) {
|
||||
if (before > 0) && (after >= 0) {
|
||||
return nil, errors.New("BTCMarkets only supports either before or after, not both")
|
||||
}
|
||||
@@ -393,8 +393,8 @@ func (b *BTCMarkets) GetOrders(marketID string, before, after, limit int64, stat
|
||||
if limit > 0 {
|
||||
params.Set("limit", strconv.FormatInt(limit, 10))
|
||||
}
|
||||
if status != "" {
|
||||
params.Set("status", status)
|
||||
if openOnly {
|
||||
params.Set("status", "open")
|
||||
}
|
||||
return resp, b.SendAuthenticatedRequest(http.MethodGet,
|
||||
common.EncodeURLValues(btcMarketsOrders, params), nil, &resp)
|
||||
|
||||
@@ -94,7 +94,7 @@ func TestGetMarketCandles(t *testing.T) {
|
||||
|
||||
func TestGetTickers(t *testing.T) {
|
||||
t.Parallel()
|
||||
temp := []string{BTCAUD, LTCAUD, ETHAUD}
|
||||
temp := currency.NewPairsFromStrings([]string{LTCAUD, BTCAUD})
|
||||
_, err := b.GetTickers(temp)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
@@ -194,11 +194,11 @@ func TestGetOrders(t *testing.T) {
|
||||
if !areTestAPIKeysSet() {
|
||||
t.Skip("API keys required but not set, skipping test")
|
||||
}
|
||||
_, err := b.GetOrders("", -1, -1, 2, "")
|
||||
_, err := b.GetOrders("", -1, -1, 2, false)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
_, err = b.GetOrders(LTCAUD, -1, -1, -1, "open")
|
||||
_, err = b.GetOrders(LTCAUD, -1, -1, -1, true)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -454,9 +454,10 @@ func TestGetOrderHistory(t *testing.T) {
|
||||
if !areTestAPIKeysSet() {
|
||||
t.Skip("API keys required but not set, skipping test")
|
||||
}
|
||||
var input order.GetOrdersRequest
|
||||
input.OrderSide = order.Buy
|
||||
_, err := b.GetOrderHistory(&input)
|
||||
|
||||
_, err := b.GetOrderHistory(&order.GetOrdersRequest{
|
||||
OrderSide: order.Buy,
|
||||
})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -479,3 +480,15 @@ func TestUpdateTicker(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetActiveOrders(t *testing.T) {
|
||||
t.Parallel()
|
||||
if !areTestAPIKeysSet() {
|
||||
t.Skip("API keys required but not set, skipping test")
|
||||
}
|
||||
|
||||
_, err := b.GetActiveOrders(&order.GetOrdersRequest{})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,6 +76,7 @@ func (b *BTCMarkets) SetDefaults() {
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
@@ -245,24 +246,24 @@ func (b *BTCMarkets) UpdateTradablePairs(forceUpdate bool) error {
|
||||
|
||||
// UpdateTicker updates and returns the ticker for a currency pair
|
||||
func (b *BTCMarkets) UpdateTicker(p currency.Pair, assetType asset.Item) (*ticker.Price, error) {
|
||||
tickerPrice := new(ticker.Price)
|
||||
allPairs := b.GetEnabledPairs(assetType)
|
||||
for x := range allPairs {
|
||||
tick, err := b.GetTicker(b.FormatExchangeCurrency(allPairs[x], assetType).String())
|
||||
tickers, err := b.GetTickers(allPairs.Slice())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for x := range tickers {
|
||||
var resp ticker.Price
|
||||
resp.Pair = currency.NewPairFromString(tickers[x].MarketID)
|
||||
resp.Last = tickers[x].LastPrice
|
||||
resp.High = tickers[x].High24h
|
||||
resp.Low = tickers[x].Low24h
|
||||
resp.Bid = tickers[x].BestBID
|
||||
resp.Ask = tickers[x].BestAsk
|
||||
resp.Volume = tickers[x].Volume
|
||||
resp.LastUpdated = time.Now()
|
||||
err = ticker.ProcessTicker(b.Name, &resp, assetType)
|
||||
if err != nil {
|
||||
return tickerPrice, err
|
||||
}
|
||||
tickerPrice.Pair = allPairs[x]
|
||||
tickerPrice.Last = tick.LastPrice
|
||||
tickerPrice.High = tick.High24h
|
||||
tickerPrice.Low = tick.Low24h
|
||||
tickerPrice.Bid = tick.BestBID
|
||||
tickerPrice.Ask = tick.BestAsk
|
||||
tickerPrice.Volume = tick.Volume
|
||||
tickerPrice.LastUpdated = time.Now()
|
||||
err = ticker.ProcessTicker(b.Name, tickerPrice, assetType)
|
||||
if err != nil {
|
||||
return tickerPrice, err
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return ticker.GetTicker(b.Name, p, assetType)
|
||||
@@ -396,7 +397,7 @@ func (b *BTCMarkets) CancelAllOrders(_ *order.Cancel) (order.CancelAllResponse,
|
||||
var resp order.CancelAllResponse
|
||||
tempMap := make(map[string]string)
|
||||
var orderIDs []string
|
||||
orders, err := b.GetOrders("", -1, -1, -1, "open")
|
||||
orders, err := b.GetOrders("", -1, -1, -1, true)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
@@ -547,10 +548,8 @@ func (b *BTCMarkets) GetActiveOrders(req *order.GetOrdersRequest) ([]order.Detai
|
||||
}
|
||||
|
||||
var resp []order.Detail
|
||||
var err error
|
||||
for x := range req.Currencies {
|
||||
var tempData []OrderData
|
||||
tempData, err = b.GetOrders(b.FormatExchangeCurrency(req.Currencies[x], asset.Spot).String(), -1, -1, -1, "open")
|
||||
tempData, err := b.GetOrders(b.FormatExchangeCurrency(req.Currencies[x], asset.Spot).String(), -1, -1, -1, true)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
@@ -612,7 +611,7 @@ func (b *BTCMarkets) GetOrderHistory(req *order.GetOrdersRequest) ([]order.Detai
|
||||
var tempResp order.Detail
|
||||
var tempArray []string
|
||||
if len(req.Currencies) == 0 {
|
||||
orders, err := b.GetOrders("", -1, -1, -1, "")
|
||||
orders, err := b.GetOrders("", -1, -1, -1, false)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
@@ -621,7 +620,7 @@ func (b *BTCMarkets) GetOrderHistory(req *order.GetOrdersRequest) ([]order.Detai
|
||||
}
|
||||
}
|
||||
for y := range req.Currencies {
|
||||
orders, err := b.GetOrders(b.FormatExchangeCurrency(req.Currencies[y], asset.Spot).String(), -1, -1, -1, "")
|
||||
orders, err := b.GetOrders(b.FormatExchangeCurrency(req.Currencies[y], asset.Spot).String(), -1, -1, -1, false)
|
||||
if err != nil {
|
||||
return resp, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user