无法使用 ccxt 设置追踪止损单

Unable to place a trailing stop loss order with ccxt

我是 运行 一种算法,可以使用 python 中的 ccxt API 为我预测价格和输入交易。我想执行一个追踪止损订单,我输入了这样的多头头寸:

exchange = ccxt.binance({
    'enableRateLimit': True,
    'apiKey': '*****',
    'secret': '*****'
})

exchange.load_markets()

exchange.create_order('MKR/USDT, 'TRAILING_STOP_MARKET', 'buy', exchange.fetch_balance()['USDT']['free']/exchange.fetch_ticker('MKR/USDT)['last'], None, params = {'callbackRate': 1})

但我收到以下错误:

ccxt.base.errors.InvalidOrder: binance TRAILING_STOP_MARKET is not a valid order type in spot market MKR/USDT

我不确定为什么会这么想,因为我很确定 binance 支持追踪止损订单(它在自己的 API 文档中这样说)。

Binance REST API 不支持 TRAILING_STOP_MARKET,请参阅 Enum definitions 中的“订单类型”。

如果您想模拟移动止损单,您需要订阅 trade stream 并不断重新计算您的止损价。当前市场价格到达止损价时,提交新订单。

Binance 不支持现货市场的 TRAILING_STOP_MARKET 订单类型(这是 CCXT 的默认设置):

Binance 仅支持 TRAILING_STOP_MARKET 期货市场订单类型:

如果您想使用 CCXT 切换到币安期货 API,您可以执行以下操作:

exchange = ccxt.binance({
    'enableRateLimit': True,
    'apiKey': '*****',
    'secret': '*****'
    'options': {
        'defaultType': 'future',  # or 'delivery' for COIN-M futures
    },
})

exchange.load_markets()

exchange.create_order('MKR/USDT, 'TRAILING_STOP_MARKET', 'buy', exchange.fetch_balance()['USDT']['free']/exchange.fetch_ticker('MKR/USDT)['last'], None, params = {'callbackRate': 1})