Общая информация о WebSocket API
- Базовый URL: wss://api-adapter.dzengi.com/connect
- Базовый URL, демо-аккаунт: wss://demo-api-adapter.dzengi.com/connect
- Все эндпоинты возвращают либо данные в формате JSON, либо диапазон.
- Все поля со значением времени и относящиеся ко временным рамкам отображаются в миллисекундах.
- Соединение с Websocket API прерывается в случае, если к API не обращаются более 30 секунд.
- В настоящий момент все имеющиеся на платформе токенизированные активы, за исключением токенизированных облигаций, токенов компаний и токенизированных акций гонконгского рынка доступны для запросов через 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/USD_LEVERAGE’. Если в значение ‘symbol’ присутствует только название актива, то формат параметра запроса следующий: ‘Oil-Brent.’.
Определения 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.