Fetch Market Data

Market data is public: build the client with public=True. futures, spot and prediction each have a market router with the same core methods.

Symbols And Trading Rules

from typed_aster import Aster

async with Aster.new(public=True) as client:
  info = await client.futures.market.exchange_info()
  for symbol in info['symbols'][:5]:
    print(symbol['symbol'], symbol['status'])

  spot_info = await client.spot.market.exchange_info()
  print(len(spot_info['symbols']))

Order Book

from typed_aster import Aster

async with Aster.new(public=True) as client:
  book = await client.futures.market.depth('BTCUSDT', limit=10)
  best_bid_price, best_bid_qty = book['bids'][0]
  print(best_bid_price, best_bid_qty)

Candles

Each candle is a tuple: open time, open, high, low, close, volume, close time, and so on.

from datetime import datetime, timedelta, timezone

from typed_aster import Aster

async with Aster.new(public=True) as client:
  candles = await client.spot.market.klines(
    'BTCUSDT',
    interval='1h',
    start_time=datetime.now(timezone.utc) - timedelta(days=1),
  )
  open_time, open_, high, low, close, *_ = candles[-1]
  print(open_time, close)

Futures also has mark_price_klines, index_price_klines (by pair) and market_klines.

Tickers

With no symbol, ticker methods return every symbol as a list.

from typed_aster import Aster

async with Aster.new(public=True) as client:
  ticker = await client.futures.market.ticker_24hr('BTCUSDT')
  prices = await client.futures.market.ticker_price()
  best = await client.futures.market.book_ticker('BTCUSDT')
  print(ticker, prices, best)

Recent Trades

from typed_aster import Aster

async with Aster.new(public=True) as client:
  trades = await client.futures.market.trades('BTCUSDT', limit=20)
  agg = await client.futures.market.agg_trades('BTCUSDT', limit=20)
  print(trades[-1]['price'], agg[-1])

Funding And Mark Price

from typed_aster import Aster

async with Aster.new(public=True) as client:
  mark = await client.futures.market.premium_index('BTCUSDT')
  funding = await client.futures.market.funding_rate('BTCUSDT', limit=10)
  print(mark, funding[-1]['fundingRate'])