本文档介绍如何使用订单清理功能来管理 Pacifica 平台上的开放订单。
订单清理功能包含以下特性:
系统启动时会自动执行以下操作:
// 从 Pacifica API 获取所有开放订单
// 清理所有非 reduce_only 的订单
// reduce_only 订单会被保留(通常是止损/止盈订单)
清理选项:
日志输出示例:
🧹 开始清理历史订单
✅ 历史订单清理完成
==========================================
📊 账户数: 2
📋 总订单数: 15
✅ 成功取消: 14
❌ 取消失败: 1
==========================================
系统停止时会自动执行以下操作:
// 停止所有活跃会话
// 取消所有开放订单(包括 reduce_only 订单)
// 确保账户干净停止
清理选项:
npm run cleanup-orders:dry
# 或
npm run cleanup-orders -- --dry
这将:
输出示例:
🧹 Pacifica 订单清理工具
==========================================
⚠️ 干运行模式:只显示要清理的订单,不实际执行
📊 找到 2 个活跃账户
✅ 账户已加载: 主账户 (account-1)
✅ 账户已加载: 副账户 (account-2)
------------------------------------------
📌 主账户 (account-1)
开放订单: 8
需要清理: 7
将要取消: 7
耗时: 245ms
📌 副账户 (account-2)
开放订单: 7
需要清理: 7
将要取消: 7
耗时: 198ms
==========================================
🎯 总计
==========================================
账户数: 2
总订单数: 15
将要取消: 14
总耗时: 443ms
==========================================
💡 提示: 移除 --dry 参数以实际执行清理
npm run cleanup-orders
这将:
输出示例:
🧹 Pacifica 订单清理工具
==========================================
📊 找到 2 个活跃账户
✅ 账户已加载: 主账户 (account-1)
✅ 账户已加载: 副账户 (account-2)
------------------------------------------
🚀 开始清理订单...
==========================================
📊 清理结果汇总
==========================================
📌 主账户 (account-1)
开放订单: 8
需要清理: 7
已取消: 7
失败: 0
耗时: 1245ms
📌 副账户 (account-2)
开放订单: 7
需要清理: 7
已取消: 6
失败: 1
耗时: 1198ms
⚠️ 错误详情:
订单ID 12345: Order already filled
==========================================
🎯 总计
==========================================
账户数: 2
总订单数: 15
成功取消: 13
取消失败: 1
总耗时: 2443ms
==========================================
✅ 订单清理完成!
订单清理服务支持以下筛选选项:
interface CleanupOptions {
// 是否清理所有订单
cleanAll?: boolean;
// 只清理特定交易对的订单
symbols?: string[]; // 例如: ['BTC-PERP', 'ETH-PERP']
// 只清理特定方向的订单
sides?: Array<'bid' | 'ask'>; // 例如: ['bid']
// 清理创建时间早于指定时间戳的订单(毫秒)
olderThan?: number; // 例如: Date.now() - 3600000 (1小时前)
// 是否清理 reduce_only 订单
includeReduceOnly?: boolean;
// 清理模式:selective(逐个清理)或 force(批量清理)
mode?: 'selective' | 'force';
// 是否执行干运行
dryRun?: boolean;
}
// 1. 只清理 BTC-PERP 的订单
const options: CleanupOptions = {
symbols: ['BTC-PERP'],
includeReduceOnly: false
};
// 2. 只清理 1 小时前的订单
const options: CleanupOptions = {
olderThan: Date.now() - 3600000,
includeReduceOnly: false
};
// 3. 清理所有卖单
const options: CleanupOptions = {
sides: ['ask'],
includeReduceOnly: false
};
// 4. 强制清理所有订单(包括 reduce_only)
const options: CleanupOptions = {
cleanAll: true,
includeReduceOnly: true,
mode: 'force'
};
订单清理服务使用 Pacifica API 的以下端点:
GET /api/v1/orders
从此端点获取所有开放订单,然后根据筛选条件决定哪些订单需要清理。
POST /api/v1/orders/cancel
Body: { order_id: "12345" }
在 selective
模式下使用,逐个取消订单。
POST /api/v1/orders/cancel_all
在 force
模式下使用,批量取消所有订单。
Order already filled
Order not found
API rate limit
Network timeout
所有错误都会记录到日志中,包括:
{
orderId: 12345,
error: 'Order already filled',
accountId: 'account-1',
timestamp: '2025-09-30T10:30:00Z'
}
# 先查看有哪些订单
npm run cleanup-orders:dry
# 确认后再清理
npm run cleanup-orders
如果系统长时间运行,建议:
如果有重要的止损/止盈订单:
includeReduceOnly: false
选项symbols
和 sides
精确筛选对于多个账户:
谨慎使用 force 模式
干运行模式优先
--dry
参数预览备份重要配置
监控清理结果
原因:
解决方案:
# 1. 检查账户配置
npm run test:basic
# 2. 检查 API 连接
npm run test:advanced
# 3. 查看详细日志
tail -f logs/system.log
原因:
解决方案:
原因:
解决方案:
force
模式批量取消订单清理功能提供了灵活的方式来管理 Pacifica 平台上的订单:
✅ 自动化 - 系统启动/停止时自动清理 ✅ 可控性 - 支持干运行模式和条件筛选 ✅ 可靠性 - 错误处理和详细日志 ✅ 安全性 - 保护重要订单,避免误操作
正确使用订单清理功能可以: