Author profile photo
Команда Quickex
25 сентября 2024 г.
~2 мин. чтения

Следующие методы используются для расширения возможностей вашего сервиса с использованием функций обмена Quickex.io.

Алгоритм

Quickex использует систему динамического курса для прогнозирования обменных курсов, анализируя глубину рынка у поставщиков ликвидности. По умолчанию система анализирует глубину рынка и возвращает реалистично рассчитанный результат. Однако параметр markup может влиять на курс, который возвращает алгоритм прогнозирования.

Параметр markup влияет на предварительно рассчитанный курс по следующей формуле:

A<sub>final</sub> = A<sub>calculated</sub> × (1 – K<sub>markup</sub> / 100)

Где:

  • A<sub>final</sub> — конечная сумма, которую пользователь получит после обмена.

  • A<sub>calculated</sub> — первоначальная рассчитанная сумма до учета markup.

  • K<sub>markup</sub> — значение параметра markup.

Пример: если курс обмена 1 BTC → USDT составляет 49 549.728053855135, а значение markup равно 0.3, расчет будет следующим:

49549.728053855135 × (1 – 0.3 / 100) = 49401.07886969357

API

Данные о курсах можно получить через вызов API v1 к /api/v1/rates/public/one.
API v1 не требует авторизации по API-ключу или добавления IP-адресов в белый список.

Параметры запроса:

Параметр Описание Пример
instrumentFromCurrencyTitle Валюта, которую нужно обменять BTC
instrumentFromNetworkTitle Блокчейн сети исходной валюты BTC
instrumentToCurrencyTitle Валюта, которую пользователь хочет получить USDT
instrumentToNetworkTitle Блокчейн сети получаемой валюты TRC20
rateMode Режим обменного курса: FLOATING (плавающий) или FIXED (фиксированный) FLOATING
claimedDepositAmount Сумма депозита, заявленная клиентом 1
markup Значение параметра markup 0.3

Пример запроса:

GET /api/v1/rates/public/one?instrumentFromCurrencyTitle=BTC&instrumentFromNetworkTitle=BTC&instrumentToCurrencyTitle=USDT&instrumentToNetworkTitle=TRC20&rateMode=FLOATING&claimedDepositAmount=1&markup=0.3

Пример ответа:

json
{
"instrumentFrom": {
"currencyTitle": "BTC",
"networkTitle": "BTC",
"precisionDecimals": 11
},
"instrumentTo": {
"currencyTitle": "USDT",
"networkTitle": "TRC20",
"precisionDecimals": 1
},
"amountToGet": "50201.90689595",
"amountToGive": "1",
"rateMode": "FLOATING",
"markup": "0.3"
}

Параметр markup в процессе оформления ордера

При создании ордера параметр markup также должен быть передан, чтобы обеспечить корректный расчет комиссии. Quickex применяет следующую формулу:

A<sub>withdrawal</sub> = A<sub>exchange</sub> × (1 – (C<sub>platform(%)</sub> + K<sub>markup</sub>) / 100)

Где:

  • A<sub>withdrawal</sub> — сумма, которую получит клиент после обмена.

  • A<sub>exchange</sub> — сумма, доступная Quickex после выполнения сделки.

  • C<sub>platform(%)</sub> — комиссия платформы.

  • K<sub>markup</sub> — значение markup.

Пример:
Если комиссия платформы составляет 1%, а markup0.3%, то формула будет следующей:

A<sub>withdrawal</sub> = A<sub>exchange</sub> × (1 – (1 + 0.3) / 100)

При обмене 1 BTC на USDT по рыночному курсу 50243.798064469251204, клиент получит:

50243.798064469251204 × (1 – 1.3 / 100) = 49590.62868963115 USDT

Использование API v2

Для работы с API v2 требуется авторизация. Без необходимых параметров авторизации запросы к v2-эндпоинтам вернут ошибку 403 Forbidden.

Создание API-ключа

json
POST /api/v1/users/generate-api-key

{
"name": "test",
"whiteListIp": ["127.0.0.1"],
"isActive": true
}

Ответ:

json
{
"apiId": 40,
"name": "test",
"isActive": true,
"publicKey": "ZgzycV6Sf78BZKuyIAiz+0Bor002+0/rx1gLKsmYCsY=",
"secretKey": "a482a8e3a3ff9aeadefb11d3d8c11253e7e8412e05ef2b8599016cc87a64b7d6",
"whiteListIp": ["127.0.0.1"],
"createdAt": "2024-08-05T13:54:18.427Z"
}

Передача API-ключа в запросах
API v2 требует добавления трех заголовков:

Заголовок Значение
x-api-public-key Ваш публичный ключ
x-api-timestamp UNIX timestamp
x-api-signature Подпись запроса

Подпись запроса вычисляется с использованием HMAC SHA-256:

js
function signRequest(requestBody) {
const timestamp = new Date().getTime();
const publicKey = "ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ";
const secretKey = "ВАШ_СЕКРЕТНЫЙ_КЛЮЧ";
const dataToSign = timestamp + JSON.stringify(requestBody) + publicKey;
return crypto.createHmac("sha256", secretKey).update(dataToSign).digest("hex");
}

Заключение

Использование markup позволяет регулировать курсы обмена, а API Quickex предоставляет удобные инструменты для интеграции с сервисами. Если вам требуется дополнительная информация или поддержка по API, обратитесь в службу поддержки Quickex.

Поделиться статьей: