Module: Binance::Spot::Market

Included in:
Binance::Spot
Defined in:
lib/binance/spot/market.rb

Overview

This module includes all spot public endpoints, including:

  • server time

  • kline

  • ticker

  • trades

  • orderbook

  • etc

Instance Method Summary collapse

Instance Method Details

#agg_trades(symbol:, **kwargs) ⇒ Object

Compressed/Aggregate Trades List

Get compressed, aggregate trades. Trades that fill at the time, from the same order, with the same price will have the quantity aggregated.

GET /api/v3/aggTrades

Parameters:

  • symbol (String)

    the symbol

  • kwargs (Hash)

Options Hash (**kwargs):

  • :startTime (Integer)

    Timestamp in ms to get aggregate trades from INCLUSIVE.

  • :endTime (Integer)

    Timestamp in ms to get aggregate trades until INCLUSIVE.

  • :fromId (Integer)

    Trade id to fetch from. Default gets most recent trades.

  • :limit (Integer)

    Default 500; max 1000.

See Also:



145
146
147
148
149
150
151
152
# File 'lib/binance/spot/market.rb', line 145

def agg_trades(symbol:, **kwargs)
  Binance::Utils::Validation.require_param('symbol', symbol)

  @session.public_request(
    path: '/api/v3/aggTrades',
    params: kwargs.merge(symbol: symbol)
  )
end

#avg_price(symbol:) ⇒ Object

Current Average Price

Current average price for a symbol.

GET /api/v3/avgPrice



217
218
219
220
221
222
223
224
# File 'lib/binance/spot/market.rb', line 217

def avg_price(symbol:)
  Binance::Utils::Validation.require_param('symbol', symbol)

  @session.public_request(
    path: '/api/v3/avgPrice',
    params: { symbol: symbol }
  )
end

#book_ticker(symbol: nil, **kwargs) ⇒ Object

Symbol Order Book Ticker

Best price/qty on the order book for a symbol or symbols.

GET /api/v3/ticker/bookTicker

Parameters:

  • symbol (String) (defaults to: nil)

    the symbol

  • kwargs (Hash)

Options Hash (**kwargs):

  • :symbolStatus (String)

    Valid values: TRADING, HALT, BREAK

See Also:



303
304
305
306
307
308
# File 'lib/binance/spot/market.rb', line 303

def book_ticker(symbol: nil, **kwargs)
  @session.public_request(
    path: '/api/v3/ticker/bookTicker',
    params: kwargs.merge(symbol: symbol)
  )
end

#depth(symbol:, **kwargs) ⇒ Object

Order Book

GET /api/v3/depth

Parameters:

  • symbol (String)

    the symbol

  • kwargs (Hash)

Options Hash (**kwargs):

  • :limit (Integer)

    Default 100; max 1000. Valid limits:[5, 10, 20, 50, 100, 500, 1000, 5000]

  • :symbolStatus (String)

    Valid values: TRADING, HALT, BREAK

See Also:



86
87
88
89
90
91
92
93
# File 'lib/binance/spot/market.rb', line 86

def depth(symbol:, **kwargs)
  Binance::Utils::Validation.require_param('symbol', symbol)

  @session.public_request(
    path: '/api/v3/depth',
    params: kwargs.merge(symbol: symbol)
  )
end

#exchange_info(symbol: nil, symbols: nil, permissions: nil) ⇒ Object

Exchange Information

GET /api/v3/exchangeInfo

Parameters:

  • kwargs (Hash)

    a customizable set of options

See Also:



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/binance/spot/market.rb', line 42

def exchange_info(symbol: nil, symbols: nil, permissions: nil)
  if symbols.is_a?(Array)
    symbols = symbols.map { |v| "%22#{v}%22" }.join(',')
    symbols = "%5B#{symbols}%5D"
  end
  if permissions.is_a?(Array)
    permissions = permissions.map { |v| "%22#{v}%22" }.join(',')
    permissions = "%5B#{permissions}%5D"
  end
  @session.public_request(
    path: '/api/v3/exchangeInfo',
    params: { symbol: symbol, symbols: symbols, permissions: permissions }
  )
end

#execution_rules(**kwargs) ⇒ Object

Query Execution Rules

GET /api/v3/executionRules

Parameters:

  • kwargs (Hash)

Options Hash (**kwargs):

  • :symbol (string)
  • :symbols (string)
  • :symbolStatus (string)

    Supported values: TRADING, HALT, BREAK

See Also:



66
67
68
69
70
71
72
73
74
75
# File 'lib/binance/spot/market.rb', line 66

def execution_rules(**kwargs)
  if kwargs[:symbols].is_a?(Array)
    kwargs[:symbols] = kwargs[:symbols].map { |v| "%22#{v}%22" }.join(',')
    kwargs[:symbols] = "%5B#{kwargs[:symbols]}%5D"
  end
  @session.public_request(
    path: '/api/v3/executionRules',
    params: kwargs
  )
end

#historical_block_trades(symbol:, **kwargs) ⇒ Object

Historical Block Trades

GET /api/v3/historicalBlockTrades

Parameters:

  • symbol (String)

    the symbol

  • kwargs (Hash)

Options Hash (**kwargs):

  • :limit (Integer)

    Default 500; max 1000.

  • :fromId (Integer)

See Also:



380
381
382
383
384
385
386
387
# File 'lib/binance/spot/market.rb', line 380

def historical_block_trades(symbol:, **kwargs)
  Binance::Utils::Validation.require_param('symbol', symbol)

  @session.public_request(
    path: '/api/v3/historicalBlockTrades',
    params: { symbol: symbol }.merge(kwargs)
  )
end

#historical_trades(symbol:, **kwargs) ⇒ Object

Old Trade Lookup

X-MBX-APIKEY required

GET /api/v3/historicalTrades

Parameters:

  • symbol (String)

    the symbol

  • kwargs (Hash)

Options Hash (**kwargs):

  • :limit (Integer)

    Default 500; max 1000.

  • :fromId (Integer)

    Trade id to fetch from. Default gets most recent trades.

See Also:



123
124
125
126
127
128
129
130
# File 'lib/binance/spot/market.rb', line 123

def historical_trades(symbol:, **kwargs)
  Binance::Utils::Validation.require_param('symbol', symbol)

  @session.public_request(
    path: '/api/v3/historicalTrades',
    params: kwargs.merge(symbol: symbol)
  )
end

#klines(symbol:, interval:, **kwargs) ⇒ Object

Kline/Candlestick Data

Kline/candlestick bars for a symbol. Klines are uniquely identified by their open time.

GET /api/v3/klines

Parameters:

  • symbol (String)

    the symbol

  • interval (String)

    interval

  • kwargs (Hash)

Options Hash (**kwargs):

  • :startTime (Integer)

    Timestamp in ms to get aggregate trades from INCLUSIVE.

  • :endTime (Integer)

    Timestamp in ms to get aggregate trades until INCLUSIVE.

  • :timeZone (String)

    Default: 0 (UTC)

  • :limit (Integer)

    Default 500; max 1000.

See Also:



169
170
171
172
173
174
175
176
177
178
179
180
# File 'lib/binance/spot/market.rb', line 169

def klines(symbol:, interval:, **kwargs)
  Binance::Utils::Validation.require_param('symbol', symbol)
  Binance::Utils::Validation.require_param('interval', interval)

  @session.public_request(
    path: '/api/v3/klines',
    params: kwargs.merge(
      symbol: symbol,
      interval: interval
    )
  )
end

#pingObject

Test Connectivity

GET /api/v3/ping



19
20
21
# File 'lib/binance/spot/market.rb', line 19

def ping
  @session.public_request(path: '/api/v3/ping')
end

#reference_price(symbol:) ⇒ Object

Parameters:

  • symbol (String)

    the symbol



345
346
347
348
349
350
351
352
# File 'lib/binance/spot/market.rb', line 345

def reference_price(symbol:)
  Binance::Utils::Validation.require_param('symbol', symbol)

  @session.public_request(
    path: '/api/v3/referencePrice',
    params: { symbol: symbol }
  )
end

#reference_price_calculation(symbol:, **kwargs) ⇒ Object

Query Reference Price Calculation

GET /api/v3/referencePrice/calculation

Parameters:

  • symbol (String)

    the symbol

  • kwargs (Hash)

Options Hash (**kwargs):

  • :symbolStatus (Integer)

    Supported values: TRADING, HALT, BREAK

See Also:



362
363
364
365
366
367
368
369
# File 'lib/binance/spot/market.rb', line 362

def reference_price_calculation(symbol:, **kwargs)
  Binance::Utils::Validation.require_param('symbol', symbol)

  @session.public_request(
    path: '/api/v3/referencePrice/calculation',
    params: { symbol: symbol }.merge(kwargs)
  )
end

#ticker(symbol: nil, symbols: nil, windowSize: '1d') ⇒ Object

Symbol Order Book Ticker

Best price/qty on the order book for a symbol or symbols.

GET /api/v3/ticker

Parameters:

  • symbol (String) (defaults to: nil)

    the symbol

  • kwargs (Hash)

Raises:

See Also:



321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
# File 'lib/binance/spot/market.rb', line 321

def ticker(symbol: nil, symbols: nil, windowSize: '1d')
  raise Binance::DuplicatedParametersError.new('symbol', 'symbols') unless symbols.nil? || symbol.nil?

  params = { symbol: symbol.upcase } if symbol

  if symbols
    symbols = symbols.map { |s| "\"#{s}\"" }.join(',')
    params = { symbols: "\[#{symbols}\]".upcase }
  end

  params[:windowSize] = windowSize

  @session.public_request(
    path: '/api/v3/ticker',
    params: params
  )
end

#ticker_24hr(symbol: nil, **kwargs) ⇒ Object

24hr Ticker Price Change Statistics

24 hour rolling window price change statistics. Careful when accessing this with no symbol.

GET /api/v3/ticker/24hr

Parameters:

  • symbol (String) (defaults to: nil)

    the symbol

  • kwargs (Hash)

Options Hash (**kwargs):

  • :symbol (String)

    Either symbol or symbols must be provided

  • :symbols (String)
  • :type (String)

    Default: FULL Supported values: FULL or MINI

  • :symbolStatus (String)

    Valid values: TRADING, HALT, BREAK

See Also:



239
240
241
242
243
244
# File 'lib/binance/spot/market.rb', line 239

def ticker_24hr(symbol: nil, **kwargs)
  @session.public_request(
    path: '/api/v3/ticker/24hr',
    params: kwargs.merge(symbol: symbol)
  )
end

#ticker_price(symbol: nil, **kwargs) ⇒ Object

Symbol Price Ticker

Latest price for a symbol or symbols.

GET /api/v3/ticker/price

Parameters:

  • symbol (String) (defaults to: nil)

    the symbol

  • kwargs (Hash)

Options Hash (**kwargs):

  • :symbolStatus (String)

    Valid values: TRADING, HALT, BREAK

See Also:



286
287
288
289
290
291
# File 'lib/binance/spot/market.rb', line 286

def ticker_price(symbol: nil, **kwargs)
  @session.public_request(
    path: '/api/v3/ticker/price',
    params: kwargs.merge(symbol: symbol)
  )
end

#ticker_trading_day(symbol: nil, symbols: nil, **kwargs) ⇒ Object

Trading Day Ticker

Price change statistics for a trading day.

GET /api/v3/ticker/tradingDay

Parameters:

  • kwargs (Hash)

Options Hash (**kwargs):

  • :symbol (string)

    Either symbol or symbols must be provided

  • :symbols (string)
  • :timeZone (String)

    Default: 0 (UTC)

  • :type (String)

    Supported values: FULL or MINI. Default: FULL

  • :symbolStatus (String)

    Valid values: TRADING, HALT, BREAK

Raises:

See Also:



259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
# File 'lib/binance/spot/market.rb', line 259

def ticker_trading_day(symbol: nil, symbols: nil, **kwargs)
  raise Binance::DuplicatedParametersError.new('symbol', 'symbols') unless symbols.nil? || symbol.nil?

  if symbols
    symbols = symbols.map { |s| "\"#{s}\"" }.join(',')
    symbols = { symbols: "\[#{symbols}\]".upcase }
  end

  @session.public_request(
    path: '/api/v3/ticker/tradingDay',
    params: kwargs.merge(
      symbol: symbol,
      symbols: symbols
    )
  )
end

#timeObject

Check Server Time

GET /api/v3/time



28
29
30
# File 'lib/binance/spot/market.rb', line 28

def time
  @session.public_request(path: '/api/v3/time')
end

#trades(symbol:, **kwargs) ⇒ Object

Recent Trades List

GET /api/v3/trades

Parameters:

  • symbol (String)

    the symbol

  • kwargs (Hash)

Options Hash (**kwargs):

  • :limit (Integer)

    Default 500; max 1000.

See Also:



103
104
105
106
107
108
109
110
# File 'lib/binance/spot/market.rb', line 103

def trades(symbol:, **kwargs)
  Binance::Utils::Validation.require_param('symbol', symbol)

  @session.public_request(
    path: '/api/v3/trades',
    params: kwargs.merge(symbol: symbol)
  )
end

#ui_klines(symbol:, interval:, **kwargs) ⇒ Object

UIKlines

uiKlines return modified kline data, optimized for presentation of candlestick charts

GET /api/v3/uiKlines

Parameters:

  • symbol (String)

    the symbol

  • interval (String)

    interval

  • kwargs (Hash)

Options Hash (**kwargs):

  • :startTime (Integer)
  • :endTime (Integer)
  • :timeZone (String)

    Default: 0 (UTC)

  • :limit (Integer)

    Default 500; max 1000.

See Also:



196
197
198
199
200
201
202
203
204
205
206
207
# File 'lib/binance/spot/market.rb', line 196

def ui_klines(symbol:, interval:, **kwargs)
  Binance::Utils::Validation.require_param('symbol', symbol)
  Binance::Utils::Validation.require_param('interval', interval)

  @session.public_request(
    path: '/api/v3/uiKlines',
    params: kwargs.merge(
      symbol: symbol,
      interval: interval
    )
  )
end