Dzengi.com WebSocket API

ИЗУЧИТЬ SWAGGER

Общая информация о WebSocket API

  • Базовый URL: wss://api-adapter.dzengi.com/connect
  • Базовый URL, демо-аккаунт: wss://demo-api-adapter.dzengi.com/connect
  • Все эндпоинты возвращают либо данные в формате JSON, либо диапазон.
  • Все поля со значением времени и относящиеся ко временным рамкам отображаются в миллисекундах.
  • Соединение с Websocket API прерывается в случае, если к API не обращаются более 30 секунд.
  • В настоящий момент все имеющиеся на платформе токенизированные активы, за исключением токенизированных облигаций, токенов компаний, токенов "KARMA.cx" и токенизированных акций гонконгского рынка доступны для запросов через API в его первой версии (v1). Вторая версия API (v2) позволяет осуществлять запросы, касающиеся токенизированных акций гонконгского рынка.
  • Список токенизированных активов, доступных для торговли в режиме "торговля с левереджем" через API можно найти здесь.

! Обратите внимание. Для успешной генерации подписи просим Вас указывать параметры в payload запроса в алфавитном порядке.

Пожалуйста, обратитесь к нашему Swagger API, раздел WebSocket для получения нужной вам информации. Больше примеров можно найти тут.

Устранение неполадок

Способ подключения

const ws = new WebSocket

('wss://api-adapter.backend.dzengi.com/connect',

{perMessageDeflate: true});


 

let responseList = [];

let request, response = Object();

Callbacks

await ws.on('open', async function open() {

     console.log("connected");

});

ws.on('close', async function close() {

     console.log('disconnected');

});

ws.on('error', async function error(data) {

     console.log('error');

     console.log(data);

});

ws.on('message', async function incoming(data) {

     response = JSON.parse(data);

     responseList.push(response);

});

Correlation ID

Данный ID необходим для получения асинхронного ответа на запрос.

request.correlationId = request.correlationId + 1;

Модель запроса

//Destination

request.destination = "/api/v1/leverageSettings";

//Request payload

request.payload = {"symbol": ETH/USD,

"timestamp": Date.now(),

"apiKey": apiKey};

request.payload.signature = getHash(request);

function getHash(request) {

let payload = "";

Object.keys(request.payload).sort().forEach(function(key) {

  payload += key + "=" + request.payload[key] + "&";

});

payload = payload.substring(0, payload.length - 1);

console.log(payload);

let hash = CryptoJS.HmacSHA256(payload, apiSecret).toString();

console.log(hash);

return hash;

}

//Send request

message = JSON.stringify(request);

ws.send(message);

await sleep(5000);

index = responseList.findIndex(i =>

i.correlationId ===

request.correlationId.toString());

console.log('============================');

console.log('index: ' + index);

console.log(responseList[index]);

console.log('============================');

Описание параметра Symbol

Как для режима “торги”, так и для режима “торговля с левереджем” параметр symbol можно найти в стриме exchangeInfo.

Режим “торги”: используйте symbol из стрима exchangeInfo;

Режим “торговля с левереджем”: изучите symbol из стрима exchangeInfo. Если в значении ‘symbol’ присутствуют валюты, то следующее обозначение будет правильным: 
‘BTC%2FUSD_LEVERAGE’. Если в значение ‘symbol’ присутствует только название актива, то формат параметра запроса следующий: ‘Oil%20-%20Brent.’.

Определения ENUM

Типы заявок (orderTypes, type):

  • LIMIT
  • MARKET
  • STOP

Направление заявки (side):

  • BUY
  • SELL

Срок действия (timeInForce):

  • GTC
  • IOC
  • FOK

Периоды / интервалы свечей на графиках:

m -> минуты; h -> часы; d -> дни; w -> недели

  • 1m
  • 5m
  • 15m
  • 30m
  • 1h
  • 4h
  • 1d
  • 1w

Обратите внимание, что в случае отсутствия какого-либо значения в параметре "intervals" при обращении к ендпоинту wss:OHLCMarketData.subscribe его значение будет равно 1m.

Go help.dzengi.com