Как сделать фьючерсный ордер binance с ccxt в Python?

Как разместить рыночный ордер в ccxt на фьючерсы на binance? Торговля фьючерсами binance с ccxt уже реализована

https://github.com/ccxt/ccxt/pull/5907

В этом посте они предлагают использовать эту строку кода:

let binance_futures = new ccxt.binance({ options: { defaultMarket: 'futures' } })

Вышеупомянутая строка была написана на JavaScript. Как будет выглядеть эквивалентная строка в Python? Вот так я получаю ошибку:

binance_futures = ccxt.binance({ 'option': { defaultMarket: 'futures' } })
NameError: name 'defaultMarket' is not defined

5 ответов

Правильный ответ: 'defaultType' (вместо того defaultMarket) должны быть в кавычках, но и значение должно быть 'future' (не 'futures')

import ccxt
print('CCXT version:', ccxt.__version__)  # requires CCXT version > 1.20.31
exchange = ccxt.binance({
    'apiKey': 'YOUR_API_KEY',
    'secret': 'YOUR_API_SECRET',
    'enableRateLimit': True,
    'options': {
        'defaultType': 'future',  # ←-------------- quotes and 'future'
    },
})

exchange.load_markets()

# exchange.verbose = True  # uncomment this line if it doesn't work

# your code here...

Поместите цитаты вокругdefaultMarket:

binance_futures = ccxt.binance({ 'option': { 'defaultMarket': 'futures' } })

Если вы ищете фьючерсы Binance COIN-M (например, для торговли на основе наличных фьючерсов), вам необходимо использовать deliveryвариант вместо :

      import ccxt
import pandas as pd

binance = ccxt.binance()
binance.options = {'defaultType': 'delivery', 'adjustForTimeDifference': True}

securities = pd.DataFrame(binance.load_markets()).transpose()
securities

датированные фьючерсы, как и ожидалось:


Обратите внимание, что приведенный выше фрагмент кода возвращает датированные фьючерсы, как и ожидалось. Однако альтернативное однострочное решение, показанное ниже, НЕ ДЕЛАЕТ (кажется, по умолчанию для спотовых рынков):

      import ccxt
import pandas as pd

binance = ccxt.binance({'option': {'defaultType': 'delivery', 'adjustForTimeDifference': True}})

securities = pd.DataFrame(binance.load_markets()).transpose()
securities

возвращает спотовые рынки:

Новый рекомендуемый способ создания exchangeобъект:

      exchange = ccxt.binanceusdm({
    'apiKey': ...,
    'secret': ...,
})

Об этом сообщил сопровождающий проекта (@kroitor) в Discord.

Старый способ (который на момент написания все еще работает):

      exchange = ccxt.binance({
    'apiKey': ...,
    'secret': ...,
    'options': {
        'defaultType': 'future',
    },
})

Код примера в репо еще не обновлен (тоже подтвержден).

Создайте экземпляр обмена binance и настройте его options собственность {'defaultType': 'future'}

import ccxt

exchange_id = 'binance'
exchange_class = getattr(ccxt, exchange_id)
exchange = exchange_class({
    'apiKey': 'your-public-api-key',
    'secret': 'your-api-secret',
    'timeout': 30000,
    'enableRateLimit': True,
})

exchange.options = {'defaultType': 'future'}
markets = exchange.load_markets()  # Load the futures markets

for market in markets: 
    print(market)                # check for the symbol you want to trade here

# The rest of your code goes here
Другие вопросы по тегам