Pharos
Trade

exchange.CancelOrder()

取消指定的订单。

语法

python
result = exchange.CancelOrder(order_id)

参数

参数类型必填说明
order_idstr订单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)

注意事项

  1. 已成交订单:已完全成交的订单无法取消
  2. 部分成交:部分成交的订单取消后,未成交部分被取消
  3. 重复取消:重复取消同一订单会报错

相关方法