Websocket Request for public market data.
This method provides ticker, order book, recent trades.
1. Subscribe Request
param | type | description |
---|---|---|
type | string | must be 'subscribe' |
channel | string | Must be 'marketdata' |
market_id | string | Market ID that you want subscribe. |
filter | string[] | Required parameters are one or more of the values below. ticker, recent_trades, order_books, order_books_l2, order_books_l3, order_books_l4 |
interval | number | Data sending interval(ms). It can be one of this values: 100, 500 |
// request
{
"channel": "marketdata",
"filter": [<FILTER>],
"interval": <INTERVAL>,
"market_id": <MARKET_ID>,
"type": "subscribe"
}
2. Responses (When subscribe, and on going)
param | type | description |
---|---|---|
channel | string | It will return 'marketdata' |
lag | number | API server's internal lag (ms). For example, if lag is 2000, It means this data is 2 seconds ago. |
market_id | string | same as request |
status | string | "ok" - working normal "unavailable" - We're preparing datas, so retry later. |
ticker | Object | Returns if you put 'ticker' in your "filter" parameter. Ticker made with 24 hours since last trade occurs. TICKER Object: - base_volume: Trade volume of base currency - change: Price difference over 24 hours ago - high: highest price in 24 hours. - last: last price of lastest trade. - low: : lowest price in 24 hours. - quote_volume: Trade volume of quote currency - time: when ticker last calculated |
recent_trades | RECENT_TRADES[] | Returns if you put 'recent_trades' in your "filter" parameter. It will return last 100 trades of the market. Old trade will be first, New trade will be last. RECENT_TRADES: - price: a closed price, - quantity: traded quantity, - time: the time the deal was made, - side: 'buy' or 'sell', - tick_direction: An indicator of whether the transaction amount has risen or gone down compared to the previous transaction. It will be 'up' | 'down' | 'zero' | 'zeroup' | 'zerodown', |
order_books order_books_l1 order_books_l2 order_books_l3 order_books_l4 | ORDER_BOOK[] | Returns if you put 'order_books' or 'order_books_l1' or 'order_books_l2' or 'order_books_l3' or 'order_books_l4' in your "filter" parameter. It sends differ of order_book. { side: "buy", price: "0.00004477", quantity: "1789410.140359", } order_books_l1 order_books_l2 order_books_l3 order_books_l4: Sends orderbook grouped by 10^(ceil(log10(tick size))+[LEVEL]) . Other than this everything is the same as order_books. |
reset | boolean | If data is returning all data (not diff), set it true. IF data is diff data (not all), set it false. |
//response
{
"channel": "marketdata",
"market_id": <MARKET_ID>,
"status":"ok",
"lag":0,
"<channels>": <data>
"reset":true
}
example)
// request
{
"channel": "marketdata",
"filter": ["ticker", "recent_trades"],
"interval": 100,
"market_id": "XRP-BTC",
"type": "subscribe"
}
//response
{
"channel": "marketdata",
"market_id": "XRP-BTC",
"status": "ok",
"lag": 0,
"ticker": {
"time": "2018-08-17T03:00:43.000Z",
"last": "0.00004221",
"low": "0.00003953",
"high": "0.00004233",
"change": "0.00000195",
"base_volume": "119304953.57728445",
"quote_volume": "4914.391934022046355"
},
"recent_trades": [
{
"price": "0.00004221",
"quantity": "555",
"time": "2018-08-17T02:56:17.249Z",
"side": "buy",
"tick_direction": "zeroup"
},
...
...
...
{
"side": "buy",
"price": "0.00003218",
"quantity": "167912.55816365"
}
],
"reset": true
}
Marketdata sends the full value on the first request, and only changes thereafter.
You can 'overwrite' the quantity of the Orderbook as received.
If the Orderbook quantity is 0, there is no quantity for that amount, or the quantity is completely exhausted between intervals.