Aster Delta Neutral Bot
Этот софт предназначен для открытия нейтральных позиций на множестве аккаунтов Aster. Например, когда 3 аккаунта открыты в лонг и 4 в шорт, общий баланс токенов остаётся нулевым, что создаёт нейтральную позицию. Количество лонг и шорт аккаунтов всегда одинаково или отличается максимум на один, однако объёмы токенов на каждом аккаунте могут различаться.
Бот автоматически анализирует LTV после открытия позиций. При необходимости он закрывает нейтральные позиции и останавливает процесс, предоставляя пользователю возможность корректировать маржу на аккаунтах перед продолжением.
Настройка бота
- Качаем репозиторий:
git clone https://github.com/Pastfin/Aster-delta-neutral-bot
- Открываем папку через VSC и устанавливаем зависимости через команду
pip install -r requirements.txt
- Далее мы будем заполнять несколько нужных обязательных файлов:
Остальные файлы в data/ не трогаем.
data/api_keys.txt
- Генерируем API ключ: https://www.asterdex.com/en/api-management
- Записываем в api_keys.txt следующий формат, каждый аккаунт новая строка
{apikey}:{apisecret}:{ip}:{port}:{log}:{pwd}
ab91f6e0d734b218c92fa11c4d9a52f9e8a17362e6e2c8f5c3f3a214bc89d72a:7f43d2a9bcf1d8e94520b33c67e9ad104e55d46d22a17f53e0d8a129cbb47119:178.45.210.88:5183:kuprezta:mqn65zd47ut1
data/config.json
Средний объём позиции, открываемой одним аккаунтом. Например, если указаны значения min = 200 USD
и max = 300 USD
, то могут быть выбраны 2 аккаунта с лонг-позициями по 300 USD и 3 аккаунта с шорт-позициями по 200 USD. Важно учитывать, что софт использует случайные значения в этом диапазоне, поэтому суммы не обязательно будут круглыми и могут быть меньше минимального значения, указанного в конфиге.
Количество аккаунтов, участвующих в одном торговом цикле. Например, если указано 5 аккаунтов
, то может быть 3 лонг
и 2 шорт
. Если 6 аккаунтов
— то 3 лонг
и 3 шорт
. Софт случайным образом выбирает количество аккаунтов в пределах заданного диапазона min
и max
.
Продолжительность одной позиции в минутах.
delay_between_trading_cycles_min
Время (в минутах), которое должно пройти перед началом нового торгового цикла с нейтральными позициями.
delay_between_opening_orders_sec
Задержка (в секундах) между открытием отдельных ордеров в одном нейтральном цикле. Например, если используется 5 аккаунтов
, то бот сначала открывает лонг на одном аккаунте, ждёт указанное время, затем открывает шорт и так далее.
Частота проверки LTV сделки (в секундах). Софт берёт актуальную цену токена с Aster и сравнивает её с ценой ликвидации для определения уровня риска. Примечание: цена ликвидации берётся один раз в начале, далее в цикле обновляется только маржинальная цена (mark price).
Ограничение на максимальное значение позиции в USD для подстраховки, если баланс USDC на аккаунте недостаточен. Например, при max_leverage = 2
и балансе на аккаунте 200 USD
, максимальная позиция будет 400 USD
. Реальный размер позиции определяется параметром order_value_usd
, а этот параметр используется только для предотвращения превышения допустимого плеча.
Порог LTV, который софт мониторит на протяжении сделок. Проверка выполняется каждые ltv_checks_sec
. Если хотя бы на одном аккаунте достигается критический уровень LTV, бот закрывает все нейтральные позиции и завершает работу, чтобы пользователь мог скорректировать маржу.
LTV рассчитывается на основе текущей рыночной цены и цены ликвидации для каждой активной позиции. Информация о цене ликвидации записывается в момент открытия позиции и после данные не обновляются. То есть если капает фандинг, информация о цене ликвидации обновляться не будет.
- Если позиция в
SELL
, LTV вычисляется какcurrent_price / liq_price * 100
. - Если позиция в
BUY
, LTV вычисляется какliq_price / current_price * 100
.
Показатель случайности распределения позиций. Чем выше значение, тем больше разница в размерах позиций.
- Пример: Если
orders_distribution_noise = 0
, то распределение будет равномерным (1, 1, 1
для лонга и шорта). - Если
orders_distribution_noise = 0.15
, распределение будет более случайным (0.9, 0.8, 1.3
).
Этот параметр можно не изменять, если тебя устраивает равномерное распределение.
Максимальное количество попыток выполнения одного действия в случае неудачи. Например, если сделка не открылась или не закрылась с первого раза, софт предпримет дополнительные попытки в пределах указанного числа.
Пары, которые будут торговаться. Выбираются случайным образом.
В чем держите свой коллатерал для фьючерсов. В софте используется для измерения размера ордера.
"INFO"
— стандартный режим использования."DEBUG"
— детализированный режим для отладки, когда возникают проблемы с кодом. Логи на уровнеDEBUG
записываются в потенциально проблемных участках кода для упрощения поиска ошибок.
Функционал бота при запуске
Start trading
Открывает позиции на указанных аккаунтах. Перед открытием проверяется, что на аккаунте нет активных позиций — если позиция уже открыта, софт завершает работу. На одном аккаунте может быть только одна активная позиция одновременно.
Выводит фьючерсный баланс и открытые позиции.
Close all open positions
Закрывает все активные позиции на всех аккаунтах.
Step by step
- Скачиваем софт с гитхаба.
- Устанавливаем библиотеки.
- Заполняем все файлы, которые указаны в инструкции выше. Сначала тестируем с позициями по 50-100$.
- Запускаем софт и выбираем пункт 1: Start trading. запуск через команду
python main.py
- Проверяем в логах и UI вручную, что нет никаких проблем. После запуска пункта "Start trading" выполняются базовые проверки ваших файлов и прокси.
- Чтобы остановить процесс, останавливаем софт, запускаем его заново и выбираем пункт: Close all currently open positions.
TG канал: https://t.me/PastFinCoding