Trade
exchange.CancelOrder()
取消指定的订单。
语法
python
result = exchange.CancelOrder(order_id)参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| order_id | str | 是 | 订单ID |
返回值
bool: 成功返回 True,失败抛出异常
示例
基础用法
python
order_id = exchange.Buy(50000, 0.1)
Sleep(5000) # 等待5秒
# 取消订单
try:
exchange.CancelOrder(order_id)
Log("订单已取消:", order_id)
except Exception as e:
Log("取消失败:", str(e))条件取消
python
def cancel_if_not_filled(order_id, wait_seconds=30):
"""如果订单在指定时间内未成交,则取消"""
Sleep(wait_seconds * 1000)
order = exchange.GetOrder(order_id)
if order and order['Status'] == 'pending':
exchange.CancelOrder(order_id)
Log(f"订单 {order_id} 未成交,已取消")
return True
else:
Log(f"订单 {order_id} 已成交")
return False
order_id = exchange.Buy(50000, 0.1)
cancel_if_not_filled(order_id, 30)批量取消
python
def cancel_orders(order_ids):
"""批量取消订单"""
success_count = 0
fail_count = 0
for order_id in order_ids:
try:
exchange.CancelOrder(order_id)
success_count += 1
Log(f"✓ 取消成功: {order_id}")
except Exception as e:
fail_count += 1
Log(f"✗ 取消失败: {order_id}, 原因: {str(e)}")
Sleep(200) # 避免频率限制
Log(f"取消完成: 成功 {success_count}, 失败 {fail_count}")
# 使用
order_ids = ["123", "456", "789"]
cancel_orders(order_ids)注意事项
- 已成交订单:已完全成交的订单无法取消
- 部分成交:部分成交的订单取消后,未成交部分被取消
- 重复取消:重复取消同一订单会报错
相关方法
- CancelAllOrders - 取消所有订单
- GetOrder - 查询订单状态
- GetOrders - 获取未完成订单