Open source бот для торгов на Binance. Часть 1

от автора

Основная цель и функция бота: Бот, используя стратегию усреднения, старается снизить среднюю цену входа в актив путём увеличения позиции, если текущая стоимость актива уменьшается по отношению к стоимости ордера. В начале сделки бот размещает ордер на продажу с определенным процентом профита, но если цена падает, бот отменяет ордер на продажу, докупает монеты и размещает новую заявку на продажу по новой средней цене покупки с желаемой прибылью. Таким образом, бот постоянно отслеживает рыночную активность и анализирует текущие ордера, увеличивая объем монет и снижая цену продажи при падении рыночной стоимости актива.

Для создания бота для api binance, который работает по стратегии усреднения, нам понадобится использовать следующие компоненты:

1. Binance API — это позволит твоему боту получать данные о балансах, ордерах, сделках и других событиях с биржи.

2. Python — это язык программирования, которым владеет большинство молочных (и я в том числе) фрилансеров мы его будем использовать для написания скрипта, который будет работать с Binance API.

3. Библиотеки Python — мы будем юзать библиотеки для Python, такие как ccxt, для работы с Binance API.

4. Алгоритм усреднения — ты можешь использовать любой алгоритм , но мы будем использовать его для определения цены покупки и продажи, а также для определения объема монет, которые бот должен докупить.

5. Управление ордерами — на коленке напишем код, который будет управлять ордерами, размещая, отменяя и обновляя их в соответствии с настроенной стратегией.

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

1. Создаем аккаунт на binance.com и получи API ключ и секретный ключ. Есть конечно риски что для РФ бинанс может закрыть доступ, так что если есть второе гражданство то в путь, у меня его нет.

2. Установим библиотеку ccxt для работы с Binance API.

3. Напишем код, который будет получать информацию о балансах, ордерах и сделках с биржи, работая с Апи

4. Напишем алгоритм усреднения, который будет определять цену покупки и продажи, а также объем монет для докупки.

5. Напишем код, который будет управлять ордерами, размещая, отменяя и обновляя их в соответствии с настроенной стратегией.

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

Поехали.

Давайте начнем с импорта необходимых библиотек:

import ccxt import time

Затем создаем экземпляр класса Binance с помощью библиотеки ccxt и устанавливаем ключи API:

exchange = ccxt.binance({     'apiKey': 'Ваш_API_KEY',     'secret': 'Ваш_SECRET_KEY',     'enableRateLimit': True, })

Теперь мы можем запрашивать данные о балансах, ордерах и сделках с помощью методов ccxt:

balance = exchange.fetch_balance() open_orders = exchange.fetch_open_orders() closed_orders = exchange.fetch_closed_orders()

Для реализации стратегии усреднения нам нужен алгоритм, который будет определять цену покупки и продажи, а также объем монет для докупки. Вот пример такого алгоритма:

def calculate_order(exchange, symbol, buy_price, profit_percent, amount):     ticker = exchange.fetch_ticker(symbol)     current_price = ticker['last']     if current_price >= buy_price * (1 + profit_percent / 100):         return None     else:         new_buy_price = (buy_price * amount + current_price * amount * 2) / (amount * 3)         new_amount = amount * 2         return {'symbol': symbol,                 'type': 'limit',                 'side': 'buy',                 'price': new_buy_price,                 'amount': new_amount}

Этот алгоритм проверяет текущую цену и определяет, нужно ли докупать монеты или нет. Если текущая цена выше, чем цена покупки умноженная на (1 + процент прибыли), то мы не делаем никаких действий. В противном случае мы вычисляем новую цену покупки и новый объем монет для докупки. Возвращаемый результат — это словарь с данными для размещения ордера на покупку.

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

symbol = 'BTC/USDT'  # выбираем торговую пару buy_price = 55000  # устанавливаем начальную цену покупки profit_percent = 1  # задаем процент прибыли amount = 0.01  # устанавливаем объем монет для покупки  order = calculate_order(exchange, symbol, buy_price, profit_percent, amount)  if order:     exchange.create_order(**order) 

Данный код размещает ордер на покупку монет по заданной торговой паре, начальной цене покупки, проценту прибыли и объему монет. Если алгоритм определяет необходимость докупки монет, то мы размещаем ордер на покупку.

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

while True:     order = calculate_order(exchange, symbol, buy_price, profit_percent, amount)     if order:         exchange.create_order(**order)     time.sleep(60)  # ждем 60 секунд перед следующей проверкой цены

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

Вот и весь код для реализации стратегии усреднения с помощью python и Binance API. Он является базовым и может быть доработан в соответствии с вашими требованиями и настройками.

Для управления ботом и установки лимитов усреднений можно использовать конфигурационный файл в формате JSON. Например, такой:

```json {     "symbol": "BTC/USDT",     "buy_price": 55000,     "profit_percent": 1,     "amount": 0.01,     "max_average_count": 5,     "telegram_token": "ТВОЙ_TELEGRAM_TOKEN",     "telegram_chat_id": "ТВОЙ ЧАТИК ИД" } ``` 

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

Теперь мы можем изменять параметры бота, редактируя этот файл.

Напишем функцию для отправки уведомлений в телеграм

```python import requests  def send_telegram_message(token, chat_id, message):     url = f"https://api.telegram.org/bot{token}/sendMessage"     data = {"chat_id": chat_id, "text": message}     response = requests.post(url, data=data)     return response.json() ```

Эта функция отправляет сообщение в телеграм с помощью бота и токена, которые мы задали в конфигурационном файле.

Теперь нам нужно изменить функцию `calculate_order`, чтобы она учитывала максимальное количество усреднений:

```python def calculate_order(exchange, symbol, buy_price, profit_percent, amount, max_average_count):     ticker = exchange.fetch_ticker(symbol)     current_price = ticker['last']     if current_price >= buy_price * (1 + profit_percent / 100):         return None     else:         orders = exchange.fetch_open_orders(symbol)         average_price = 0         total_amount = 0         for order in orders:             if order['side'] == 'buy':                 average_price += order['price'] * order['amount']                 total_amount += order['amount']         if total_amount >= amount * max_average_count:             return None         new_buy_price = (buy_price * total_amount + current_price * amount) / (total_amount + amount)         new_amount = amount         return {'symbol': symbol,                 'type': 'limit',                 'side': 'buy',                 'price': new_buy_price,                 'amount': new_amount} ```

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

Наконец, мы можем изменить цикл while, чтобы он использовал конфигурационный файл и отправлял уведомления в телеграм:

```python import json  with open('config.json', 'r') as f:     config = json.load(f)  symbol = config['symbol'] buy_price = config['buy_price'] profit_percent = config['profit_percent'] amount = config['amount'] max_average_count = config['max_average_count'] telegram_token = config['telegram_token'] telegram_chat_id = config['telegram_chat_id']  while True:     order = calculate_order(exchange, symbol, buy_price, profit_percent, amount, max_average_count)     if order:         exchange.create_order(**order)         message = f"New order created:\nSymbol: {symbol}\nPrice: {order['price']}\nAmount: {order['amount']}"         send_telegram_message(telegram_token, telegram_chat_id, message)     time.sleep(60) ```

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

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

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

попробую написать полноценный скрипт и выложить в открытый доступ на GitHub*е и продолжу его развивать. Подписывайтесь. СПАСИБО!


ссылка на оригинал статьи https://habr.com/ru/articles/737236/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *