策略 - 完整API参考
使用自然语言或模板创建自定义交易策略,然后部署到实时交易。
聊天命令
创建策略
/策略 创建 "当价格在1小时内下跌5%时买入"
/策略 创建 动量 --回溯 14 --阈值 2%
/策略 从模板 平均回归
管理策略
/策略列表 列出所有策略
/策略 <名称> 查看策略详情
/策略 编辑 <名称> 修改策略
/策略 删除 <名称> 移除策略
激活/停用
/策略 激活 <名称> 开始运行策略
/策略 停用 <名称> 停止策略
/策略 暂停 <名称> 暂时暂停
/策略 恢复 <名称> 恢复暂停的策略
测试 & 验证
/策略 测试 <名称> --dry-run 不进行实际交易的测试
/策略 回测 <名称> 运行回测
/策略 验证 <名称> 检查错误
TypeScript API参考
创建策略构建器
import { createStrategyBuilder } from 'clodds/策略';
const builder = createStrategyBuilder({
// 验证
requireDryRun: true,
validateParameters: true,
// 存储
storage: 'sqlite',
dbPath: './策略.db',
});
自然语言策略
// 从自然语言创建
const strategy = await builder.fromNaturalLanguage({
description: `
当满足以下条件时,在任何市场上买入YES:
- 价格在过去一小时内下跌超过5%
- 成交量高于平均水平
- 价差小于2%
当满足以下条件时卖出:
- 价格从入场点回升3%
- 或24小时后(超时)
风险:每笔交易最多占投资组合的5%
`,
name: 'dip-buyer',
});
console.log(`已创建:${strategy.name}`);
console.log(`条件:${strategy.conditions.length}`);
基于模板的策略
// 动量策略
const momentum = await builder.fromTemplate('momentum', {
lookbackPeriod: 14,
entryThreshold: 0.02,
exitThreshold: 0.01,
stopLoss: 0.05,
takeProfit: 0.10,
maxPositionPct: 10,
});
// 平均回归策略
const meanReversion = await builder.fromTemplate('mean-reversion', {
lookbackPeriod: 20,
deviationThreshold: 2, // 标准差
exitOnMean: true,
stopLoss: 0.08,
});
// 套利策略
const arbitrage = await builder.fromTemplate('arbitrage', {
minSpread: 0.02,
platforms: ['polymarket', 'kalshi'],
maxSlippage: 0.01,
});
// 突破策略
const breakout = await builder.fromTemplate('breakout', {
rangePeriod: '7d',
breakoutThreshold: 0.05,
confirmationVolume: 1.5, // 1.5倍平均成交量
});
自定义策略代码
// 完全自定义策略
const custom = await builder.create({
name: 'my-custom-strategy',
description: '买入低价且成交量高的市场',
// 入场条件(全部必须为真)
entryConditions: [
{ type: 'price', operator: '<', value: 0.30 },
{ type: 'volume24h', operator: '>', value: 50000 },
{ type: 'spread', operator: '<', value: 0.02 },
],
// 退出条件(任何一个触发退出)
exitConditions: [
{ type: 'profit', operator: '>=', value: 0.15 },
{ type: 'loss', operator: '>=', value: 0.10 },
{ type: 'holdTime', operator: '>=', value: '48h' },
],
// 风险管理
risk: {
maxPositionPct: 5,
stopLoss: 0.10,
takeProfit: 0.20,
maxConcurrentPositions: 5,
},
// 执行
execution: {
orderType: 'limit',
limitBuffer: 0.005,
retries: 3,
},
});
验证策略
const validation = await builder.validate(strategy);
if (validation.valid) {
console.log('✅ 策略有效');
} else {
console.log('❌ 验证错误:');
for (const error of validation.errors) {
console.log(` - ${error}`);
}
}
// 警告(不阻止)
for (const warning of validation.warnings) {
console.log(`⚠️ ${warning}`);
}
激活策略
// 首先进行干跑(必需)
await builder.activate(strategy.name, {
dryRun: true,
notifyOnTrade: true,
});
// 验证后,上线
await builder.activate(strategy.name, {
dryRun: false,
capital: 5000, // 分配$5000
});
监控策略
const status = await builder.getStatus(strategy.name);
console.log(`状态:${status.status}`); // 'active' | 'paused' | 'stopped'
console.log(`交易:${status.trades}`);
console.log(`盈亏:$${status.pnl}`);
console.log(`胜率:${status.winRate}%`);
console.log(`活跃头寸:${status.activePositions}`);
console.log(`最后信号:${status.lastSignal}`);
列出策略
const strategies = await builder.list();
for (const s of strategies) {
console.log(`${s.name}: ${s.status}`);
console.log(` 类型:${s.template || 'custom'}`);
console.log(` 盈亏:$${s.pnl}`);
console.log(` 交易:${s.trades}`);
}
内置模板
| 模板 |
描述 |
momentum |
跟随价格趋势 |
mean-reversion |
逢低买入,逢高卖出 |
arbitrage |
跨平台价差 |
breakout |
突破范围进入 |
pairs |
相关市场对 |
news-reactive |
对新闻事件做出反应 |
volume-spike |
在成交量激增时交易 |
条件类型
| 类型 |
描述 |
示例 |
price |
当前价格 |
< 0.30 |
volume24h |
24小时成交量 |
> 50000 |
spread |
买卖价差 |
< 0.02 |
profit |
未实现利润 |
>= 0.15 |
loss |
未实现亏损 |
>= 0.10 |
holdTime |
持仓时间 |
>= 48h |
priceChange |
价格变化% |
< -0.05 (5%下跌) |
最佳实践
- 始终先进行干跑 —— 在投入真金白银之前进行测试
- 从小开始 —— 在证明有效之前使用低资本
- 设置止损 —— 防止不良交易
- 积极监控 —— 检查策略性能
- 迭代 —— 根据结果进行改进