无法使用 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 不是现货市场 MKR/USDT 中的有效订单类型

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

解决方法

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

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...