Вот как использовать API для автоматической торговли на всемирно известной бирже биткойнов Binance.
API-приложение
Запустите приложение Binance и введите свой API в поиск.
Выберите пункт «Управление API» в категории «Функции».
Выберите Создать API.
Введите соответствующую метку ключа и нажмите кнопку «Далее».
Установите головоломку для безопасности.
Затем перейдите к проверке текста телефона и электронной почты.
По завершении вы получите ключ API и секретный ключ.
Я проверил «Включить фьючерсы» для торговли фьючерсами и «Разрешить универсальный перевод» для депозитов и снятия средств между спотовой и фьючерсной торговлей.
Установить библиотеку ccxt
Затем давайте установим ccxt, библиотеку Python, чтобы легко использовать Binance API.
Мы предполагаем, что вы знаете, как использовать Python, и продолжим.
Инструкции и инструкции по установке можно найти на следующем сайте:
CCXT — торговая библиотека CryptoCurrency eXchange
Вы можете установить его с помощью следующей команды.
pip install ccxt
Готовый к использованию Binance API
Сначала импортируйте библиотеку ccxt.
import ccxt
Это код для создания экземпляра Binance с использованием запрошенного ранее значения ключа API. Тип опциона по умолчанию — спот, а торговля фьючерсами возможна при вводе фьючерса.
binance_access_key = "xxxxxxxxx"
binance_secret_key = "yyyyyyyyy"
binance = ccxt.binance(config={
'apiKey': binance_access_key,
'secret': binance_secret_key,
'enableRateLimit': True,
'options': {
'defaultType': 'future'
}
})
Запрос текущей цены
Вы можете просто выполнить поиск следующим образом.
binance.fetch_ticker('BTC/USDT')
Запрос баланса
Во-первых, давайте посмотрим на код, который извлекает баланс USDT по фьючерсной сделке. Введите будущее в тип параметров. Введите спот, чтобы просмотреть баланс спотовой транзакции.
balance = binance.fetch_balance(params={"type": "future"})
print(balance['USDT']['free'])
Давайте также напишем код, чтобы получить объем монет, хранящихся в спотовой транзакции.
balance_info = binance.fetch_balance(params={"type": "spot"})
for balance in balance_info['info']['balances']:
if market['id'].find(balance['asset']) > -1:
print(abs(float(balance['free'])))
Следующий код получает объем монеты, которая открыла короткую позицию при торговле фьючерсами. Обратите внимание на разницу с кодом спотовой торговли.
balance_info = binance.fetch_balance(params={"type": "future"})
for position in balance_info['info']['positions']:
if position['symbol'] == market['id']:
print(abs(float(position['positionAmt'])))
Вход и клиринг в торговле фьючерсами
Ниже приведен код для входа в короткую позицию. Возможна как рыночная, так и лимитная торговля.
symbol='BTC/USDT'
# market sell order
sell_order = binance.create_market_sell_order(symbol=symbol, amount=0.1)
# limit sell order
btc = binance.fetch_ticker(symbol)
sell_order = binance.create_limit_sell_order(symbol=symbol, amount=0.1, price=btc['last'])
А вот и короткий код очистки позиции. Точно так же можно совершать рыночные и лимитные сделки.
symbol='BTC/USDT'
# market buy order
buy_order = binance.create_market_buy_order(symbol=symbol, amount=0.1)
# limit buy order
btc = binance.fetch_ticker(symbol)
buy_order = binance.create_limit_buy_order(symbol=symbol, amount=0.1, price=btc['last'])
Вход и закрытие длинной позиции может осуществляться обратным способом, а спотовая торговля также может осуществляться по тому же методу.
Банковский перевод между спот и фьючерсом
Чтобы перевести наличные со спотового счета на фьючерсный, вы просто запрашиваете баланс денежного счета и переводите сумму непосредственно на свой фьючерсный счет. Комиссия за переводы со счетов на Binance Exchange не взимается.
balance_spot = binance.fetch_balance(params={"type": "spot"})
balance_spot_free = balance_spot['USDT']['free']
if balance_spot_free > 0:
transfer = binance.transfer('USDT', balance_spot_free, 'spot', 'future')
Обратное тоже верно.
balance_future = binance.fetch_balance(params={"type": "future"})
balance_future_free = balance_future ['USDT']['free']
if balance_future_free > 0:
transfer = binance.transfer('USDT', balance_future_free, 'future', 'spot')
Настройка кредитного плеча
Для торговли фьючерсами можно установить кредитное плечо. Вот код: Просто измените число в части кредитного плеча.
markets = binance.load_markets()
market = binance.market('BTC/USDT')
resp = binance.fapiPrivate_post_leverage({
'symbol': market['id'],
'leverage': 2
})
Просмотр данных о транзакциях
Вы можете запросить данные о ежедневных транзакциях на 1000 BTC, написав следующий код:
candles = binance.fetch_ohlcv(
symbol='BTC/USDT',
timeframe='1d',
since=None,
limit=1000)