Основные выводы

  • API — это фрагменты кода, которые позволяют приложениям обмениваться информацией и могут использоваться для улучшения стратегий торговли криптовалютой.

  • Postman — это платформа API, которая упрощает процесс создания и использования API.

  • Узнайте больше об использовании Postman для спотовой торговли в экосистеме Binance API.

Binance API Series Pt. I – Spot Trading with Postman

Введение

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

В этой статье мы будем использовать Postman — упрощенную платформу API для связи с биржей. Не волнуйтесь – мы не будем подвергать риску реальные средства.

Предварительные условия

Ключи тестовой сети

Мы собираемся использовать тестовую сеть для наших текущих целей. Эта функция моделирования даст нам некоторые средства, не имеющие реальной ценности, с которыми можно было бы экспериментировать. Они функционируют так же, как настоящие монеты и токены, поэтому, как только вы освоитесь с API, вы сможете начать использовать его для торговли реальными средствами.

  1. Начните с посещения сети точечного тестирования.

  2. Чтобы получить доступ, войдите под учетной записью GitHub. Вам нужно будет создать его, если вы еще этого не сделали.

  3. Нажмите «Аутентификация» и войдите в систему через GitHub.

  4. В разделе «Ключи API» вам сообщат, что у вас нет зарегистрированных ключей. Нажмите «Создать ключ HMAC_SHA256», чтобы создать пару.

  5. На следующем экране дайте клавишам метки. Назовите их как хотите и нажмите «Создать».

  6. Вам предоставлены два ключа: ключ API и секретный ключ. Важно, чтобы вы записали это сейчас. Если вы этого не сделаете, вам придется начать процесс создания ключа заново. Мы рекомендуем сохранить их в приложении заметок на вашем компьютере, чтобы их можно было легко скопировать позже.

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

Загрузка и установка Почтальона

Postman — это платформа для совместной работы API. Для нас это идеальная отправная точка — у нас будет доступ к коллекциям запросов Binance, которые мы будем тестировать без необходимости писать единую строку кода.

Программа доступна для Mac, Windows и Linux. Перейдите на страницу «Загрузки» и загрузите ZIP-файл.

Как только это будет завершено, найдите его в проводнике и установите. Запустите приложение, и все готово! Вы можете создать учетную запись для входа в систему, но это не обязательно. Если вы хотите пропустить этот шаг, просто выберите соответствующую опцию в нижней части окна.

Создание окружающей среды

На этом этапе у вас должен быть интерфейс, похожий на следующий.

Во-первых, мы хотим создать нашу среду. Этот шаг — всего лишь способ добавить переменные в запросы, с которыми мы будем работать. Сначала нам нужно получить некоторую информацию из репозитория Binance GitHub. Перейдите сюда и загрузите ZIP-файл.

Загрузка не должна занять много времени. Вы можете найти его в проводнике и разархивировать. Затем мы можем вернуться в Почтальон.

Нажмите на значок шестеренки в правом верхнем углу (показано выше). Вас встретит всплывающее окно «Управление средами».

  1. Выберите «Импорт» и перейдите к извлеченной папке (binance-postman-api).

  2. Введите его, затем войдите в папку Environments.

  3. Теперь вы увидите два файла (один для основной сети и один для тестовой сети). Нам нужен binance_com_spot_testnet_api.postman_environment.json. Убедитесь, что у вас правильный ключ, потому что наши ключи не будут работать с другим.

Почти готово. Нажмите Binance Spot Testnet API, чтобы увидеть переменные ниже. Отредактируйте два параметра, обведенные красным, вставив сохраненные ранее ключи. Нажмите «Обновить» и закройте всплывающее окно.

На этом экране оставьте поля метки времени и подписи пустыми. Эти два значения будут автоматически создаваться при каждом запросе.

Осталось сделать еще одно. Справа от значка шестеренки, который мы нажали ранее, чтобы настроить среду, вы увидите раскрывающееся меню, в котором в настоящее время указано «Нет среды». Нажмите на нее и выберите Binance Spot Testnet API.

Импорт коллекции

Теперь импортируем коллекцию — это обширный ассортимент запросов, которые делают за нас тяжелую работу при звонках. Чтобы загрузить его в нашу среду:

  1. Нажмите «Импорт» в левом верхнем углу.

  2. Во всплывающем окне на вкладке «Файл» выберите «Загрузить файлы».

  3. Снова ищем папку binance-postman-api. Найдите и откройте его.

  4. На этот раз введите коллекции в подкаталог.

  5. Здесь снова два файла. Один предназначен для работы с фьючерсным API. Но мы работаем со спотовым, поэтому вам необходимо выбрать файл Binance Spot API.postman_collection.json.

  6. Теперь вы должны увидеть экран подтверждения, указывающий, что импорт выполнен в формате коллекции Postman. Выберите Импорт.

На вкладке «Коллекции» в левой части окна вы заметите, что у нас есть папка с более чем 100 запросами. Поздравляем! Мы готовы идти. В следующем разделе мы рассмотрим типы запросов, которые мы можем делать.

Делать запросы

Если вы развернете папки на вкладке «Коллекции», вы увидите, что мы можем делать много разных запросов. Судя по цветовому кодированию, вы можете заметить, что мы можем использовать три типа методов:

  • GET: метод GET используется для получения данных с сервера. Мы будем использовать это, чтобы найти информацию о балансе вашего счета, ценах на активы и т. д.

  • POST: Обычно мы используем метод POST для создания информации на сервере. Этот метод необходим для таких вещей, как размещение заказов, запрос вывода средств и т. д.

  • DELETE: метод DELETE запрашивает сервер удалить информацию. Это пригодится для отмены заказов.

Найдите список символов и правила торговли.

Пришло время нашего первого запроса! Мы собираемся получить символы, которыми можно торговать на бирже, и правила торговли:

ПОЛУЧИТЬ /api/v3/exchangeInfo

Он не принимает никаких дополнительных параметров — вы можете скопировать и вставить его в адресную строку, и вы получите ответ. Но Postman позволяет легко просматривать и изменять запросы, в которые мы включаем несколько параметров.

Чтобы загрузить этот запрос, выберите «Рынок» > «Информация об обмене». Появится вкладка, подобная следующей:

Нам больше ничего делать здесь не нужно, поэтому нажмите «Отправить». После этого вы получите ответ:

В самом верхнем выделенном разделе вы увидите важную информацию:

  • Статус ответа (200 означает, что мы добились успеха, 400–499 означает, что мы столкнулись с проблемой).

  • Время, затраченное на получение ответа (менее секунды).

  • Размер ответа (~22 КБ).

Во втором поле находится основная часть ответа. В этом окне содержится информация о бирже, парах, которыми вы можете торговать, и их минимальных/максимальных суммах.

Похоже, что информации много, но формат позволяет легко работать с ней программно. При написании сценариев взаимодействия с ним вы легко сможете выбрать из ответа конкретные свойства конкретных элементов.

Проверьте баланс счетов

Давайте проверим, какие активы у нас есть и сколько каждого из них:

ПОЛУЧИТЬ /api/v3/аккаунт

Вы можете найти его в разделе «Торговля» > «Информация об аккаунте». Нажмите на него, чтобы увидеть макет, аналогичный предыдущему. Однако вы также заметите, что у нас есть две новые переменные: метка времени и подпись. Подпись является мерой безопасности. Поскольку сейчас мы запрашиваем конфиденциальную информацию, это докажет, что мы являемся владельцем учетной записи.

Временная метка сообщает серверу, когда был отправлен запрос. Поскольку сети могут быть ненадежными или выходить из строя, сервер может получить наш запрос намного позже, чем предполагалось. Если прошло слишком много времени, запрос будет отклонен. Вы можете указать, как долго вы хотите ждать, с помощью параметра RecvWindow, значение которого по умолчанию составляет 5000 миллисекунд.

Postman генерирует за нас оба этих поля. Нажмите «Отправить», и вы получите ответ. Под балансами вы должны увидеть шесть активов — BNB, BTC, BUSD, ETH, LTC и TRX. Баланс будет разделен на свободные и заблокированные активы. Мы еще ничего не заблокировали, поэтому все ваши активы должны быть бесплатными.

Получить текущую цену за символ

Мы можем получить текущую цену актива разными способами. Возможно, самым простым является следующий запрос:

ПОЛУЧИТЬ /api/v3/ticker/24hr

Как вы могли догадаться, это даст нам информацию о ценах на активы за последние двадцать четыре часа. Вы можете найти его в разделе «Рынок» > «Статистика изменения цен тикеров за 24 часа». Пара по умолчанию, которую мы встречаем в качестве переменной символа, — это BTC/USDT.

Вы можете отправить это прямо сейчас, чтобы увидеть разбивку информации о ценах. Вы также можете изменить символ (на BNB/USDT, LTC/USDT и т. д.) или снять флажок с переменной, чтобы вернуть данные по 40 парам.

У нас также есть более простой вызов (Рынок > Тикер цены символа), который возвращает текущую цену, по которой торгуется актив:

ПОЛУЧИТЬ /api/v3/price

Как и в предыдущем случае, вы можете изменить переменную символа или полностью удалить ее и получить последнюю цену для всех символов.

Проверьте текущую глубину стакана заказов

Глубина стакана заявок, также называемая глубиной рынка (DOM), может многое рассказать нам о рынке. Мы собираемся сделать вызов, который вернет некоторую полезную информацию:

ПОЛУЧИТЬ /api/v3/глубину

Когда мы отправляем его со значениями по умолчанию (Рынок > Книга заказов), мы получаем ответ, в котором сообщается о ставках и запрашивается BTC/USDT. Сервер тестовой сети не предоставит столько данных, сколько реальный, поэтому ниже приведен снимок экрана того, что вы ожидаете увидеть в реальной среде:

В выделенном разделе выше мы видим первую ставку. Поскольку мы рассматриваем книгу BTC/USDT, верхнее число — это цена, которую кто-то готов заплатить за ваш BTC. Ниже указана сумма, которую они готовы купить. Таким образом, здесь говорится, что этот заказ запрашивает 0,999 BTC по курсу 9704,65 USDT за BTC. Если мы продолжим прокручивать вниз, мы увидим снижение цены предложения, что представляет собой покупателей, которые будут платить меньше.

Лучшее предложение, естественно, будет наиболее привлекательным, если вы ищете выгодную цену. Тем не менее, если вы пытаетесь продать, например, 3 BTC, вы сможете продать только 0,999 BTC по лучшей цене. Вам придется принимать последующие (более дешевые) предложения, пока ваш заказ не будет выполнен.

Продолжайте прокручивать, и вы увидите вопросы. Функционально они аналогичны бидам, за исключением того, что представляют собой приказы на продажу BTC за USDT.

Разместите тестовый заказ

Сейчас мы разместим тестовый заказ.

POST /api/v3/order/test

Несмотря на то, что мы просто используем средства тестовой сети, этот запрос на самом деле не приведет к размещению заказа. Это может быть полезно для тестирования заказов перед их отправкой. Найдите его в разделе «Торговля» > «Протестировать новый ордер (TRADE)».

Как видите, у нас задействовано гораздо больше параметров. Пройдемся по проверенным:

  • символ – мы уже сталкивались с этим ранее. Это пара, которой вы хотите торговать.

  • сторона – здесь вы указываете, хотите ли вы КУПИТЬ или ПРОДАТЬ. Для пары BTC/USDT ПОКУПКА означает, что вы хотите купить BTC за USDT, тогда как продажа будет продавать BTC за USDT.

  • type – тип ордера, который вы хотите отправить. Возможные значения (подробно здесь):

    • ПРЕДЕЛ

    • РЫНОК

    • ОСТАНОВИТЬ ПОТЕРИ

    • STOP_LOSS_LIMIT

    • TAKE_PROFIT

    • TAKE_PROFIT_LIMIT

    • LIMIT_MAKER

  • timeInForce – этот параметр выражает то, как вы хотите, чтобы ордер выполнялся:

    • GTC (действителен до отмены) – пожалуй, самая популярная настройка. GTC гарантирует, что ваш заказ действителен до тех пор, пока он не будет исполнен или отменен.

    • FOK (заполнить или уничтожить) – FOK дает указание бирже выполнить весь ордер одновременно. Если обмен не может этого сделать, заказ немедленно отменяется.

    • IOC (немедленно или отменить) – либо весь ордер, либо его часть должны быть исполнены немедленно, либо он отменяется. В отличие от ФОК, ордера не отменяются, если их можно исполнить частично.

  • Количество – количество актива, которое вы хотите купить или продать.

  • цена – цена, по которой вы хотите продать. Для пары BTC/USDT это выражается в долларах США.

  • newClientOrderId – идентификатор заказа. Это не обязательное поле, но вы можете установить для него идентификатор, который облегчит выполнение запроса в дальнейшем. В противном случае он генерируется биржей случайным образом.

Хорошо! Давайте теперь создадим тестовый заказ. Мы продолжим с автоматически сгенерированными значениями: лимитный ордер на продажу 0,1 BTC за USDT по цене 9000 долларов США. Нажмите «Отправить». Если это удастся, мы получим {} в качестве ответа.

Сделайте реальный заказ

Пора сделать настоящий заказ.

ПОСТ /api/v3/заказ

Перейдите в «Торговля» > «Новый ордер». Вы уже знакомы с тестовыми заказами, поэтому параметры здесь никого не удивят. Давайте оставим все значения как есть, но изменим цену, которую мы продаем, на 40 000 долларов США. Измените значение цены, чтобы отразить это. Затем нажмите «Отправить».

В случае успеха ваш ответ возвращает множество подробностей о заказе.

Проверить статус открытого заказа

Мы получили подтверждение, что заказ был размещен в предыдущем разделе, но что, если мы захотим перепроверить его позже? В нашем распоряжении есть несколько запросов.

ПОЛУЧИТЬ /api/v3/openOrders

Вы найдете это в разделе «Торговля» > «Текущие открытые ордера» (USER_DATA). По умолчанию выбран BTC/USDT. Если вы нажмете «Отправить», вы получите все открытые ордера BTC/USDT (пока вы увидите только тот, который мы установили ранее). Вы также можете не указывать символ, который вместо этого вернет все ваши открытые ордера.

ПОЛУЧИТЬ /api/v3/allOrders

Торговля > Все ордера (USER_DATA) дает вам обзор всех ордеров, а не только открытых. Здесь вы должны указать символ. orderId, startTime, endTime и limit — это необязательные параметры, которые помогут вам уточнить поиск. Мы оставим их здесь, поэтому снимите с них галочку. Нажмите «Отправить», и вы увидите тот же ответ, что и раньше. Если у вас были закрытые или отмененные ордера, вы также увидите их здесь.

Наконец, мы можем запросить конкретные заказы с помощью следующего:

ПОЛУЧИТЬ /api/v3/order

Получите это в разделе «Торговля» > «Ордер запроса» (USER_DATA). Вам потребуется указать либо orderId, либо origClientOrderId (необязательный тег «newClientOrderId», который вы можете добавить к заказам). Снимите флажок с идентификатора заказа. Для origClientOrderId мы предоставим ранее использованный тег по умолчанию — «my_order_id_1». Заполните поле и нажмите «Отправить», чтобы получить ответ.

Отменить заказ

Через некоторое время мы можем решить, что цель в 40 000 долларов США слишком оптимистична, поэтому мы хотим ее отменить. В этом случае мы будем использовать следующее:

УДАЛИТЬ /api/v3/order

В разделе «Торговля» > «Отменить ордер» находится запрос, который позволит нам выделить ордера для отмены. Снимите флажки orderId и newClientOrderId и передайте «my_order_id_1» в качестве значения origClientOrderId.

Когда вы отправите этот запрос, заказ будет возвращен. Если вы прокрутите вниз до «статуса», вы увидите, что он действительно отменен. Чтобы подтвердить это, снова используйте конечную точку GET /api/v3/openOrders (получив пустой список) или GET /api/v3/order с origClientOrderId.

Разместите заказ, который исполняется мгновенно

Наш предыдущий ордер не был исполнен, поскольку это был лимитный ордер, который сработал только тогда, когда цена BTC достигнет 40 000 долларов США. При использовании рыночного ордера мы, по сути, говорим: «Покупайте или продавайте по любой цене, по которой актив торгуется в данный момент». Это заполнится мгновенно.

Для этого вернемся в «Торговля» > «Новый порядок». Мы продемонстрируем тип ответа (newOrderRespType), который представляет собой параметр, который мы можем настроить в зависимости от ответа, который мы хотим получить от сервера. Здесь есть три варианта: ACK, RESULT или FULL — здесь вы можете увидеть примеры каждого ответа. Мы будем использовать ACK, который дает нам простое подтверждение того, что заказ был получен.

Ниже вы можете видеть, что мы собираемся подать рыночный ордер на продажу BNB за BUSD по текущей рыночной цене.

Обратите внимание, что ответ дает нам минимум информации:

Вы можете убедиться, что заказ был выполнен с помощью конечной точки /api/v3/allOrders.

Проверка ваших сделок

Давайте наконец посмотрим на конечную точку для проверки ваших сделок:

ПОЛУЧИТЬ /api/v3/myTrades

Он находится в разделе «Торговля» > «Список сделок учетной записи» (USER_DATA). Это позволяет вам проверять каждую сделку по определенному символу. Если вы хотите видеть все свои сделки для символа по умолчанию (BTC/USDT), просто снимите флажки startTime, endTime и fromId. Ответ вернет до 500 сделок — просто измените лимит, если хотите увидеть больше.

Отладка с помощью Postman

В Postman можно дополнительно раскрыть необработанный HTTP-запрос и ответ.

Это меню откроет консоль Postman, которая распечатает детали каждого запроса.

Начните работу с API Binance

Целью этого руководства было мягко познакомить вас с API Binance, не написав ни единой строчки кода. Если вы следовали инструкциям, теперь у вас должно быть представление о том, как мы можем запрашивать и отправлять информацию.

А пока вопросы? Посетите наш растущий форум сообщества разработчиков Binance или просмотрите документацию.

Дальнейшее чтение

  • Глоссарий: Интерфейс прикладного программирования (API)

  • Что такое ключ API и как его безопасно использовать?

  • Как безопасно использовать ключ API: 5 советов от Binance