По мотивам своих исследований написал бота, который торгует криптой на бинансе. Стратегия это покупка на прорыве волатильности.
Пока бот тестируется в спотовом режиме, разбираюсь с маржинальной торговлей через API бинанса. Пишу этот пост скорее как напоминалка для себя.
Обычный режим называется spot. И есть два типа маржинальной торговли:
- cross-margin Устанавливается общее плечо на весь аккаунт. В зависимости от крипты плечо может быть до 3.
- isolated margin Устанавливается отдельное плечо для каждой торговой пары. Тут плечо может быть до 10.
Общий алгоритм работы с маржинальной торговлей:
- Сделать маржинальный аккаунт
- Перевести туда крипту со спотового аккаунта
- Взять крипту в долг
- Отторговать
- Отдать долг
- Перевести крипту назад на спотовый аккаунт
https://python-binance.readthedocs.io/en/latest/margin.html документация
Далее буду рассматривать isolated margin так как там плечо больше.
Сделать маржинальный аккаунт
client.create_isolated_margin_account(base='BTC', quote='ETH')
Перевести крипту со спотового аккаунта
client.transfer_spot_to_isolated_margin(asset='BTC',symbol='ETHBTC',amount='1.1')
Взять крипту в долг
client.create_margin_loan(asset='BTC', amount='1.1', isIsolated='TRUE', symbol='ETHBTC')
client.get_max_margin_loan(asset='BTC', isolatedSymbol='ETHBTC') - узнать сколько можно взять в долг по максимуму
Торговля
Маркет ордер на покупку
client.create_margin_order(
symbol='ETHBTC',
side=SIDE_BUY,
type=ORDER_TYPE_MARKET,
quantity=1.1,
isIsolated='TRUE')
Лимитный ордер на продажу
client.create_margin_order(
symbol='ETHBTC',
side=SIDE_SELL,
type=ORDER_TYPE_LIMIT,
timeInForce=TIME_IN_FORCE_GTC,
quantity=1.1,
price=1490,
isIsolated='TRUE')
Проверить статус
client.get_margin_order(
symbol='ETHBTC',
orderId=3175554719)
Отдать долг
client.repay_margin_loan(asset='BTC', amount='1.1')
Перевести крипту на спотовый аккаунт
client.transfer_isolated_margin_to_spot(asset='BTC', symbol='ETHBTC', amount='1.1')