关于 trading-system
trading-system 是用于跟踪投资组合、交易和表现并管理交易机器人的统一系统。它会将交易记录写入 SQLite,并支持内置策略和自定义策略。
主要功能
- 01投资组合与持仓跟踪
- 02交易历史、统计数据及盈亏报告
- 03导出 CSV 和 JSON 交易记录
- 04机器人注册与生命周期管理
- 05内置策略及自定义策略
- 06自动将交易记录写入 SQLite
适用场景
- 01查看投资组合持仓和价值
- 02分析一段时间内的交易表现
- 03管理机器人及其策略
- 04导出交易记录以备份或审阅
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ alsk1992/ cloddsbot --skill trading-system安装后在 Claude Code 中输入/trading-system确认已加载。
附带文件index.ts
详细介绍
交易系统 - 完整 API 参考
统一交易系统,支持自动记录到 SQLite、机器人管理和绩效分析。
聊天命令
投资组合
/trading portfolio # View all positions
/trading portfolio poly # Positions on Polymarket
/trading portfolio --value # Include current values
绩效
/trading stats # Overall statistics
/trading stats --period 30d # Last 30 days
/trading daily-pnl # Daily P&L breakdown
/trading weekly-pnl # Weekly P&L
/trading monthly-pnl # Monthly P&L
交易历史
/trading history # Recent trades
/trading history --limit 50 # Last 50 trades
/trading history --platform poly # Polymarket only
/trading export # Export to CSV
/trading export --format json # Export as JSON
机器人管理
/bot list # List all bots
/bot register <name> <strategy> # Register new bot
/bot start <name> # Start bot
/bot stop <name> # Stop bot
/bot status <name> # Bot status
/bot delete <name> # Delete bot
机器人策略
/bot strategies # List available strategies
/bot create mean-reversion --config {...} # Create with config
/bot create momentum --lookback 14 # Momentum strategy
/bot create arbitrage --min-spread 1 # Arbitrage strategy
TypeScript API 参考
创建交易系统
import { createTradingSystem } from 'clodds/trading';
const trading = createTradingSystem({
// Execution service
execution: executionService,
// Auto-logging
autoLog: true,
logPath: './trades.db',
// Bot configuration
bots: {
enabled: true,
maxConcurrent: 5,
},
});
投资组合
// Get portfolio
const portfolio = await trading.getPortfolio();
console.log(`Total value: $${portfolio.totalValue.toLocaleString()}`);
console.log(`Unrealized P&L: $${portfolio.unrealizedPnl.toLocaleString()}`);
for (const position of portfolio.positions) {
console.log(`[${position.platform}] ${position.market}`);
console.log(` Side: ${position.side}`);
console.log(` Size: ${position.size}`);
console.log(` Avg price: ${position.avgPrice}`);
console.log(` Current: ${position.currentPrice}`);
console.log(` P&L: $${position.unrealizedPnl.toFixed(2)}`);
}
统计数据
// Get trading statistics
const stats = await trading.getStats({ period: '30d' });
console.log(`Total trades: ${stats.totalTrades}`);
console.log(`Win rate: ${(stats.winRate * 100).toFixed(1)}%`);
console.log(`Profit factor: ${stats.profitFactor.toFixed(2)}`);
console.log(`Total P&L: $${stats.totalPnl.toLocaleString()}`);
console.log(`Avg trade: $${stats.avgTrade.toFixed(2)}`);
console.log(`Largest win: $${stats.largestWin.toFixed(2)}`);
console.log(`Largest loss: $${stats.largestLoss.toFixed(2)}`);
console.log(`Sharpe ratio: ${stats.sharpeRatio.toFixed(2)}`);
console.log(`Max drawdown: ${(stats.maxDrawdown * 100).toFixed(1)}%`);
每日盈亏
// Get daily P&L
const dailyPnl = await trading.getDailyPnL({ days: 30 });
for (const day of dailyPnl) {
const sign = day.pnl >= 0 ? '+' : '';
console.log(`${day.date}: ${sign}$${day.pnl.toFixed(2)} (${day.trades} trades)`);
}
导出交易记录
// Export to CSV
await trading.exportTrades({
format: 'csv',
path: './trades.csv',
from: '2024-01-01',
to: '2024-12-31',
});
// Export to JSON
const trades = await trading.exportTrades({
format: 'json',
from: '2024-01-01',
});
机器人管理
// List bots
const bots = trading.bots.list();
// Register a bot
await trading.bots.register({
name: 'my-arb-bot',
strategy: 'arbitrage',
config: {
minSpread: 1,
maxPositionSize: 500,
platforms: ['polymarket', 'kalshi'],
},
});
// Start bot
await trading.bots.start('my-arb-bot');
// Get status
const status = trading.bots.getStatus('my-arb-bot');
console.log(`Running: ${status.isRunning}`);
console.log(`Trades today: ${status.tradesToday}`);
console.log(`P&L today: $${status.pnlToday}`);
// Stop bot
await trading.bots.stop('my-arb-bot');
// Delete bot
await trading.bots.delete('my-arb-bot');
内置策略
// Mean Reversion
await trading.bots.register({
name: 'mean-rev',
strategy: 'mean-reversion',
config: {
lookbackPeriod: 20,
deviationThreshold: 2,
positionSize: 100,
},
});
// Momentum
await trading.bots.register({
name: 'momentum',
strategy: 'momentum',
config: {
lookbackPeriod: 14,
entryThreshold: 0.6,
exitThreshold: 0.4,
positionSize: 100,
},
});
// Arbitrage
await trading.bots.register({
name: 'arb',
strategy: 'arbitrage',
config: {
minSpread: 1,
minLiquidity: 500,
maxPositionSize: 1000,
},
});
自定义策略
// Register custom strategy
trading.bots.registerStrategy('my-strategy', {
init: async (ctx) => {
// Initialize state
},
evaluate: async (ctx) => {
// Return signals
return [
{
platform: 'polymarket',
marketId: 'market-123',
action: 'buy',
side: 'YES',
size: 100,
reason: 'Signal triggered',
},
];
},
onTrade: (trade) => {
console.log(`Trade executed: ${trade.orderId}`);
},
cleanup: async () => {
// Cleanup
},
});
自动记录
所有交易都会自动记录到 SQLite:
-- trades table
SELECT * FROM trades
WHERE platform = 'polymarket'
ORDER BY timestamp DESC
LIMIT 10;
-- Get win rate
SELECT
COUNT(CASE WHEN pnl > 0 THEN 1 END) * 100.0 / COUNT(*) as win_rate
FROM trades;
最佳实践
- 从模拟交易开始 - 先使用 dry-run 模式
- 设置仓位限制 - 防止过度暴露风险
- 定期监控机器人 - 不要设置后就置之不理
- 每周检查绩效 - 调整策略
- 定期导出数据 - 备份交易历史
评论
支持 Markdown