Пишем бесплатного бота для торгов на 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/


Интересные статьи

Интересные статьи

В предыдущей статье я рассказывал как собираю данные для детектирования текста на изображениях.Теперь используя собранный набор данных попробуем натренировать одну из самых популярных сетей для сегмен...
Обзор методов множественного доступа в беспроводной связи. Часть 5. Поляризация и закрученные волныПривет, коллеги! У нас продолжается серия статей, посвящённых методам множественного доступа в беспро...
В течение нескольких лет я работала над личным проектом создания (а на самом деле исследования) «фальшивого эмулятора», то есть написанного на JavaScript эмулятора никогда не суще...
Если верить статистике, объем сетевого трафика увеличивается примерно на 50% каждый год. Это приводит к росту нагрузки на оборудование и, в частности, повышает требования к производит...
Ценность ресурсного планирования для IT-компании сложно подвергнуть сомнению. Ресурсные планы есть у многих. А действительно работающей системой ресурсного планирования похвалиться могут совсем н...