Софт на Derive
Настройка аккаунта на Derive
Я взаимодействую с сайтом через антик и прокси. Прокси не ру, потому что ру по условиям в бане, но на сайт пускает.
- Перейди по ссылке https://www.derive.xyz/invite/55NI6
- Нажми на кнопку Deposit now и внеси деньги. Рекомендую депать через оптимизм, комса около нуля. Также плюсом является, что можно вносить разные токены, не только стейбл.
- Вверху слева нажми Home и ожидай пока транза зачислится
- После зачисления нажми на той же странице слева Balance. Далее надо перевести средства с Funding аккаунта на трейдинг аккаунт. Нажми на кнопку Transfer и переведи. Нужно подписать создание трейдинг аккаунта.
- Перейди на той же странице на вкладку "Developers", она размещена слева.
- Теперь я вкратце опишу, что мы будем делать. Ты привязал свой меин кошелек к аккаунту, ты можешь вносить деньги на Derive и выводить их. У Derive нет API ключа, но есть более интересное и безопасное решение:
- Тебе надо создать EVM кошелек пустышку и сохранить от него приватный ключ. Этот кошелек-пустышка будет подписывать транзакции своим приватным ключом, когда будет обращаться к API Derive. Называется такой аккаунт Externally Owned Account (EOA). То есть передавать приватный ключ от твоего кошелька не надо, а только от пустышки. И подписывать он может только в скоупе Derive, выводить и вносить средства через этот приватник нельзя.
- На вкладке Developers нажми на кнопку Register Session Key. Назови как-нибудь и в строке Public Address укажи публичный ключ созданного кошелька-пустышки
- Приватный ключ от пустого кошелька, который мы привязали к Derive через Register Session Key
- http прокси
- Формат записи этих данных в следующем разделе по настройке софта.
Настройка софта
Предполагается, что у тебя уже установлен Python, у меня версия Python 3.11.5
- Качаем репозиторий:
git clone https://github.com/Pastfin/Derive-perp-delta-neutral-bot.git
- Открываем папку через VSC и устанавливаем зависимости через команду
pip install -r requirements.txt
- В этой папке надо изменять всего два файла:
- Начнем с creds.txt. Этот файл должен содержать всю информацию об аккаунтах, которые ты будешь крутить. Формат записи следующий: DeriveWallet:SubaccountID:PrivateKeyEOA:ProxyIP:ProxyPort:ProxyLog:ProxyPwd
- Все данные записываются через ":" и без пробелов, новые строки через Enter, вносим все аккаунты в таком формате. 1 акк - 1 строка.
- Как собрать все данные я показал в предыдущем пункте
- Теперь перейдем к настройке config.json. Я выложил свой конфиг, на котором кручу, но сейчас подробно опишу каждый параметр:
"pair_probability": { "ETH": 0.9, "BTC": 0.1 }
- net_order_value_usd. Фактическая позиция без плеча. Устанавливается нижний и верхний порог через min max. Софт рандомно каждый раз выбирает в пределах от min до max
- leverage. Плечо на сделку. То есть если net_order_value_usd = 500$, а leverage = 3, то сделка будет открыта как 500$ * 3 = 1500$. Софт рандомно каждый раз выбирает в пределах от min до max. Только кросс маржа, изолированной на Derive нет
- num_of_accounts_per_trade. Минимальное значение - 2 аккаунта. 2 аккаунта означает, что один встает в long, другой зеркально в short. 3 аккаунта означает, что один встает в long, два других встают в шорт. 4 аккаунта - 1 в лонг, 3 в шорт и тд. Long позиция будет всегда равняться сумме short позиций с одного или нескольких аккаунтов. Софт рандомно каждый раз выбирает в пределах от min до max и рандомно выбирает аккаунты
- delay_open_close_minutes. Сколько минут от открытия сделки до ее закрытия. Не надо указывать слишком короткий промежуток времени, иначе могут сбрить за воштрейдинг. Софт рандомно каждый раз выбирает в пределах от min до max
Теперь поговорим про безопасность и какие фичи я написал.
- После каждого круга идет обновление баланса всех аккаунтов. Представим ситуацию, что ты поставил max плечо = 3 и max net_order_value_usd = 1000$. Однако аккаунт перелило и баланс остался 800$. То есть максимальная позиция может быть net_order_value_usd * leverage = 3000$, но 3000$ / 800$ = 3.75 плечо > 3, который в конфиге. Короче, код останавливается, чтобы тебя не ликвиднуло после перелива в случае чего.
- Если на каком-то этапе происходит ошибка, тогда запускается функция, которая закрывает все открытые позиции на всех аккаунтах из creds.txt и код останавливает. Не надо держать свои личные позиции под аккаунты, на котором будет работать софт.
- Я также написал достаточное количество проверок в момент запуска кода, поэтому код не начнет открывать позиции, если ты где-то допустил ошибки.
- Сделал как можно больше рандомизации.
Теперь поговорим, что не входит в скоуп кода:
- Код никак не анализирует твою цену ликвидации, не надо ставить высокие плечи. Если ликвидировало, то всё, капут.
- Код сломается, если ты поставишь низкий net_order_value_usd и большое количество аккаунтов, потому что на Derive достаточно высокие критерии открытия позиции. Например, если ты поставил 34$ (0.01 ETH) в net_order_value_usd, плечо 2 и указал num_of_accounts_per_trade = 5, то код откроет сделку на лонг и сломается в момент распределения этих 68$ между 4 аккаунтами в шорт, потому что total_amount (68$) < minimum_amount (34$ (0.01 ETH минималка на Derive)) * num_short_accounts (4). В таком случае запустится функция по закрытию всех ордеров и код остановится.
- Если низкий деп, то не стоит делать больше 3 аккаунтов за раз в одной сделке (один лонг, два шорт).
- Устанавливать адекватные плечи (2-3).
- Если надо как можно больше и быстрее открутить, запускай параллельно два и больше процессов. То есть сделал 10 аккаунтов, скопировал папку с кодом, в одной папке указал 5 аккаунтов, в другой указал 5 других аккаунтов, запустил параллельно 2 софта.
- Делать селфрефнутые аккаунты.
Запуск кода
Для запуска кода надо написать python .\main.py
Если что-то произошло, то останови код main.py и запусти:
python .\close_all_positions.py
Я отдельно вынес этот скрипт, чтобы если что закрывать все открытые существующие позиции на аккаунтах, которые указаны в creds.txt. Но на всякий случай потом лучше пробежаться по аккаунтам.
Чтобы код работал хорошо, надо перейти по моей рефке!!!
https://www.derive.xyz/invite/55NI6
https://www.derive.xyz/invite/55NI6
https://www.derive.xyz/invite/55NI6
И неплохо было бы подписаться на мой тг канал, чтобы снизить пинг до API: https://t.me/PastFinCoding