API криптобирж

Обращение к API происходит по адресу: http://api.btcindex.io/crex/?method={method}, где {method} — метод API.

Методы:

method=tickers (по умолчанию)

Параметры:

  • type - тип (список см. в методе ticker_types, поле name)
  • count - кол-во записей (по умолчанию 1000, макс. 1000)
  • tickers - список идентификаторов тикеров, через запятую, макс. 30
  • tm - timestamp в секундах, от которого начать вывод данных, по умолчанию - count последних записей
  • api_key - ключ

Параметр tickers формируется следующим образом: exchange:symbol

Exchange: имя биржи (список см. в методе exchanges)

Symbol: наименование пары токенов (список токенов см. в методе products), например ethbtc, сначала base-токен (который продаем/покупаем), потом quote-токен (в котором указываем цену).

Пример: binance:ethbtc - курс eth к btc на бирже binance

В качестве наименования биржи можно указать “all” - означает “агрегированный курс со всех бирж”.

Если в symbol токены указать через тире, то будет рассчитан кросс-курс через btc, например binance:eth-usdt означает “кросс курс eth к usdt через btc на binance”. Можно также указать кросс-токен, добавив его между base и quote, например: binance:ltc-eth-usdt означает “кросс курс ltc к usdt через eth на binance”.

Пример:

http://api.btcindex.io/crex/?type=1h&count=10&tickers=binance:ethbtc,bitfinex:ethbtc&api_key=


{
    "type": "1h", // запрошенный тип тикера
    "tm": 1534298400, // запрошенный tm
    "dt": "2018-08-15 02:00:00", // запрошенный tm в utc
    "count": 10, // кол-во
    "tickers": {
        1534298400: { // время начала периода
            "dt": "2018-08-15 02:00:00", // время начала периода в utc
            "binance:ethbtc": { // первый тикер
                 "average": 0.04590245, // средневзвешенная цена торгов
                 "buy_volume": 6179.74199828, // объем покупок
                 "sell_volume": 6030.61199786, // объем продаж
                 "open": 0.045414, // цена на начало периода (первая сделка)
                 "high": 0.046369, // максимальная цена за период
                 "low": 0.045403, // минимальная цена за период
                 "close": 0.045713 // цена на конец периода (последняя сделка)
             },
             "bitfinex:ethbtc": { // второй тикер
             }
        }
    }
}

method=ticker_types

Список типов тикеров. Например: 1s - одна секунда, 15m - 15 минут и т.п. Суффикс “a” (1da) означает “скользящее среднее” - т.е. “последние 24 часа”, вместо 1d (за текущие сутки по UTC). 1w - недельные тикеры начинаются в понедельник. 1M - месячные тикеры начинаются первого числа. 1Ma - скользящее среднее за 30 дней.

Пример:

http://api.btcindex.io/crex/?method=ticker_types&api_key=


{
    "types": {
        "1s": {
            "id": 1,
            "name": "1s", // название
            "update_period": 1 // периодичность пересчета, в секундах
        },
        "15s": {
            "id": 2,
            "name": "15s",
            "update_period": 3
        },
}

method=exchanges

Список бирж.

Пример:

http://api.btcindex.io/crex/?method=exchanges&api_key=


method=products

Список токенов.

Пример:

http://api.btcindex.io/crex/?method=products&api_key=

API через Websocket

Обращение к API происходит по адресу: wss://btcindex.io/ws

Для получения тикеров в реальном времени отправляем json:


{
    "method": "subscribe", // подписка на обновления
    "type": "1s", // тип, см. ticker_types выше)
    "ticker": "binance:ethbtc" // биржа+пара
}

Описание формата параметра ticker см. выше.

Для подписки на несколько тикеров отправляем несколько подписок.

В ответ получаем:


{
    "method":"subscribed", // подписан
    "type":"1s",
    "ticker":"binance:ethbtc"
}

Далее при каждом пересчете тикера получаем сообщение:


{
    "method":"data", // данные
    "type":"1s", // тип тикера
    "ticker":"binance:ethbtc", // наименование
    "timestamp":1534329887, // время начала периода
    "datetime":"2018-08-15 10:44:47", // время начала периода в UTC
    // описание полей см. выше
    "average":0.04471875,
    "buy_volume":0.186,
    "sell_volume":0.132,
    "open":0.044717,
    "high":0.04472,
    "low":0.044717,
    "close":0.044717
}

На каждый timestamp сервер отправляет несколько сообщений (при каждом пересчете данных за период).