Основная цель и функция бота: Бот, используя стратегию усреднения, старается снизить среднюю цену входа в актив путём увеличения позиции, если текущая стоимость актива уменьшается по отношению к стоимости ордера. В начале сделки бот размещает ордер на продажу с определенным процентом профита, но если цена падает, бот отменяет ордер на продажу, докупает монеты и размещает новую заявку на продажу по новой средней цене покупки с желаемой прибылью. Таким образом, бот постоянно отслеживает рыночную активность и анализирует текущие ордера, увеличивая объем монет и снижая цену продажи при падении рыночной стоимости актива.
Для создания бота для 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*е и продолжу его развивать. Подписывайтесь. СПАСИБО!
excoder
Опять двадцать пять :) Вот вам скальпели, ИВЛ, пациент, иногда можем дать даже анестезиолога! а уж как операции проводить это вы сами как-нибудь, а вообще это весело, спортивно, молодежно! Крипта же тем более, даже моя собака успешна в ней.
Geraclz Автор
Там же в конце написано
MAXH0
В общем-то реально статья полезная. Если вы вручную торгуете на бирже, то хорошо иметь возможность процесс автоматизировать. Конечно, такие статьи должны сопровождаться огромным банером - Минфин предупреждает - игра на бирже несет вред вашему финансовому и психическому здоровью.
НО если я опять увижу хороший восходящий тренд -- я чуть-чуть денег вложу (из той маленькой кучки, что заработал на двух предыдущих, а не пенсионные накопления). И тут-то подобный бот может пригодиться.
Geraclz Автор
Полностью согласен с Вами по поводу рисков. Да и в целом те кто не понимают о чем речь, их просто нет на Хабре, да и собрать из кусков и даже полноценного кода бота нужно иметь навыки - такие люди понимают с чем играют.
Жалко что 30 человек сохранило статью и почти все заминусовали.