问题描述
我正在运行一种算法来预测价格并使用 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 并不断重新计算您的止损价格。当当前市价达到止损价时,提交新订单。