Загальна інформація про REST API
- Основна URL-адреса: https://api-adapter.backend.currency.com
- Базовий URL, демо-рахунок: https://demo-api-adapter.backend.currency.com
- Всі кінцеві точки повертають або об'єкт JSON, або масив.
- Дані повертаються у порядку зростання. Спочатку найстаріші, потім найновіші.
- Усі поля, пов’язані з часом і міткою часу, вказані в мілісекундах.
- Усі токенізовані активи, крім токенів компаній, токенізованих облігацій, токенів «KARMA.cx» та токенізованих активів з ринків Гонконгу, доступні в першій версії (v1) нашого API. У другій версії API (v2) також стали доступні ринки Гонконгу.
- Зі списком активів, доступних для торгівлі з використанням кредитного плеча в API, можна ознайомитися тут.
- При встановленні ринкових, лімітних або стоп-ордерів та вказівці більшої кількості точних чисел, ніж потрібно для конкретного токена, працює логіка round_down. Допустиму точність можна знайти у відповіді запиту exchangeInfo, параметр quotePrecision.
- При згадці більшої кількості точних чисел для параметра ціни використовується логіка округлення. Дозволену точність можна знайти у відповіді на запит ExchangeInfo, параметр quotePrecision.
Ознайомтеся з частиною REST API у Swagger щоб отримати необхідну інформацію.
Troubleshooting
Коди повернення HTTP
- Коди повернення HTTP 4XX використовуються для неправильних запитів; проблема на стороні відправника.
- Код повернення HTTP 403 використовується при порушенні ліміту WAF (Web Application Firewall).
- Код повернення HTTP 429 використовується під час порушення обмеження швидкості запитів.
- Код повернення HTTP 418 використовується, коли IP-адресу було автоматично заборонено для продовження надсилання запитів після отримання кодів 429.
- Коди повернення HTTP 5XX використовуються для внутрішніх помилок; проблема на стороні Currency.com. Важливо не розглядати це як невдалу операцію; статус виконання - UNKNOWN і міг бути успішним.
Коди помилок
- Будь-яка кінцева точка може повернути ERROR.
Зразок корисного навантаження нижче:
{
"code": -1121,
"msg": "Invalid symbol."
}
- Конкретні коди помилок і повідомлення визначаються в Кодах помилок.
Загальна інформація про кінцеві точки
- Для кінцевих точок
GET
параметри повинні бути надіслані у виглядіquery string
. - Для кінцевих точок
POST
,PUT
, таDELETE
параметри можуть бути надіслані у вигляді рядка запиту або в тілі запиту з типом вмісту application/x-www-form-urlencoded. При бажанні можна змішувати параметри в рядку запиту і в тілі запиту. Параметри можуть бути надіслані у будь-якому порядку. - Параметри можна надсилати в будь-якому порядку.
- Якщо параметр надіслано як у рядку запиту, так і в тілі запиту, буде використаний параметр рядка запиту.
Тип безпеки кінцевої точки
- Кожна кінцева точка має тип безпеки, який визначає спосіб взаємодії з нею. Це вказано поруч із НАЗВОЮ кінцевої точки.
- Якщо тип безпеки не вказано, вважайте, що тип безпеки - NONE.
- API-ключі передаються в REST API через заголовок X-MBX-APIKEY.
- API-ключі та секретні ключі чутливі до регістру.
- AAPI-ключі можуть бути налаштовані на доступ лише до певних типів безпечних кінцевих точок. Наприклад, один API-ключ може використовуватися тільки для TRADE, тоді як інший API-ключ може отримати доступ до всіх маршрутів, крім TRADE.
- За замовчуванням API-ключі мають доступ до всіх безпечних маршрутів.
Тип безпеки | Опис |
---|---|
NONE | До кінцевої точки можна отримати вільний доступ |
TRADE | Кінцева точка вимагає надіслати дійсний ключ API і підпис |
USER_DATA | Кінцева точка вимагає відправлення дійсного API-ключа та підпису |
USER_STREAM | Кінцева точка вимагає надсилання дійсного ключа API |
MARKET_DATA | Кінцева точка вимагає надсилання дійсного ключа API |
Кінцеві точки TRADE
таUSER_DATA
єSIGNED
кінцевими точками.
Безпека SIGNED (TRADE, USER_DATA, AND MARGIN) кінцевої точки
SIGNED
кінцеві точки вимагають надсилання додаткового параметра, підпису вquery string
або request body.- Кінцеві точки використовують підписи
HMAC SHA256
. ПідписHMAC SHA256
це операція з ключемHMAC SHA256
. Використовуйте свійsecretKey
як ключ іtotalParams
як значення для операції HMAC. signature
не чутливий до регістру.totalParams
визначається якquery string
, об'єднаний зrequest body
.
Безпека в часі
- Кінцева точка
SIGNED
також вимагає надсилання параметра,timestamp
, який має бути мілісекундною міткою часу створення та надсилання запиту. - Можна надіслати додатковий параметр
recvWindow
, щоб указати кількість мілісекунд післяtimestamp
для якого запит дійсний. ЯкщоrecvWindow §
не надсилається, значення за замовчуванням становить 5000.
Логіка така:
if (timestamp < (serverTime + 1000) && (serverTime -
timestamp) <= recvWindow)
{
// process request
}
else
{
// reject request
}
Серйозна торгівля – це питання часу. Мережі можуть бути нестабільними та ненадійними, що може призвести до того, що запити надходитимуть на сервери протягом різного часу. За допомогою recvWindow
, ви можете вказати, що запит має бути оброблений протягом певної кількості мілісекунд або відхилений сервером.
Рекомендується використовувати невелике вікно recvWindow 5000 або менше! Максимальна кількість не може перевищувати 60 000!
Приклади кінцевої точки SIGNED для POST /api/v1/order
Ось покроковий приклад того, як надіслати дійсне підписане корисне навантаження з командного рядка Linux за допомогою echo, openssl і curl.
Ключ | Значення |
---|---|
apiKey | vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A |
secretKey | NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j |
Параметр | Значення |
---|---|
symbol | LTC/BTC |
side | BUY |
type | LIMIT |
timeInforce | GTC |
quantity | 1 |
price | 0,1 |
recvWindow | 5000 |
timestamp | 1499827319559 |
Зверніть увагу, що деякі символи, як-от '/', мають бути закодовані URL-адресою та перетворені в таку комбінацію '%2F'.
Приклад 1: Як тіло запиту
requestBody:
symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559
HMAC SHA256 signature
[linux]$ echo -n
"symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50
curl command:
(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order' -d
'symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559&signature=ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50'
Приклад 2: Як рядок запиту
queryString:
symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559
HMAC SHA256 signature:
[linux]$ echo -n
"symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50
curl command:
(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order?symbol=LTC%2FBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559&signature=ebec6528b2beb508b2417fa33453a4ad28c1aae8097bb243caa60d0524036f50'
Приклади кінцевої точки SIGNED для POST /api/v1/order
(режим торгівлі з кредитним плечем)
Ось покроковий приклад того, як надіслати дійсне підписане корисне навантаження з командного рядка Linux за допомогою echo, openssl і curl.
Ключ | Значення |
---|---|
apiKey | vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A |
secretKey | NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j |
Параметр | Значення |
---|---|
symbol | BTC/USD_LEVERAGE |
side | BUY |
type | MARKET |
timeInforce | GTC |
quantity | 0.01 |
quantity | 2 |
accountId | 2376109060084932 |
takeProfit | 8000 |
stopLoss | 6000 |
recvWindow | 60000 |
timestamp | 1586942164000 |
Зверніть увагу, що деякі символи, як-от "/", мають бути закодовані URL-адресою та перетворені в таку комбінацію "%2F".
Приклад 1: Як тіло запиту
requestBody:
symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000×tamp=1586942164000
HMAC SHA256 signature
[linux]$ echo -n
"symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000×tamp=1586942164000" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= 05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b
curl command:
(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order' -d
'symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000×tamp=1586942164000&signature=05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b'
Приклад 2: Як рядок запиту
queryString:
symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000×tamp=1586942164000
HMAC SHA256 signature:
[linux]$ echo -n
"symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000×tamp=1586942164000" | openssl dgst -sha256 -hmac
"NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= 05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b
curl command:
(HMAC SHA256)
[linux]$ curl -H "X-MBX-APIKEY:
vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api-adapter.backend.currency.com/api/v1/order?symbol=BTC%2FUSD_LEVERAGE&side=BUY&type=MARKET&timeInForce=GTC&quantity=0.01&leverage=2&accountId=2376109060084932&takeProfit=8000&stopLoss=6000&recvWindow=60000×tamp=1586942164000&signature=05fc9fd19c2b1a11215025c5dfa56da2204b04181add67670d4f92049b439f7b
Термінологія
base asset
відноситься до активу, який є quantity символу.quote asset
відноситься до активу, який єprice
символу.
ENUM визначення
Статус ордера (статус):
- NEW
- FILLED
- CANCELED
- REJECTED
Типи ордерів (orderTypes, тип):
- LIMIT
- MARKET
- STOP
Сторона ордера (сторона):
- BUY
- SELL
Час чинності (timeInForce):
- GTC
- IOC
- FOK
Інтервали графіка Kline/Candlestick:
m -> хвилини; h -> години; d -> дні; w -> тижні
- 1m
- 5m
- 15m
- 30m
- 1h
- 4h
- 1d
- 1w
/klines 'type' параметр:
- heiken-ashi