【问题标题】:Unable to place a trailing stop loss order with ccxt无法使用 ccxt 设置追踪止损单
【发布时间】:2026-01-07 07:00:02
【问题描述】:

我正在运行一个算法来预测价格并使用 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 不是现货市场 MKR/USDT 中的有效订单类型

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

【问题讨论】:

    标签: python api cryptocurrency ccxt


    【解决方案1】:

    币安不支持现货市场的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})
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】: