Простой робот для торговли на Binance – фьючерсный аккаунт

Торговый бот Binance

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

Идея программы

Мне пришла идея написать самому на языке Python для начала простую программу, которая бы подключалась к бирже Binance и открывала на фьючерсном аккаунте сделку в LONG (покупка) лотом 0.001 BTC по отношению к USDT, а затем уведомляла бы меня о том, что сделка совершена успешно путем отправки сообщения в мой телеграмм.

Таким образом, если структурировать задачи нашей программы, то она должна выполнять следующие шаги:

  • Подключаться к бирже Binance, используя инструмент удаленного доступа к бирже Binance API
  • Отображать баланс активов, которые у нас есть на фьючерсном аккаунте
  • Открывать сделку в LONG (покупка) лотом 0.001 BTC по отношению к USDT
  • Отправлять уведомление о совершенной сделке в мой телеграмм о том, что сделка совершена

Необходимая версия Python

Для начала сразу скажу, что для корректной работы нужно установить совместимые друг с другом версии Python 3.9.13 и библиотеку python-binance 1.0.17, которая будет осуществлять взаимодействие биржи Binance и нашей программы.

Скачать Python 3.9.13 можно на официальном сайте по ссылке для версии х64: https://www.python.org/ftp/python/3.9.13/python-3.9.13-embed-amd64.zip

Установить необходимую нам библиотеку python-binance можно, открыв командную строку (cmd) в Windows и записав следующий код:

pip install python-binance

Какие файлы создать для работы

После этого нам необходимо создать в папке, например, у меня это корень диска D, 2 файла:

  • trade.bat
  • trade.py

Файл trade.bat будет запускать наш скрипт, который написан в файле trade.py. Вот содержание файла trade.bat:

@echo off
python D:\trade.py %*
pause

Готовый код программы

А вот содержание готового файла trade.py, который и представляет собой саму программу:

import time
from binance.client import Client
from binance.enums import *
import telegram
import requests

# Введите ваши ключ API и секретный ключ API
api_key = 'YOUR_API_KEY'
api_secret = 'YOUR_SECRET_KEY'

# Введите ваши данные для Telegram
telegram_token = 'YOUR_TOKEN'
telegram_chat_id = 'YOUR_CHAT_ID'

# Создаем клиент Binance Futures
client = Client(api_key, api_secret)

# Получаем баланс активов
balances = client.futures_account_balance()
for balance in balances:
if balance['asset'] == 'USDT':
usdt_balance = float(balance['balance'])
elif balance['asset'] == 'BTC':
btc_balance = float(balance['balance'])

# Отображаем баланс активов
print(f"USDT balance: {usdt_balance}")
print(f"BTC balance: {btc_balance}")

# Открываем ордер на покупку BTC USDT с плечом 10х и устанавливаем Take Profit и Stop Loss
quantity = 0.001 # Количество покупаемого BTC
leverage = 10 # Плечо
entry_price = float(client.futures_symbol_ticker(symbol='BTCUSDT')['price']) # Текущая цена BTC USDT
take_profit_price = round(entry_price * 1.01, 2) # Цена Take Profit
stop_loss_price = round(entry_price * 0.99, 2) # Цена Stop Loss

order = client.futures_create_order(
symbol='BTCUSDT',
side=SIDE_BUY,
type=ORDER_TYPE_MARKET,
quantity=quantity,
leverage=leverage
)

# Отправляем сообщение о сделке в Telegram
message = f"Bought {quantity} BTCUSDT with leverage {leverage} at market price of {entry_price}.\nTake Profit: {take_profit_price} Stop Loss: {stop_loss_price}"
# Отправляем запрос к API Telegram, используя метод sendMessage
url = f'https://api.telegram.org/bot{telegram_token}/sendMessage'
params = {'chat_id': telegram_chat_id, 'text': message}
response = requests.post(url, data=params)
timepause=5
Хочу обратить внимание, что API ключ и его пароль вы можете получить у себя в аккаунте биржи Binance в настройках в разделе API.
Ваш Telegram токен и Chat-ID вы можете получить в вашем аккаунте Telegram, используя Bot Father.

Объяснение работы программы

Давайте подробнее рассмотрим как именно работает рабочий код, который я привел выше.

Данный код на языке Python использует API биржи Binance и Telegram для автоматической торговли криптовалютой и отправки уведомлений в Telegram.

Сначала происходит импорт необходимых модулей: time для создания задержки, Client и enums из модуля binance для работы с API биржи Binance, telegram для работы с Telegram, и requests для отправки HTTP-запросов.

Затем определяются ключ API и секретный ключ API для доступа к API биржи Binance, а также данные для Telegram, включая токен и идентификатор чата.

Далее создается экземпляр Client с использованием ключа API и секретного ключа API, и происходит запрос на получение баланса активов в портфеле. Баланс активов отображается на экране с помощью функции print.

Затем происходит открытие ордера на покупку BTCUSDT с плечом 10х и установкой цены Take Profit и Stop Loss. Количество покупаемого BTC задается в переменной quantity, а плечо в переменной leverage. Текущая цена BTCUSDT запрашивается с помощью метода futures_symbol_ticker, а цены Take Profit и Stop Loss рассчитываются как проценты от текущей цены.

Далее отправляется сообщение о сделке в Telegram, используя API Telegram и метод sendMessage. Создается строковое сообщение message описывающее сделку и отправляется запрос к API Telegram с помощью модуля requests.

Наконец, происходит создание задержки в 5 секунд с помощью функции time.pause(). Эта задержка может использоваться для того, чтобы убедиться, что ордер был выполнен и отображен в портфеле перед продолжением выполнения кода.

Понравилась статья? Поделиться с друзьями: