Пример работы с api binance

Содержание
  1. Как создать криптовалютный дашборд с помощью Plotly и API Binance
  2. Как установить API Binance
  3. Настраиваем реальный API Binance
  4. Настраиваем тестовый API Binance
  5. Как получить данные с помощью API Binance
  6. Устанавливаем библиотеку python-binance
  7. Получаем информацию об аккаунте
  8. Получаем архивные данные
  9. Получаем данные в реальном времени
  10. Как создать дашборд с помощью Plotly
  11. Как создать API ключ для фьючерсов на бирже Binance?
  12. Вводная информация
  13. Binance Futures — что это? Общее описание
  14. Публичные запросы
  15. Проверка связи — /api/v1/ping
  16. Получение времени биржи — /api/v1/time
  17. Настройки и лимиты биржи — /api/v1/exchangeInfo
  18. Открытые ордера на бирже — /api/v1/depth
  19. Последние (чужие) сделки — /api/v1/trades
  20. Сжатая история сделок — /api/v1/aggTrades
  21. Данные по свечам – /api/v1/klines
  22. Статистика за 24 часа — /api/v1/ticker/24hr
  23. Последняя цена по паре (или парам) — /api/v3/ticker/price
  24. Лучшие цены покупки/продажи — /api/v3/ticker/bookTicker
  25. Преимущества и недостатки использования ботов
  26. Авторизованные запросы:
  27. Создание ордера — /api/v3/order

Как создать криптовалютный дашборд с помощью Plotly и API Binance

Упрощаем отслеживание активов

Как установить API Binance

Binance предоставляет два типа доступа к API: реальный и тестовый.

Настраиваем реальный API Binance

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

Для начала нужно зарегистрироваться на Binance.

После регистрации вам будет предложено установить двухфакторную аутентификацию (2FA). Вы также можете подключить ее самостоятельно в настройках безопасности.

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

Указываем метки и нажимаем Create API. После этого нужно пройти аутентификацию еще раз. Затем отобразятся API Key и Secret Key. Скопируйте их в безопасное место. По умолчанию получить доступ к ключам можно следующим способом, который можно изменить:

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

Сохранять ключи реального API мы будем в файл secret.cfg , как показано ниже. Не забывайте, что нельзя ни с кем делиться этим файлом.

Настраиваем тестовый API Binance

Тестовый API Binance полностью имитирует взаимодействие с реальным API. Рекомендуем для начала повзаимодействовать с ним, чтобы убедиться в корректности работы приложения.

Для начала необходимо войти в систему: https://testnet.binance.vision/ (на данный момент вход поддерживается только с GitHub).

Затем нажмите на Generate HMAC_SHA256 Key (Сгенерировать ключ HMAC_SHA256) и снова укажите метки для ключей. Отобразившиеся после создания ключи также скопируйте в безопасное место. Все подробности о тестовом API можно прочитать на главной странице.

Теперь добавим ключи тестового API в файл secret.cfg , как показано ниже:

Мы успешно настроили ключи реального и тестового API и сохранили их в файле secret.cfg . Теперь можно переходить к получению данных.

Как получить данные с помощью API Binance

Устанавливаем библиотеку python-binance

Binance не предоставляет библиотеку Python для взаимодействия с API. Поэтому мы воспользуемся популярным сторонним инструментом под названием python-binance .

Устанавливаем python-binance с помощью следующей команды:

Получаем информацию об аккаунте

В этом разделе мы воспользуемся тестовым аккаунтом. По умолчанию в нем будет отображаться баланс различных криптовалют. У python-binance нет доступа к тестовому API, поэтому мы поменяем URL-адрес конечной точки.

Код ниже предоставляет информацию о тестовом аккаунте:

Мы получаем такие важные данные, как тип аккаунта ( accountType ), баланс, разрешение и прочие.

Теперь получим баланс ETH:

Библиотека python-binance предоставляет много возможностей. Подробную информацию о ней можно найти в документации.

Получаем архивные данные

Тестовый API выдает фиктивные архивные данные. Поэтому мы воспользуемся реальным API и его ключами.

Ниже показано, как получить стоимость ETH на Binance с самой ранней даты до текущего дня:

Вывод выше представляет следующие параметры, упомянутые в документации Binance API:

Преобразовываем полученные данные в датафрейм и сохраняем его как файл CSV:

Получаем данные в реальном времени

Чтобы передавать данные в реальном времени, можно воспользоваться WebSocket Binance. Вот как это сделать:

Ниже показано, как остановить потоковую передачу данных и закрыть WebSocket:

Итак, мы научились получать данные несколькими способами. Теперь можно переходить к созданию дашборда Plotly.

Как создать дашборд с помощью Plotly

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

Вот как будет выглядеть финальная версия дашборда. Детали внешнего вида можно изменить позднее:

В дашборд включены следующие функции:

  • Индикатор: общая стоимость портфеля в USDT.
  • Индикатор: общая стоимость портфеля в BTC.
  • Индикатор: конвертация BNB/USDT.
  • Круговая диаграмма: распределение портфеля (в USDT).
  • Столбчатая диаграмма: распределение токенов.

Теперь рассмотрим код.

  1. Импортируем все необходимые библиотеки:

2. Прочитываем все ключи, устанавливаем соединение и получаем информацию об аккаунте:

Читайте также:  Расчет показателя доходность инвестиционного капитала

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

4. Начинаем передавать данные в реальном времени:

5. Определяем макет, графики и хостинг:

Вот и все! Этот код позволяет отслеживать криптовалютный портфель тестового аккаунта. Его можно с легкостью настроить и для реального аккаунта без изменения URL-адреса конечной точки.

Весь код можно найти в репозитории на GitHub.

Источник

Как создать API ключ для фьючерсов на бирже Binance?

Цель этого руководства — мягко познакомить вас с Binance API без написания ни единой строчки кода

Binance API — Спотовая торговля с помощью Postman.

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

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

Цель этой серии руководств — познакомить вас с REST API Binance и научить, как с ним взаимодействовать.

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

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

Вводная информация

В отличии от многих других бирж, Binance лимитирует не только количество запросов к API, но и «вес» запросов. Причем, это не какие-то фиксированные единицы, но целый комплекс (как они заявляют, англ). Например, если вы постоянно запрашиваете свечи но не торгуете, то ваш вес накапливается и вас могут забанить. И вообще они суровые — если вы постоянно перебиваете лучшую цену на минимальную ставку, или создаете/отменяете ордера но не покупаете и продаете и т.п. то вас настигнут санкции. Так что будьте аккуратны при тестировании ботов. Впрочем, пока я тестировал, ничего плохого не случилось, хотя я порой и жестил.

Если биржа захочет вам намекнуть, что пора бы снизить пыл, она вернет 429 ответ сервера. Если вы будете игнорировать этот ответ и ломиться в закрытую дверь, то вас забанят по IP на срок от 2 минут до 3 дней.

Подключение к API биржи идет через https://api.binance.com, для авторизованных запросов нужно отправлять ключ в заголовке X-MBX-APIKEY, и подписывать тело запроса SHA256.

Что бы вы не заморачивались с этим, я написал код, который позволяет все указанные запросы выполнять. Для его работы нужно установить Python версии 3.6+ с официального сайта, потом в командной строке выполнить pip install requests. Создайте папку (для удобства), создайте новый файл binance_api.py, и вставьте туда этот код:

Для тестирования методов, создайте в этой же папке второй файл, например, binance_test.py, туда вставьте вот такой код (подставьте свои API ключи):

from binance_api import Binance bot = Binance( API_KEY=’D7…Ejj’, API_SECRET=’gwQ…u3A’ ) print(‘account’, bot.account())

(Или возьмите с гитхаба)

После этого код можно запускать. К примеру, если вы только установили Python и не знаете, что делать, найдите редактор Idle (он устанавливается вместе с питоном), в нем File -> Open, откройте файл binance_test.py и нажмите F5. Код, представленный выше, вернет информацию по вашему аккаунту — подробности ниже.

Еще немного общей информации: практически во всех подписанных запросах необходимо указывать параметр timestamp — это текущее unix-время в милиосекундах. Но, так как некоторые сети бывают перегружены, то ваш запрос может заблудиться и придти позже. Поэтому биржа предоставляет вам временное окно (по умолчанию 5000 милисекунд). Если у вас запросы не успевают придти в это окно, вы можете его расширить с помощью параметра recvWindow. Но, думаю, это мало кому понадобится.

Binance Futures — что это? Общее описание

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


Символично

Согласно данным CoinGecko, Binance Futures — самая крупная биржа криптовалютных деривативов по объему торгов: 24-часовой торговый объем превышает 26 миллиардов долларов, за сутки открывается позиций почти на 2 миллиарда. Высокий спрос объясняется главным образом покровительством основной площадки Бинанс, которая также лидер индустрии, и высоким кредитным плечом 125х, открывающим широкие торговые возможности.


Рекорд биржи по ежедневным торгам

Работа с платформой доступна во всех странах, где доступна биржа Binance — то есть там, где это не запрещено законодательно. Поддерживаемые языки интерфейса: русский, украинский, английский, испанский, немецкий; португальский, итальянский, китайский и т.д. (суммарно 20 языков).

Основатель и генеральный директор: Чанпен Чжао.


Основатель одной из крупнейших бирж

Публичные запросы

Проверка связи — /api/v1/ping

Метод для проверки работы API. Возвращает пустой словарь

Читайте также:  Метод анализа точки безубыточности для оценки экономической эффективности инвестиций относится

Ссылка для просмотра в браузере https://api.binance.com/api/v1/ping. Вес — 1 Код для проверки:

from binance_api import Binance bot = Binance( API_KEY=’D7…Ejj’, API_SECRET=’gwQ…u3A’ ) print(bot.ping())

Получение времени биржи — /api/v1/time

Ссылка для просмотра в браузере https://api.binance.com/api/v1/time Вес — 1 Возвращает словарь с текущим временем:

Код для проверки:

from binance_api import Binance bot = Binance( API_KEY=’D7…Ejj’, API_SECRET=’gwQ…u3A’ ) print(bot.time())

Настройки и лимиты биржи — /api/v1/exchangeInfo

Ссылка для просмотра в браузере https://api.binance.com/api/v1/exchangeInfo Вес — 1 Возвращает структуру данных:

Ключ rateLimits ведет на массив с лимитами — сколько запросов в секунду/минуту/день можно делать. Ключ symbols содержит настройки для каждой пары — рассмотрим одну, ETHBTC

symbol — непосредственно пара status — TRADING -разрешена торговля baseAsset — базовая валюта baseAssetPrecision — требуемое количество символов базовой валюты после запятой при создании ордера (для цены и количества) quoteAsset — квотируемая валюта quotePrecision — требуемое количество символов квотируемой валюты после запятой при создании ордера (для цены и количества) «orderTypes»: [ «LIMIT», «LIMIT_MAKER», «MARKET», «STOP_LOSS_LIMIT», «TAKE_PROFIT_LIMIT» ] — допустимые виды ордеров по паре icebergAllowed — разрешено ли создание айсбергов (ордеров с невидимой частью) filters — ограничение ордеров PRICE_FILTER — ограничение цены создаваемого ордера. Цена ордера должна быть в диапазоне min_price и max_price, и шаг торговли должен быть кратен tickSize. Да да, тут нельзя ставить ордера с произвольной ценой. LOT_SIZE — ограничение объема создаваемого ордера. Объем должен быть в диапазоне minQty и maxQty, и быть кратен stepSize. MIN_NOTIONAL — итоговая сумма ордера (объем*цена) должна быть выше minNotional. Код для проверки:

from binance_api import Binance bot = Binance( API_KEY=’D7…Ejj’, API_SECRET=’gwQ…u3A’ ) print(bot.exchangeInfo())

Открытые ордера на бирже — /api/v1/depth

Метод позволяет получить книгу ордеров. Принимает параметры: Обязательные: symbol — пара Необязательные: limit — кол-во возвращаемых записей от 5 до 1000 (по умолчанию 100). Допустимые значения: 5, 10, 20, 50, 100, 500, 1000. Еще можно указать 0, но он может вернуть большое кол-во данных. Вес зависит от параметра limit. При лимите от 5 до 100 вес будет равен 1. Для параметра 500 вес составит 5. Для параметра 1000 вес будет 10. Ссылка для просмотра в браузере: https://api.binance.com/api/v1/depth?symbol=ETHBTC Возвращает значения:

bids — это списки цен/объемов на покупку, asks — на продажу. Пример кода:

from binance_api import Binance bot = Binance( API_KEY=’D7…Ejj’, API_SECRET=’gwQ…u3A’ ) print(‘depth’, bot.depth( symbol=’BNBBTC’, limit=5 ))

Последние (чужие) сделки — /api/v1/trades

Принимает параметры: Обязательные: symbol — пара Необязательные: limit — кол-во возвращаемых записей (максимум 500, по умолчанию 500). Вес — 1 Ссылка для просмотра в браузере: https://api.binance.com/api/v1/trades?symbol=ETHBTC Пример ответа:

id — id сделки price — цена qty — количество time — время сделки isBuyerMaker — была ли покупка по указанной покупателем цене, isBestMatch — была ли встречная сделка Пример кода:

from binance_api import Binance bot = Binance( API_KEY=’D7…Ejj’, API_SECRET=’gwQ…u3A’ ) print(‘trades’, bot.trades( symbol=’BNBBTC’, limit=1 ))

Сжатая история сделок — /api/v1/aggTrades

Метод позволяет получить суммарную историю сделок. Сделки, выполненные в одно время по одному ордеру и по одной цене будут представлены одной строкой с объединенным количеством. Вес — 1 Ссылка для просмотра в браузере: https://api.binance.com/api/v1/aggTrades?symbol=ETHBTC Принимает параметры: Обязательные: symbol — пара Необязательные: fromID — показывать начиная со сделки № (включительно) startTime — начиная с какого времени (включительно) endTime — заканчивая каким временем (включительно) limit — Кол-во записей (максимум 500, по умолчанию 500) Возвращает данные:

from binance_api import Binance bot = Binance( API_KEY=’D7…Ejj’, API_SECRET=’gwQ…u3A’ ) print(‘aggTrades’, bot.aggTrades( symbol=’BNBBTC’, limit=1 ))

Данные по свечам – /api/v1/klines

Вес – 1 Ссылка для просмотра в браузере https://api.binance.com/api/v1/klines?symbol=LTCBTC&interval=5m Параметры: Обязательные: symbol – пара interval – период свечи Допустимые интервалы: • 1m // 1 минута • 3m // 3 минуты • 5m // 5 минут • 15m // 15 минут • 30m // 30 минут • 1h // 1 час • 2h // 2 часа • 4h // 4 часа • 6h // 6 часов • 8h // 8 часов • 12h // 12 часов • 1d // 1 день • 3d // 3 дня • 1w // 1 неделя • 1M // 1 месяц

Необязательные: limit – кол-во свечей (максимум 500, по умолчанию 500) startTime – время начала построения endTime – окончание периода Если не указаны параметры startTime и endTime, то возвращаются самые последние свечи. Пример ответа:

[ [ 1499040000000, // Время открытия «0.01634790», // Цена открытия (Open) «0.80000000», // Максимальная цена (High) «0.01575800», // Минимальная цена (Low) «0.01577100», // Цена закрытия (Close) «148976.11427815», // Объем 1499644799999, // Время закрытия «2434.19055334», // Объем квотируемой валюты 308, // Кол-во сделок «1756.87402397», // Taker buy base asset volume «28.46694368», // Taker buy quote asset volume «17928899.62484339» // Ignore ] ]

from binance_api import Binance bot = Binance( API_KEY=’D7…Ejj’, API_SECRET=’gwQ…u3A’ ) print(‘klines’, bot.klines( symbol=’BNBBTC’, interval=’5m’, limit=1 ))

Статистика за 24 часа — /api/v1/ticker/24hr

Вес – 1, если указана пара, иначе вес равен (количеству всех торгуемых пар)/2. Ссылка для просмотра в браузере: https://api.binance.com/api/v1/ticker/24hr?symbol=BNBBTC Параметры: Необязательные: symbol – пара Если symbol не указан, возвращаются данные по всем парам. В этом случае, считается, что вы сделали столько запросов к бирже, сколько вернулось пар. Пример ответа:

Читайте также:  Бинанс что такое осо

Если пар несколько, то такие словари вкладываются в массив, вот так:

from binance_api import Binance bot = Binance( API_KEY=’D7…Ejj’, API_SECRET=’gwQ…u3A’ ) print(‘ticker/24hr’, bot.ticker24hr( symbol=’BNBBTC’ ))

Последняя цена по паре (или парам) — /api/v3/ticker/price

Вес — 1 Параметры: Необязательные: symbol – пара Если параметр symbol не указан, то возвращаются цены по всем парам. Ссылка для просмотра в браузере: https://api.binance.com/api/v3/ticker/price?symbol=BNBBTC Пример ответа:

Или (если не указан параметр)

from binance_api import Binance bot = Binance( API_KEY=’D7…Ejj’, API_SECRET=’gwQ…u3A’ ) print(‘ticker/price’, bot.tickerPrice( symbol=’BNBBTC’ ))

Лучшие цены покупки/продажи — /api/v3/ticker/bookTicker

Вес 1 Параметры: Необязательные: symbol – пара Если параметр symbol не указан, возвращаются данные по всем парам. Ссылка для просмотра в браузере: https://api.binance.com/api/v3/ticker/bookTicker?symbol=BNBBTC Пример ответа:

Или (если не указан параметр):

from binance_api import Binance bot = Binance( API_KEY=’D7…Ejj’, API_SECRET=’gwQ…u3A’ ) print(‘ticker/bookTicker’, bot.tickerBookTicker( symbol=’BNBBTC’ ))

Преимущества и недостатки использования ботов

Основные плюсы работы с торговыми ботами для Бинанс:

  • Это полезно для рынка в целом. Эксперты признают, что автоматизированные системы делают рынок более эффективным, инклюзивным и здоровым. Благодаря массовому использованию ботов, в последние годы значительно сократился ценовой спред на бирже.
  • Бот работает всегда, даже когда человек спит. Таким образом не теряется ни минуты времени для прибыльной торговли.
  • Роботы избавляют от рутины. Ни один человек не сможет выдержать монотонное совершение однотипных действий месяцами.
  • Высокая точность входа и выхода из позиций.
  • Отсутствие эмоций, которые иногда заставляют трейдера совершать необдуманные поступки.
  • Большая ликвидность, создаваемая в результате торговли ботами, привлекает в индустрию новые лица и компании.

К недостаткам можно отнести следующие моменты:

  • Бот не на 100% самостоятелен, он все равно нуждается в наблюдении и настройке. Для этого нужны определенные технические и финансовые познания.
  • Качество торговли напрямую зависит от качества алгоритмов, то есть профессионализма команды разработчиков робота.
  • Потенциальные слабые места в безопасности. Если блокчейн для хакеров практически неуязвим, то боты и другое ПО могут быть подвержены взломам.

Теперь рассмотрим несколько торговых ботов, которые могут работать в связке с криптовалютной биржей Binance.

Авторизованные запросы:

Создание ордера — /api/v3/order

Для тех, кто будет писать свою библиотеку – обратите внимание, что адрес один и тот же /api/v3/order, но отличается метод – если отправлять данные через POST, это будет создание ордера, через GET – получение информации об ордере, DELETE – отмена ордера. Параметры, соответственно, разные.

Вес – 1 Метод: POST Параметры: Обязательные: symbol – пара side – тип ордера (BUY либо SELL) type – тип ордера (LIMIT, MARKET, STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT, LIMIT_MAKER) quantity – количество к покупке timestamp – текущее время в миллисекундах (в коде, выложенном здесь, проставляется автоматически, указывать не надо. Необязательные: timeInForce – (GTC, IOC, FOK). По умолчанию GTC. Расшифрую. GTC (Good Till Cancelled) – ордер будет висеть до тех пор, пока его не отменят. IOC (Immediate Or Cancel) – Будет куплено то количество, которое можно купить немедленно. Все, что не удалось купить, будет отменено. FOK (Fill-Or-Kill) – Либо будет куплено все указанное количество немедленно, либо не будет куплено вообще ничего, ордер отменится.

price – цена newClientOrderId – Идентификатор ордера, который вы сами придумаете (строка). Если не указан, генерится автоматически. stopPrice – стоп-цена, можно указывать если тип ордера STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, или TAKE_PROFIT_LIMIT. icebergQty – кол-во для ордера-айсберга, можно указывать, если тип ордера LIMIT, STOP_LOSS_LIMIT, and TAKE_PROFIT_LIMIT recvWindow – кол-во миллисекунд, которое прибавляется к timestamp и формирует окно действия запроса (см. выше). По умолчанию 5000. newOrderRespType –какую информацию возвращать, если удалось создать ордер. Допустимые значения ACK, RESULT, или FULL, по умолчанию RESULT. Подробности ниже.

В зависимости от типа ордера, некоторые поля становятся обязательными:

Тип ордера Обязательные поля LIMIT timeInForce, quantity, price MARKET quantity STOP_LOSS quantity, stopPrice STOP_LOSS_LIMIT timeInForce, quantity, price, stopPrice TAKE_PROFIT quantity, stopPrice TAKE_PROFIT_LIMIT timeInForce, quantity, price, stopPrice LIMIT_MAKER quantity, price

Ордера типа LIMIT_MAKER – это ордера типа обычного LIMIT, но они отклонятся, если ордер при выставлении может выполниться по рынку. Другими словами, вы никогда не будете тейкером, ордер либо выставится выше/ниже рынка, либо не выставится вовсе. Ордера типа STOP_LOSS и TAKE_PROFIT исполнятся по рынку (ордер типа MARKET), как только будет достигнута цена stopPrice. Любые ордера LIMIT или LIMIT_MAKER могут формировать ордер-айсберг, установив параметр icebergQty. Если установлен параметр icebergQty, то параметр timeInForce ОБЯЗАТЕЛЬНО должен иметь значение GTC.

Для того, что бы выставлять цены, противоположные текущим для ордеров типов MARKET и LIMIT: Цена выше рыночной: STOP_LOSS BUY, TAKE_PROFIT SELL Цена ниже рыночной: STOP_LOSS SELL, TAKE_PROFIT BUY

При создании ордера вернется ответ, в зависимости от параметра newOrderRespType:

Источник

Оцените статью