复制交易 copy-trading

自动复制Polymarket和加密货币上成功钱包的交易,具有可配置的尺寸、延迟和风险控制。

算法交易 0 次安装 0 次浏览 更新于 3/5/2026

name: copy-trading description: “自动复制Polymarket和加密货币上成功钱包的交易” emoji: “📋” gates: envs: anyOf: - POLY_API_KEY - SOLANA_PRIVATE_KEY - EVM_PRIVATE_KEY

复制交易 - 完整API参考

自动镜像Polymarket和加密货币链上成功钱包的交易,具有可配置的尺寸、延迟和风险控制。

特点

  • 跟随Polymarket和加密货币链上的鲸鱼钱包
  • 可配置尺寸:固定、比例或投资组合的%
  • 交易延迟:避免检测和抢先交易
  • 风险限制:最大仓位、每日损失限制
  • 止损/止盈监控自动退出

聊天命令

跟随钱包

/copy follow <address>                      # 开始跟随钱包
/copy follow 0x1234... --size 100           # 跟随时固定$100
/copy follow 0x1234... --size 50%           # 跟随时为他们的50%
/copy follow 0x1234... --delay 30           # 复制前延迟30秒

/copy unfollow <address>                    # 停止跟随
/copy list                                  # 列出跟随的钱包
/copy status                                # 显示复制交易状态

尺寸模式

/copy size <address> fixed 100              # 总是交易$100
/copy size <address> proportional 0.5       # 他们的50%
/copy size <address> portfolio 5%           # 你的投资组合的5%

风险控制

/copy limits --max-position 1000            # 每仓位最大$1000
/copy limits --daily-loss 500               # 每日损失后停止$500
/copy limits --max-trades 20                # 每日最多交易20次

/copy sl <address> 10%                      # 复制时设置10%止损
/copy tp <address> 20%                      # 复制时设置20%止盈

发现

/copy top 10                                # 可以复制的前10名交易者
/copy top 10 --min-winrate 60               # 最小60%胜率
/copy top 10 --min-volume 100000            # 最小$100k交易量
/copy analyze <address>                     # 分析交易者的表现

TypeScript API参考

创建复制交易服务

import { createCopyTradingService } from 'clodds/trading/copy-trading';

const copyTrader = createCopyTradingService({
  // Polymarket凭证
  polymarket: {
    apiKey: process.env.POLY_API_KEY,
    apiSecret: process.env.POLY_API_SECRET,
    passphrase: process.env.POLY_API_PASSPHRASE,
    privateKey: process.env.PRIVATE_KEY,
  },

  // 默认设置
  defaults: {
    sizingMode: 'proportional',
    sizingValue: 0.5,           // 50%的他们的尺寸
    delaySeconds: 15,           // 延迟15s
    maxPositionSize: 1000,      // 最大$1000
    stopLossPct: 10,            // 10%止损
    takeProfitPct: 25,          // 25%止盈
  },

  // 风险限制
  limits: {
    maxDailyLoss: 500,
    maxDailyTrades: 20,
    maxTotalExposure: 5000,
  },
});

跟随钱包

// 跟随钱包,默认设置
await copyTrader.follow('0x1234...');

// 自定义设置跟随
await copyTrader.follow('0x1234...', {
  sizingMode: 'fixed',
  sizingValue: 100,            // 每笔交易$100
  delaySeconds: 30,            // 延迟30s
  stopLossPct: 15,             // 15%止损
  takeProfitPct: 30,           // 30%止盈

  // 过滤器
  minTradeSize: 50,            // 只复制交易额>$50
  maxTradeSize: 5000,          // 跳过交易额>$5000
  markets: ['politics'],       // 只复制政治市场
});

// 取消跟随
await copyTrader.unfollow('0x1234...');

// 列出跟随的
const followed = await copyTrader.listFollowed();

尺寸模式

// 固定:总是交易相同金额
await copyTrader.follow(address, {
  sizingMode: 'fixed',
  sizingValue: 100,  // 总是$100
});

// 比例:他们交易尺寸的百分比
await copyTrader.follow(address, {
  sizingMode: 'proportional',
  sizingValue: 0.5,  // 50%的他们的尺寸
});

// 投资组合:你投资组合的百分比
await copyTrader.follow(address, {
  sizingMode: 'portfolio',
  sizingValue: 0.05,  // 每笔交易投资组合的5%
});

事件处理

copyTrader.on('trade_copied', (event) => {
  console.log(`Copied ${event.side} on ${event.market}`);
  console.log(`Original: $${event.originalSize}, Copied: $${event.copiedSize}`);
});

copyTrader.on('stop_loss_triggered', (event) => {
  console.log(`Stop-loss hit on ${event.market}`);
  console.log(`Loss: $${event.loss}`);
});

copyTrader.on('take_profit_triggered', (event) => {
  console.log(`Take-profit hit on ${event.market}`);
  console.log(`Profit: $${event.profit}`);
});

copyTrader.on('limit_reached', (event) => {
  console.log(`Limit reached: ${event.type}`);
});

开始/停止

// 开始复制交易(监控跟随的钱包)
await copyTrader.start();

// 停止复制交易
await copyTrader.stop();

// 获取状态
const status = copyTrader.getStatus();
console.log(`Following: ${status.followedCount} wallets`);
console.log(`Today's P&L: $${status.dailyPnl}`);
console.log(`Active positions: ${status.activePositions}`);

寻找最佳交易者

import { findBestAddressesToCopy } from 'clodds/trading/copy-trading';

// 寻找顶级交易者
const topTraders = await findBestAddressesToCopy({
  minWinRate: 0.6,           // 60%+胜率
  minVolume: 100000,         // $100k+交易量
  minTrades: 50,             // 50+交易
  timeframeDays: 30,         // 最后30天
  limit: 10,                 // 前10名
});

for (const trader of topTraders) {
  console.log(`${trader.address}`);
  console.log(`  Win rate: ${(trader.winRate * 100).toFixed(1)}%`);
  console.log(`  Volume: $${trader.totalVolume.toLocaleString()}`);
  console.log(`  P&L: $${trader.pnl.toLocaleString()}`);
  console.log(`  Trades: ${trader.tradeCount}`);
}

分析交易者

const analysis = await copyTrader.analyzeTrader('0x1234...');

console.log(`Win rate: ${analysis.winRate}%`);
console.log(`Avg trade size: $${analysis.avgTradeSize}`);
console.log(`Best market: ${analysis.bestMarket}`);
console.log(`Worst market: ${analysis.worstMarket}`);
console.log(`Avg hold time: ${analysis.avgHoldTime} hours`);
console.log(`Sharpe ratio: ${analysis.sharpeRatio}`);

风险管理

止损监控

复制交易包括自动止损监控,价格轮询每5秒一次:

// 为每个跟随的钱包配置止损
await copyTrader.follow(address, {
  stopLossPct: 10,  // 亏损10%时退出
});

// 或设置全局止损
copyTrader.setGlobalStopLoss(15);  // 所有仓位15%

止盈监控

// 为每个跟随的钱包配置止盈
await copyTrader.follow(address, {
  takeProfitPct: 25,  // 盈利25%时退出
});

// 跟踪止盈
await copyTrader.follow(address, {
  trailingTakeProfit: true,
  trailingPct: 5,  // 跟踪5%
});

日常限制

const copyTrader = createCopyTradingService({
  limits: {
    maxDailyLoss: 500,      // 损失后停止$500
    maxDailyTrades: 20,     // 最多20次交易
    maxTotalExposure: 5000, // 最大$5k总敞口
  },
});

最佳实践

  1. 从小尺寸开始 - 测试10-25%的比例尺寸
  2. 使用延迟 - 15-30秒的延迟减少抢先交易风险
  3. 设置止损 - 总是使用10-15%的止损
  4. 多元化 - 跟随3-5个钱包,不仅仅是一个
  5. 定期监控 - 每天检查表现
  6. 过滤市场 - 专注于你了解的类别