# ๐ŸŽฏ 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 ```bash git clone cd polymarket-copy npm install ``` ### 2. Configure Environment ```bash 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 ```bash # 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)