direkturcrypto 7c7fad45f3 feat: initial polymarket copy trade tool
- Watcher: polls Data API for trader activity
- Executor: buy/sell with market orders + retry logic
- Position manager: JSON-based state tracking
- Auto-sell: limit orders at profit target
- Redeemer: check & redeem winning positions on-chain
- Config: env-based settings with validation
- DRY_RUN mode for safe testing
2026-02-22 15:38:13 +07:00

🎯 Polymarket Copy Trade Tool

Auto-copy trades dari trader manapun di Polymarket.

Features

  • 👀 Watch Trader — Monitor aktivitas trading dari address wallet tertentu
  • 📊 Copy Buy — Otomatis buy ketika trader buy, dengan sizing yang bisa di-setting
  • 📉 Copy Sell — Otomatis sell ketika trader sell (market / limit)
  • 💰 Auto Sell — Pasang limit sell otomatis setelah buy filled (sesuai target profit %)
  • 🏆 Auto Redeem — Cek dan redeem posisi yang sudah WIN secara berkala
  • 🔄 Smart Position — 1 market hanya buy 1x, tidak duplikat
  • Balance Check — Cek saldo sebelum trade
  • 🧪 Dry Run Mode — Test tanpa eksekusi trade sungguhan

Setup

1. Clone & Install

git clone <repo-url>
cd polymarket-copy
npm install

2. Configure Environment

cp .env.example .env

Edit .env dengan setting Anda:

Variable Description Default
PRIVATE_KEY Private key wallet Polygon (required)
WALLET_ADDRESS Address wallet Anda (required)
TRADER_ADDRESS Address trader yang mau di-copy (required)
SIZE_MODE percentage (dari size trader) atau balance (dari balance sendiri) percentage
SIZE_PERCENT Persentase sizing 50
MIN_TRADE_SIZE Minimum trade dalam USDC 1
AUTO_SELL_ENABLED Aktifkan auto-sell true
AUTO_SELL_PROFIT_PERCENT Target profit % untuk auto-sell 10
SELL_MODE market atau limit saat copy sell market
POLL_INTERVAL Interval polling (detik) 15
REDEEM_INTERVAL Interval cek redeem (detik) 60
DRY_RUN Mode simulasi tanpa real trade true

3. Run

# Development (auto-reload)
npm run dev

# Production
npm start

How It Works

┌─────────────────────────────────────────────┐
│              WATCHER LOOP                   │
│  Poll Data API setiap N detik               │
│  → Cek trade baru dari trader               │
├─────────────────┬───────────────────────────┤
│     NEW BUY     │       NEW SELL            │
│                 │                           │
│  ✓ Cek posisi   │  ✓ Cek ada posisi?        │
│  ✓ Cek balance  │  ✓ Cancel auto-sell       │
│  ✓ Market order │  ✓ Market/Limit sell      │
│  ✓ Retry loop   │  ✓ Retry loop             │
│  ✓ Auto-sell    │  ✓ Remove position        │
│  ✓ Save posisi  │                           │
├─────────────────┴───────────────────────────┤
│             REDEEMER LOOP                   │
│  Cek berkala posisi yang sudah WIN          │
│  → Redeem on-chain via CTF contract         │
└─────────────────────────────────────────────┘

Folder Structure

polymarket-copy/
├── src/
│   ├── config/index.js    — Environment vars & settings
│   ├── services/
│   │   ├── client.js      — CLOB client init & balance check
│   │   ├── watcher.js     — Poll trader activity
│   │   ├── executor.js    — Buy & sell logic
│   │   ├── position.js    — Position management
│   │   ├── autoSell.js    — Auto limit sell
│   │   └── redeemer.js    — Redeem winning positions
│   ├── utils/
│   │   ├── logger.js      — Color-coded logging
│   │   └── state.js       — JSON state management
│   └── index.js           — Main entry point
├── data/                  — Runtime state (gitignored)
├── .env.example
├── .gitignore
└── package.json

Important Notes

  • ⚠️ Test dengan DRY_RUN=true terlebih dahulu
  • ⚠️ Gunakan SIZE_PERCENT kecil untuk percobaan awal
  • ⚠️ Private key jangan di-commit — sudah ada di .gitignore
  • Butuh USDC.e di Polygon untuk trading
  • Butuh sedikit MATIC untuk gas fee (redeem positions)
S
Description
Copy, Scalping & Sniper for polymarket
Readme 5.1 MiB
Languages
JavaScript 100%