
Основная цель и функция бота: Бот, используя стратегию усреднения, старается снизить среднюю цену входа в актив путём увеличения позиции, если текущая стоимость актива уменьшается по отношению к стоимости ордера. В начале сделки бот размещает ордер на продажу с определенным процентом профита, но если цена падает, бот отменяет ордер на продажу, докупает монеты и размещает новую заявку на продажу по новой средней цене покупки с желаемой прибылью. Таким образом, бот постоянно отслеживает рыночную активность и анализирует текущие ордера, увеличивая объем монет и снижая цену продажи при падении рыночной стоимости актива.
Для создания бота для 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/
Добавить комментарий