Зміст
Вступ
Мета цієї серії – познайомити вас з REST API Binance і навчити, як з ним взаємодіяти. В кінці, ви повинні бути впевнені в своїй здатності запитувати інформацію про ринки та ваші позиції, і розміщувати ряд різних типів ордерів.
Передумови
Ключі тестової мережі
Ми збираємось використовувати тестову мережу для наших цілей. Це дасть нам трохи коштів, які не мають реальної цінності, і з якими можна поекспериментувати. Вони працюють точно так же, як справжні монети і токени, тому, коли ви звикнете до API, ви можете почати використовувати його для торгівлі реальними коштами.
- Почніть з переходу до Спотової тестової мережі.
- Щоб отримати доступ, вам необхідно увійти в систему з акаунтом GitHub. Створіть його, якщо ви цього ще не зробили.
- Натисніть "Authenticate" та увійдіть через GitHub.
- У розділі "API Keys", ви побачите, що у вас немає зареєстрованих ключів. Натисніть на Generate HMAC_SHA256 Key, щоб створити пару.
- На наступному екрані, надайте клавішам мітку. Назвіть їх як хочете і натисніть "Generate".
- Вам будуть представлені два ключа: API Key та Secret Key. Важливо записати їх зараз. Якщо ви цього не зробите, вам доведеться знову розпочати процес створення ключа. Ми рекомендуємо зберігати їх в додатку для нотаток на вашому комп'ютері, щоб потім їх було легко скопіювати.
Завантаження і встановлення Postman
Postman – це платформа для спільної роботи API. Для нас це ідеальна відправна точка – у нас буде доступ до колекцій запитів Binance, які ми будемо тестувати, не створюючи жодного рядка коду.
Після цього, знайдіть його у провіднику і встановіть. Відкрийте програму для початку роботи. Зверніть увагу, що ви можете створити акаунт для входу, але це не обов'язково. Якщо ви хочете пропустити цей крок, просто виберіть відповідний варіант у нижній частині вікна.
Створення середовища
На цьому етапі у вас повинен бути інтерфейс, схожий на наступний.
Завантаження не займе багато часу. Знайдіть його в провіднику файлів і розархівуйте. Потім, ми можемо повернутися у Postman.
- Виберіть "Import", і перейдіть в щойно розархівовану папку (binance-postman-api).
- Потім увійдіть у папку середовища .
- Тепер ви побачите два файли (один для основної мережі, інший для тестової мережі). Ми шукаємо binance_com_spot_testnet_api.postman_environment.json. Переконайтеся, що ви вибрали правильний, тому що наші ключі не працюють з іншими.
На цьому екрані залиште поля "timestamp" і "signature" порожніми. Ці два значення будуть автоматично створюватися при кожному запиті.
Імпорт колекції
Тепер ми збираємося імпортувати колекцію, яка являє собою великий набір запитів, які роблять за нас важку роботу. Для завантаження її в наше середовище, виконайте наступні кроки:
- Натисніть "Import" у верхньому лівому куті.
- У спливаючому вікні на вкладці "File" виберіть "Upload Files".
- Ми знову шукаємо папку binance-postman-api. Знайдіть і відкрийте її.
- На цей раз введіть "collections" у підкаталог.
- Тут знову два файли. Один для роботи з API ф'ючерсів. Але ми працюємо зі спотовим, тому вам потрібно вибрати файл binance_spot_api_v1.postman_collection.json.
- Тепер ви повинні побачити екран підтвердження, який ідентифікує імпорт у форматі колекції Postman. Виберіть "Import".
На вкладці "Collections" зліва від вікна ви тепер помітите, що у нас є папка з більш ніж 100 запитами. Вітаємо! Все гаразд. У наступному розділі ми розглянемо, які запити ми можемо відправляти.
Виконання запитів
Якщо ви розгорнете папки на вкладці "Collections" , ви побачите, що у нас є безліч різних запитів, які ми можемо зробити. За кольором кодування, ви можете помітити, що ми можемо використовувати три типи методів :
- GET: Метод "GET" використовується для отримання даних із сервера. Ми будемо використовувати його, щоб дізнатися інформацію про баланс вашого акаунта, ціни на активи і т.д.
- POST: Зазвичай ми використовуємо метод "POST" для створення інформації на сервері. Це необхідно для таких речей, як розміщення ордерів, запит на зняття коштів і т.д.
- DELETE: Метод "DELETE" – це запит до сервера на видалення інформації. Він стане в нагоді для скасування ордерів.
Пошук списку символів і правил торгівлі
Час для нашого першого запиту! Ми збираємося отримати символи, якими можна торгувати на біржі, і правила торгівлі:
GET /exchangeInfo
Цей запит не приймає жодних додаткових параметрів – ви можете скопіювати і вставити його в адресний рядок, та отримаєте відповідь. У Postman легше переглядати та змінювати запити, в які ми включаємо кілька параметрів.
У самому верхньому виділеному розділі, ви побачите важливу інформацію:
- статус відповіді (200 означає, що запит успішний, 400-499 означає, що у нас виникла проблема)
час, необхідний для отримання відповіді (менше секунди)
розмір відповіді (~22КБ).
У другому полі – основна частина відповіді. Вона красиво надрукована, щоб було трохи легше для очей. Вона містить інформацію про саму біржу, а також про пари, якими ви можете торгувати, і їх мінімальні/максимальні суми.
Схоже, що інформації багато, але формат дозволяє легко працювати з нею програмно. При написанні скриптів для взаємодії, ви легко зможете вибрати певні властивості певних елементів з відповіді.
Перевірка балансу акаунта
Давайте перевіримо, які активи у нас є і скільки їх:
GET /account
Вітаємо з новим (неіснуючим) багатством!
Як дізнатися поточну ціну символу
Ми можемо отримати поточну ціну активу різними способами. Можливо, найпростіший – з таким запитом:
GET /api/v3/ticker/24hr
GET /api/v3/price
Як і в попередньому випадку, ви можете змінити змінну символу або повністю видалити її, та отримати останню ціну для всіх символів.
Перевірка поточної глибини книги ордерів
Глибина книги ордерів (також називається глибина ринку або DOM) може багато розповісти нам про ринок. Ми збираємося здійснити виклик, щоб повернути корисну інформацію:
GET api/v3/depth
Коли ми відправляємо його зі значеннями за замовчуванням ("Market" > "Order Book"), ми отримуємо відповідь, в якій повідомляється про бід та аск для BTCUSDT. Сервер тестової мережі не видасть стільки даних, скільки фактичний, тому нижче наведено знімок екрана того, що ви очікуєте побачити в реальному середовищі:
У виділеному вище розділі ми бачимо перший бід. Оскільки ми дивимося на книгу для BTCUSDT, верхнє число – це ціна, яку хтось готовий заплатити за ваш BTC. Нижче вказана сума, яку вони готові купити. Таким чином, це говорить про те, що цей ордер запитує 0,999 BTC за курсом 9 704,65 USDT за BTC. Якби ми продовжили прокрутку вниз, то побачили б зниження ціни пропозиції – це означає, що покупцю будуть платити менше.
Краща пропозиція, природно, буде найпривабливішою, якщо ви хочете отримати прибуток. Проте, якщо ви намагаєтеся продати по ринку, скажімо, 3 BTC, ви зможете продати тільки 0,999 BTC за найкращою ціною. Вам потрібно буде приймати подальші (дешевші) пропозиції, поки ваш ордер не буде виконаний повністю.
Розміщення тестового ордера
Тепер ми розмістимо тестовий ордер.
POST api/v3/order/test
Як бачите, у нас задіяно ще більше параметрів. Давайте пройдемося по відміченим:
- symbol - ми вже зустрічалися з цим раніше. Це пара, якою ви хочете торгувати.
- side – тут ви вказуєте, чи хочете ви КУПУВАТИ або ПРОДАВАТИ. Для пари BTCUSDT, BUY вказує, що ви хочете купити BTC за USDT, тоді як SELL буде продавати BTC за USDT.
- type – тип ордера, який ви хочете надіслати. Можливі значення (детально тут):
- LIMIT
- MARKET
- STOP_LOSS
- STOP_LOSS_LIMIT
- TAKE_PROFIT
- TAKE_PROFIT_LIMIT
- LIMIT_MAKER
- timeInForce– цей параметр виражає те, як ви хочете, щоб ордер виконувався:
- GTC (Діє до відміни) – можливо, це найпопулярніше налаштування. GTC гарантує, що ваш ордер дійсний до тих пір, поки він не буде виконаний або поки ви його не скасуєте.
- FOK (Виконати або Анулювати) – ФОК дає вказівку біржі виконати ордер відразу. Якщо біржа не може зробити цього, ордер негайно анулюється.
- IOC (виконати відразу або скасувати) – ордер повинен бути виконаний повністю або частково негайно, або він буде скасований. На відміну від FOK, ордери не скасовуються, якщо вони можуть бути частково виконані.
- quantity – просто кількість активу, який ви хочете купити або продати.
- price – ціна, по якій ви хочете продати. Для пари BTCUSDT це виражається в USDT.
- newClientOrderId – ідентифікатор ордера. Це не обов'язкове поле, але ви можете встановити в ньому ідентифікатор, який спростить запит пізніше. В іншому випадку він генерується випадковим чином на біржі.
Розміщення реального ордера
Час розмістити справжній фейковий ордер.
POST /api/v3/order
У разі успіху, ваша відповідь містить детальну інформацію щодо ордера.
Перевірка статуса відкритого ордера
Ми отримали підтвердження, що ордер було розміщено у попередньому розділі, але що, якщо ми захочемо перевірити його пізніше? У нашому розпорядженні є кілька запитів.
GET /api/v3/openOrders
GET /api/v3/allOrders
І нарешті, ми можемо запитувати конкретні ордери за допомогою:
GET /api/v3/order
Скасування ордера
Через деякий час ми можемо вирішити, що ціль у 40 000$ є занадто оптимістичною, тому ми хочемо скасувати ордер. В цьому випадку ми б використовували:
DELETE /api/v3/order
Розмізення ордера, який заповнюється миттєво
Нижче ви можете побачити, що ми збираємося відправити маркет ордер на продаж BNB за BUSD за поточною ринковою ціною.
Зверніть увагу, що відповідь дає нам мінімальну інформацію:
Перевірка ваших угод
Нарешті, давайте подивимося на кінцеву точку для перевірки ваших угод:
GET /api/v3/myTrades
Налагодження з Postman
У Postman, можна додатково розкрити необроблений HTTP-запит і відповідь.
Це меню відкриє консоль Postman, яке показує деталі кожного запиту.
Заключні думки
Метою цього посібника ознайомити вас з Binance API, не написавши жодного рядка коду. Якщо ви виконали всі необхідні кроки, тепер ви повинні розуміти, як ми можемо запитувати і відправляти інформацію.