金融与交易
需要监控 Polymarket 目标钱包并自动镜像 BUY…
在 Polygon 上通过 Polymarket CLOB API 实时/轮询监控目标钱包,并按比例与风控自动复制 BUY 订单。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要监控 Polymarket 目标钱包特定
解决思路
- 克隆仓库并进入目录:git clone https://github.com/Neron888/Polymarket-copy-trading-bot.git;cd Polymarket-copy-trading-bot;安装依赖:npm install。
- 确保运行环境为 Node.js v18+;CLOB SDK 需要 ethers v5,保持 package.json 中 pin 的 ethers v5,不要升级到 v6。
- 复制环境文件:cp .env.example .env。
- 编辑 .env 设置必需变量:TARGET_WALLET=0xTargetWalletAddressToMonitor、WALLET_PRIVATE_KEY=0xYourPrivateKey、RPC_URL=https://your-quicknode-polygon-endpoint.quiknode.pro/your-key/。
- 设置认证模式:SIG_TYPE=0 表示 EOA 默认;SIG_TYPE=1 表示 Poly Proxy;SIG_TYPE=2 表示 Poly Polymorphic;SIG_TYPE=1 或 2 时设置 PROXY_WALLET_ADDRESS。
- 设置 sizing:POSITION_MULTIPLIER=0.1 表示复制目标交易大小的 10%;MAX_TRADE_SIZE=100 为每笔复制交易最大 USDC;MIN_TRADE_SIZE=1 为每笔复制交易最小 USDC。
- 设置订单行为:ORDER_TYPE=FOK,可选 FOK | FAK | LIMIT;SLIPPAGE_TOLERANCE=0.02 表示 2%。
- 设置风险上限:MAX_SESSION_NOTIONAL=500 为整个 session 的总 USDC;MAX_PER_MARKET_NOTIONAL=100 为每个市场的 USDC 上限;0 表示禁用。
- 设置监控参数:USE_WEBSOCKET=true;POLL_INTERVAL=2000 为 REST 轮询间隔毫秒;USE_USER_CHANNEL=false 表示市场频道,true 表示用户 WS 频道。
- 设置可选变量:POLYMARKET_GEO_TOKEN、WS_ASSET_IDS、WS_MARKET_IDS、MIN_PRIORITY_FEE_GWEI=30、MIN_MAX_FEE_GWEI=60。
- 运行开发模式启动 bot:npm start。
- 生成并持久化 API credentials 到 .polymarket-api-creds:npm run generate-api-creds。
- 验证已有 API credentials:npm run test-api-creds。
- 编译 TypeScript 到 dist/:npm run build。
- 运行编译后的生产构建:npm run start:prod。
- 程序化启动:导入并调用 startBot();bot 从 process.env/.env 读取所有配置。
- 使用 TradeMonitor 轮询目标钱包:配置 targetWallet 和 pollInterval,监听 trade 事件,读取 trade.side 为 BUY|SELL、trade.asset 为 token ID、trade.size 为 USDC 大小、trade.price 为成交价 0–1;调用 monitor.start()。
- 使用 WebSocketMonitor 做低延迟订阅:配置 useUserChannel、assetIds、marketIds;监听 orderFilled;调用 wsMonitor.connect()。
- 使用 TradeExecutor 下复制单:用 ethers JsonRpcProvider 和 Wallet signer;以 CLOB 地址 https://clob.polymarket.com、chainId 137、signer、apiCreds、SIG_TYPE、PROXY_WALLET_ADDRESS 创建 ClobClient;配置 positionMultiplier、maxTradeSize、minTradeSize、orderType、slippageTolerance;调用 executor.copyTrade({ side:'BUY', tokenId, originalSize, price })。
- 使用 RiskManager 在提交前检查:配置 maxSessionNotional 和 maxPerMarketNotional;调用 riskManager.checkTrade({ marketId, notional: copySize });不允许时阻止交易。
- 使用 PositionTracker 在成交后更新内存仓位。
- 按执行流程操作:detect trade → BUY? → subscribe WS if needed → compute copy size → risk check → execute order (FOK/FAK/LIMIT) → record fill → update stats。
- EOA 认证模式:SIG_TYPE=0;WALLET_PRIVATE_KEY=0xYourKey;PROXY_WALLET_ADDRESS 留空;首次运行 bot 自动提交 USDC.e/CTF approval 交易;钱包需要 POL 作为 gas。
- Poly Proxy 认证模式:SIG_TYPE=1;WALLET_PRIVATE_KEY=0xSignerKey;PROXY_WALLET_ADDRESS=0xYourPolymarketProxyAddress。
- Poly Polymorphic 认证模式:SIG_TYPE=2;WALLET_PRIVATE_KEY=0xSignerKey;PROXY_WALLET_ADDRESS=0xYourPolymorphicSafeAddress。
- 生成 API credentials:运行 npm run generate-api-creds,从钱包签名派生 API keys 并写入 .polymarket-api-creds;如需预生成,在 npm start 前运行一次;bot 在 EOA 模式首次启动也会自动生成。
- 验证 API credentials:运行 npm run test-api-creds。
- 保守测试配置:POSITION_MULTIPLIER=0.05、MAX_TRADE_SIZE=5、MIN_TRADE_SIZE=1、MAX_SESSION_NOTIONAL=20、ORDER_TYPE=FOK、USE_WEBSOCKET=false。
- WebSocket-only market channel 低延迟配置:USE_WEBSOCKET=true、USE_USER_CHANNEL=false、WS_ASSET_IDS=0xTokenId1,0xTokenId2。
- LIMIT 订单加滑点缓冲:ORDER_TYPE=LIMIT、SLIPPAGE_TOLERANCE=0.03。
- 排查启动但未检测到交易:验证 TARGET_WALLET 是有效且有近期活动的 Polymarket 钱包;检查 POLL_INTERVAL 默认 2000ms,越低 API 调用越多;确认目标钱包在 Polymarket 交易而不只是持有仓位。
- 排查 ethers 版本冲突:项目 pin ethers v5,不要升级到 v6;运行 npm ls ethers 检查重复版本。
- 排查授权交易失败:确保钱包在 Polygon mainnet 上有足够 POL(MATIC)作为 gas;若交易停滞,增加 MIN_PRIORITY_FEE_GWEI 和 MIN_MAX_FEE_GWEI。
- 排查 generate-api-creds 失败:确认 WALLET_PRIVATE_KEY 正确且以 0x 开头;SIG_TYPE=1/2 时确保 PROXY_WALLET_ADDRESS 匹配 Polymarket 账户。
- 排查 CLOB 拒绝订单:FOK 订单在流动性不足时失败,改用 ORDER_TYPE=FAK 或 LIMIT;检查 SLIPPAGE_TOLERANCE 对低流动性市场是否太紧。
- 排查 session notional cap 立即命中:MAX_SESSION_NOTIONAL 每次进程运行重置,重启 bot 可重置;设置 MAX_SESSION_NOTIONAL=0 完全禁用上限。
- 准备钱包:Polygon mainnet 上有 USDC.e 作为交易抵押;有 POL(原 MATIC)用于 gas;批准 USDC.e 给 Polymarket CTF Exchange 和 CLOB 合约,bot 在首次 EOA 运行会自动完成。
- 只镜像 BUY 交易:SELL 交易会被检测但默认跳过。
- 通过 Polymarket Data API REST 每约 2 秒轮询监控目标钱包,并可选 WebSocket 监控。
- 复制大小使用 POSITION_MULTIPLIER 默认 10%,并受 MIN_TRADE_SIZE 与 MAX_TRADE_SIZE 限制。
- 以 FOK、FAK 或 LIMIT 通过 Polymarket CLOB client 提交订单。
- 实施风险限制:per-session 和 per-market notional caps。
- 支持三种认证模式:EOA(SIG_TYPE=0)、Poly Proxy(SIG_TYPE=1)、Poly Polymorphic(SIG_TYPE=2)。
- 使用架构组件:index.ts 中的 TradeMonitor 负责 REST 轮询目标交易;WebSocketMonitor 负责可选低延迟 WS 订阅;TradeExecutor 负责计算大小、检查余额/allowance、提交 CLOB 订单;PositionTracker 负责内存仓位;RiskManager 负责 session 与 per-market notional 限制。
适用边界 · 注意事项
- 没有 Polymarket 账户、Polygon mainnet 上的 USDC.e 与 POL gas,或无法提供钱包私钥和 RPC_URL 时。
- 只想镜像 SELL 交易或需要默认支持 SELL 时,因为 bot 只镜像 BUY,检测到 SELL 会跳过。
- 不愿意依赖 Polymarket CLOB API、Polygon、第三方 RPC 或特定认证模式时。