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

Для создания бота для 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*е и продолжу его развивать. Подписывайтесь. СПАСИБО!

Комментарии (4)


  1. excoder
    24.05.2023 20:57

    Опять двадцать пять :) Вот вам скальпели, ИВЛ, пациент, иногда можем дать даже анестезиолога! а уж как операции проводить это вы сами как-нибудь, а вообще это весело, спортивно, молодежно! Крипта же тем более, даже моя собака успешна в ней.


    1. Geraclz Автор
      24.05.2023 20:57

      Там же в конце написано

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


    1. MAXH0
      24.05.2023 20:57

      В общем-то реально статья полезная. Если вы вручную торгуете на бирже, то хорошо иметь возможность процесс автоматизировать. Конечно, такие статьи должны сопровождаться огромным банером - Минфин предупреждает - игра на бирже несет вред вашему финансовому и психическому здоровью.

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


      1. Geraclz Автор
        24.05.2023 20:57

        Полностью согласен с Вами по поводу рисков. Да и в целом те кто не понимают о чем речь, их просто нет на Хабре, да и собрать из кусков и даже полноценного кода бота нужно иметь навыки - такие люди понимают с чем играют.

        Жалко что 30 человек сохранило статью и почти все заминусовали.