名称: 仓位
描述: “带止损、止盈和追踪止损的仓位管理”
表情: “📍”
仓位 - 完整API参考
使用自动化止损、止盈和追踪止损订单管理开仓仓位。
聊天命令
查看仓位
/positions 列出所有仓位
/positions poly 仅Polymarket仓位
/positions futures 仅期货仓位
/position <id> 仓位详情
止损
/sl <仓位-id> at 0.35 设置止损价格
/sl <仓位-id> -10% 止损低于入场价10%
/sl poly "Trump" at 0.35 按市场名称设置
止盈
/tp <仓位-id> at 0.65 设置止盈价格
/tp <仓位-id> +20% 止盈高于入场价20%
/tp poly "Trump" at 0.65 按市场名称设置
追踪止损
/trailing <仓位-id> 5% 从高点追踪5%
/trailing <仓位-id> $0.05 从高点追踪$0.05
部分退出
/tp <仓位-id> at 0.55 size 50% 止盈一半仓位
/sl <仓位-id> at 0.40 size 25% 止损四分之一仓位
TypeScript API参考
创建仓位管理器
import { createPositionManager } from 'clodds/positions';
const positions = createPositionManager({
// 监控
checkIntervalMs: 5000,
// 执行
orderType: 'market', // 'market' | 'limit'
limitBuffer: 0.01, // 限价订单的缓冲
// 存储
storage: 'sqlite',
dbPath: './positions.db',
});
// 开始监控
await positions.start();
列出仓位
const all = await positions.list();
for (const pos of all) {
console.log(`${pos.id}: ${pos.platform} ${pos.market}`);
console.log(` 方向: ${pos.side}`);
console.log(` 规模: ${pos.size}`);
console.log(` 入场价: ${pos.entryPrice}`);
console.log(` 当前价: ${pos.currentPrice}`);
console.log(` P&L: ${pos.pnl} (${pos.pnlPercent}%)`);
console.log(` 止损: ${pos.stopLoss || '无'}`);
console.log(` 止盈: ${pos.takeProfit || '无'}`);
}
设置止损
// 绝对价格
await positions.setStopLoss({
positionId: 'pos-123',
price: 0.35,
});
// 相对于入场价的百分比
await positions.setStopLoss({
positionId: 'pos-123',
percentFromEntry: 10, // 低于入场价10%
});
// 相对于当前价的百分比
await positions.setStopLoss({
positionId: 'pos-123',
percentFromCurrent: 5, // 低于当前价5%
});
// 部分止损
await positions.setStopLoss({
positionId: 'pos-123',
price: 0.35,
sizePercent: 50, // 退出50%仓位
});
设置止盈
// 绝对价格
await positions.setTakeProfit({
positionId: 'pos-123',
price: 0.65,
});
// 相对于入场价的百分比
await positions.setTakeProfit({
positionId: 'pos-123',
percentFromEntry: 20, // 高于入场价20%
});
// 多级止盈
await positions.setTakeProfit({
positionId: 'pos-123',
levels: [
{ price: 0.55, sizePercent: 25 }, // 25%在0.55
{ price: 0.60, sizePercent: 25 }, // 25%在0.60
{ price: 0.70, sizePercent: 50 }, // 50%在0.70
],
});
设置追踪止损
// 百分比追踪
await positions.setTrailingStop({
positionId: 'pos-123',
trailPercent: 5, // 从高点追踪5%
});
// 绝对金额追踪
await positions.setTrailingStop({
positionId: 'pos-123',
trailAmount: 0.05, // 从高点追踪$0.05
});
// 在目标后激活
await positions.setTrailingStop({
positionId: 'pos-123',
trailPercent: 5,
activateAt: 0.55, // 仅在0.55后开始追踪
});
移除止损
// 移除止损
await positions.removeStopLoss('pos-123');
// 移除止盈
await positions.removeTakeProfit('pos-123');
// 移除追踪止损
await positions.removeTrailingStop('pos-123');
// 移除所有止损
await positions.removeAllStops('pos-123');
事件处理器
// 止损触发
positions.on('stopLossTriggered', (position, result) => {
console.log(`🛑 止损触发: ${position.market}`);
console.log(` 入场: ${position.entryPrice}`);
console.log(` 退出: ${result.exitPrice}`);
console.log(` P&L: ${result.pnl}`);
});
// 止盈触发
positions.on('takeProfitTriggered', (position, result) => {
console.log(`✅ 止盈触发: ${position.market}`);
console.log(` P&L: ${result.pnl}`);
});
// 追踪止损触发
positions.on('trailingStopTriggered', (position, result) => {
console.log(`📉 追踪止损触发: ${position.market}`);
console.log(` 高点: ${position.highWaterMark}`);
console.log(` 退出: ${result.exitPrice}`);
});
// 价格接近止损
positions.on('approaching', (position, type, distance) => {
console.log(`⚠️ ${position.market} 距离${type} ${distance}%`);
});
仓位摘要
const summary = await positions.getSummary();
console.log(`总仓位数: ${summary.count}`);
console.log(`总价值: $${summary.totalValue}`);
console.log(`未实现P&L: $${summary.unrealizedPnl}`);
console.log(`带止损: ${summary.withStopLoss}`);
console.log(`带止盈: ${summary.withTakeProfit}`);
止损类型
| 类型 |
描述 |
| 止损 |
当价格下跌到限制损失时退出 |
| 止盈 |
当价格上涨到锁定收益时退出 |
| 追踪止损 |
动态止损,跟随价格上涨 |
| 保本止损 |
在达到利润目标后将止损移动到入场价 |
订单执行
| 选项 |
描述 |
market |
以当前价格立即执行 |
limit |
以指定价格或更好价格执行 |
buffer |
为限价订单添加缓冲以提高成交率 |
最佳实践
- 始终设置止损 — 不要留下无保护的仓位
- 使用追踪止损 — 在价格移动时锁定收益
- 部分退出 — 在多级水平逐步退出
- 监控接近触发 — 在触发前获得警报
- 审查已执行的止损 — 检查执行质量