December 28, 2024

Софт на Derive

https://t.me/PastFinCoding

Настройка аккаунта на 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 укажи публичный ключ созданного кошелька-пустышки
  • После этих операций у тебя должно быть 3 сессии
  • Все готово, теперь осталось собрать данные для софта. Вот что понадобится:
    • Derive wallet:
    • Subaccount ID
    • Приватный ключ от пустого кошелька, который мы привязали к Derive через Register Session Key
    • http прокси
  • Формат записи этих данных в следующем разделе по настройке софта.

Настройка софта

Предполагается, что у тебя уже установлен Python, у меня версия Python 3.11.5

  1. Качаем репозиторий: git clone https://github.com/Pastfin/Derive-perp-delta-neutral-bot.git
  2. Открываем папку через VSC и устанавливаем зависимости через команду pip install -r requirements.txt
  3. В этой папке надо изменять всего два файла:
    1. creds.txt
    2. config.json
  4. Начнем с creds.txt. Этот файл должен содержать всю информацию об аккаунтах, которые ты будешь крутить. Формат записи следующий: DeriveWallet:SubaccountID:PrivateKeyEOA:ProxyIP:ProxyPort:ProxyLog:ProxyPwd
    1. Все данные записываются через ":" и без пробелов, новые строки через Enter, вносим все аккаунты в таком формате. 1 акк - 1 строка.
    2. Как собрать все данные я показал в предыдущем пункте
  5. Теперь перейдем к настройке config.json. Я выложил свой конфиг, на котором кручу, но сейчас подробно опишу каждый параметр:
    • pair_probability. Для твоей безопасности софт поддерживает только 3 пары для торговли: ETH, BTC. На других парах низкие объемы и я не смотрел. Ты можешь выставлять вероятность, что софт откроет сделку по той или иной паре. Например, при такой конфигурации шанс на эфир 90%, на биток 10%, на соль 0%
"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
    • delay_between_opening_new_position_minutes. После закрытия сделки сколько должно пройти минут, пока не откроется новая позиция. Софт рандомно каждый раз выбирает в пределах от min до max
    • delay_between_opening_hedge_position_sec. Сколько должно пройти секунд между открытием позиций. То есть если 1 секунда и 5 аккаунтов, то встал в лонг, подолжал 1 сек, встал в шорт, подолжал 1 сек и тд. Софт рандомно каждый раз выбирает в пределах от min до max.

Теперь поговорим про безопасность и какие фичи я написал.

  1. После каждого круга идет обновление баланса всех аккаунтов. Представим ситуацию, что ты поставил max плечо = 3 и max net_order_value_usd = 1000$. Однако аккаунт перелило и баланс остался 800$. То есть максимальная позиция может быть net_order_value_usd * leverage = 3000$, но 3000$ / 800$ = 3.75 плечо > 3, который в конфиге. Короче, код останавливается, чтобы тебя не ликвиднуло после перелива в случае чего.
  2. Если на каком-то этапе происходит ошибка, тогда запускается функция, которая закрывает все открытые позиции на всех аккаунтах из creds.txt и код останавливает. Не надо держать свои личные позиции под аккаунты, на котором будет работать софт.
  3. Я также написал достаточное количество проверок в момент запуска кода, поэтому код не начнет открывать позиции, если ты где-то допустил ошибки.
  4. Сделал как можно больше рандомизации.

Теперь поговорим, что не входит в скоуп кода:

  1. Код никак не анализирует твою цену ликвидации, не надо ставить высокие плечи. Если ликвидировало, то всё, капут.
  2. Код сломается, если ты поставишь низкий 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). В таком случае запустится функция по закрытию всех ордеров и код остановится.

Рекомендации:

  1. Если низкий деп, то не стоит делать больше 3 аккаунтов за раз в одной сделке (один лонг, два шорт).
  2. Устанавливать адекватные плечи (2-3).
  3. Если надо как можно больше и быстрее открутить, запускай параллельно два и больше процессов. То есть сделал 10 аккаунтов, скопировал папку с кодом, в одной папке указал 5 аккаунтов, в другой указал 5 других аккаунтов, запустил параллельно 2 софта.
  4. Делать селфрефнутые аккаунты.

Запуск кода

Для запуска кода надо написать 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