Решил открыть новую рубрику программирование. Тут буду собирать полезную информацию по финансовому программированию. В частности мне интересны такие программы, которые будут автоматизировать мой ручной труд по инвестициям и торговле.
Идея программы
Мне пришла идея написать самому на языке 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 и записав следующий код:
Какие файлы создать для работы
После этого нам необходимо создать в папке, например, у меня это корень диска D, 2 файла:
- trade.bat
- trade.py
Файл trade.bat будет запускать наш скрипт, который написан в файле trade.py. Вот содержание файла trade.bat:
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
Ваш 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()
. Эта задержка может использоваться для того, чтобы убедиться, что ордер был выполнен и отображен в портфеле перед продолжением выполнения кода.