求助:如何用Python调用KuCoin API实现带止损的限价单/OCO单?
KuCoin API带止损限价单/OCO订单的解决方案
KuCoin API是支持止损限价单和OCO订单的,你之前的问题出在单独提交两个普通限价单,导致资金被重复占用。用官方提供的专用订单类型就能解决:
1. 止损限价单(Stop Limit Order)
直接创建止损限价单,这类订单会在触发价格达标后自动转为限价单,不会提前锁定全部资金。
用KuCoin官方Python SDK的实现示例:
from kucoin.client import Client # 初始化客户端 api_key = '你的API_KEY' api_secret = '你的API_SECRET' api_passphrase = '你的API_PASSPHRASE' client = Client(api_key, api_secret, api_passphrase) # 以BTC-USDT为例,创建止损限价卖单 order = client.create_stop_limit_order( symbol='BTC-USDT', side=Client.SIDE_SELL, stop_price='28000', # 止损触发价格 limit_price='27950', # 触发后执行的限价 size='0.001', # 交易数量 stop=Client.STOP_LOSS # 指定为止损类型 ) print(order)
如果不用SDK,直接发POST请求到https://api.kucoin.com/api/v1/orders,参数格式如下:
{ "symbol": "BTC-USDT", "type": "stop_limit", "side": "sell", "stopPrice": "28000", "limitPrice": "27950", "size": "0.001", "stop": "loss" }
2. OCO订单(One-Cancels-the-Other)
如果需要同时挂限价卖单和止损卖单,且其中一个成交后自动取消另一个,就用OCO订单。这类订单只会锁定所需的最大资金,不会重复占用。
SDK示例:
# 创建OCO订单 oco_order = client.create_oco_order( symbol='BTC-USDT', side=Client.SIDE_SELL, stop_price='27500', # 止损触发价 limit_price='30000', # 限价卖单价格 size='0.001', stop_limit_price='27450', # 止损触发后执行的限价 stop=Client.STOP_LOSS ) print(oco_order)
直接调用API的话,POST请求到https://api.kucoin.com/api/v1/oco/orders,参数参考官方文档的OCO订单规范即可。
注意事项
- 确保你的API密钥开启了交易权限,否则无法创建订单。
- 价格、数量参数要符合对应交易对的精度要求,可通过
client.get_symbol_detail('BTC-USDT')查询精度信息。 - 止损限价单的触发逻辑:
stop=loss时,市场价格下跌到等于或低于stopPrice触发;stop=profit时,市场价格上涨到等于或高于stopPrice触发。
内容的提问来源于stack exchange,提问作者Patrick Dillon
相关产品推荐
相关产品推荐

