Chuyển đến nội dung chính
Hướng dẫn AI

Xây dựng và cấu hình bot sao chép giao dịch Polymarket bằng TypeScript

Tìm hiểu cách cấu hình Polymarket CodeX CopyTrading Bot, theo dõi nhiều ví, chọn quy mô cố định hoặc theo tỷ lệ phần trăm, thử nghiệm lệnh mô phỏng, bật thực thi trực tiếp, áp dụng giới hạn rủi ro và quản lý an toàn trạng thái cục bộ.

Xây dựng và cấu hình bot sao chép giao dịch Polymarket bằng TypeScript

Bot CopyTrading Polymarket CodeX thực hiện những gì

Bot CopyTrading Polymarket CodeX là một ứng dụng TypeScript theo dõi hoạt động từ một hoặc nhiều ví được theo dõi và tạo các lệnh Polymarket tương ứng. Bot đọc hoạt động của ví thông qua Data API công khai và sử dụng @polymarket/clob-client-v2 để giao dịch trực tiếp thông qua sổ lệnh giới hạn trung tâm của Polymarket.

Bot có thể sao chép lệnh mua và bán bằng số tiền USD cố định hoặc quy mô dựa trên tỷ lệ phần trăm. Bot cũng lưu bản ghi cục bộ về các giao dịch đã thấy, lệnh đã tạo, lệnh đã thực hiện hoặc mô phỏng, cùng các vị thế token gần đúng.

Cảnh báo rủi ro: Đây là phần mềm giao dịch. Lợi nhuận không được đảm bảo. Luôn chạy mô phỏng trước, kiểm tra mọi giá trị cấu hình và sử dụng số tiền rất nhỏ trước khi cân nhắc thực hiện giao dịch trực tiếp.

Tính năng chính

  • Theo dõi nhiều ví.
  • Hỗ trợ chế độ sao chép theo số tiền cố định và theo tỷ lệ phần trăm.
  • Cung cấp thực hiện mô phỏng thông qua npm run test.
  • Cung cấp thực hiện giao dịch trực tiếp trên thị trường thông qua npm start.
  • Có thể theo dõi hoạt động bán bằng vị thế được bot theo dõi cục bộ.
  • Áp dụng các giới hạn tối thiểu cho lệnh, tối đa cho lệnh, vị thế và giá trị danh nghĩa hằng ngày.
  • Hỗ trợ hành vi lệnh fill-and-kill và fill-or-kill.
  • Cung cấp tùy chọn bảo vệ giá so với giá khớp của giao dịch được theo dõi.
  • Lưu trạng thái trong một tệp JSON cục bộ.

Yêu cầu

Trước khi cấu hình bot, hãy cài đặt các phần mềm sau:

  • Node.js phiên bản 20.10 hoặc mới hơn.
  • npm.

Lấy mã nguồn dự án, mở terminal trong thư mục dự án và cài đặt các gói phụ thuộc:

npm install

Bot sử dụng gói không beta @polymarket/clob-client-v2 để thực hiện lệnh và Polymarket Data API công khai để thăm dò hoạt động của ví.

Cấu hình thông tin xác thực giao dịch trực tiếp

Tạo hoặc chỉnh sửa tệp .env của dự án. Thêm máy chủ CLOB, ID chuỗi Polygon, loại chữ ký, khóa riêng tư và ví tiền nạp:

POLYMARKET_CLOB_HOST=https://clob.polymarket.com
POLYMARKET_CHAIN_ID=137
POLYMARKET_SIGNATURE_TYPE=POLY_1271
POLYMARKET_PRIVATE_KEY=0x...
POLYMARKET_DEPOSIT_WALLET=0x...

Không bao giờ commit khóa riêng tư hoặc tệp thông tin xác thực thực vào hệ thống quản lý phiên bản. Hãy coi khóa riêng tư và mọi thông tin xác thực CLOB là bí mật.

Chọn đúng loại chữ ký

POLYMARKET_SIGNATURE_TYPE chấp nhận các giá trị sau:

  • EOA
  • POLY_PROXY
  • POLY_GNOSIS_SAFE
  • POLY_1271

Theo tài liệu dự án, POLY_1271 thường phù hợp với người dùng ví tiền nạp mới. Khi giao dịch trực tiếp thông qua tài khoản thuộc sở hữu bên ngoài, hãy chọn EOA; trong trường hợp đó, có thể bỏ qua POLYMARKET_DEPOSIT_WALLET.

Sử dụng thông tin xác thực L2 hiện có

Bot có thể tạo thông tin xác thực trong quá trình khởi động. Để bỏ qua bước đó, hãy cung cấp thông tin xác thực L2 hiện có trong .env:

CLOB_API_KEY=...
CLOB_SECRET=...
CLOB_PASS_PHRASE=...

Thực hiện giao dịch trực tiếp sử dụng createAndPostMarketOrder. Trước khi bắt đầu giao dịch trực tiếp, hãy đảm bảo ví giao dịch đã được nạp tiền và có các phê duyệt Polymarket cần thiết. Bot không triển khai ví hoặc tự động phê duyệt việc chi tiêu token.

Cấu hình quy mô sao chép

Ứng dụng hỗ trợ hai chế độ sao chép. Hãy chọn chế độ phù hợp với mức độ rủi ro bạn muốn bot thực hiện.

Chế độ cố định

Chế độ cố định gán một số tiền USD định trước cho hoạt động mua và bán được sao chép:

COPY_MODE=fixed
FIXED_BUY_AMOUNT_USD=5
FIXED_SELL_AMOUNT_USD=5

Trong ví dụ này, các lệnh mua và bán đủ điều kiện được sao chép sẽ sử dụng giá trị đã cấu hình là năm đô la Mỹ.

Chế độ phần trăm

Chế độ phần trăm tính quy mô lệnh dựa trên hoạt động của ví được theo dõi:

COPY_MODE=percentage
COPY_PERCENTAGE=0.10

Đối với lệnh mua, bot sao chép tỷ lệ phần trăm đã cấu hình trên giá trị danh nghĩa USD của giao dịch được theo dõi. Đối với lệnh bán, bot sao chép tỷ lệ phần trăm đã cấu hình trên số cổ phần mà ví được theo dõi đã bán. Lệnh bán bị giới hạn bởi vị thế hiện đang được theo dõi trong trạng thái cục bộ của bot.

Ví dụ, 0.10 tương ứng với mười phần trăm. Lệnh thực tế vẫn phải vượt qua các biện pháp kiểm soát rủi ro đã cấu hình.

Thiết lập kiểm soát rủi ro

Xác định các giới hạn về lệnh và mức độ rủi ro trong .env trước khi chạy giao dịch mô phỏng hoặc trực tiếp:

MIN_ORDER_USD=1
MAX_ORDER_USD=25
MAX_POSITION_USD_PER_TOKEN=100
DAILY_MAX_NOTIONAL_USD=250
ORDER_TYPE=FAK
PRICE_PROTECTION_BPS=0
  • MIN_ORDER_USD thiết lập giá trị lệnh tối thiểu được phép.
  • MAX_ORDER_USD giới hạn giá trị của một lệnh riêng lẻ.
  • MAX_POSITION_USD_PER_TOKEN giới hạn mức rủi ro gần đúng cho mỗi token.
  • DAILY_MAX_NOTIONAL_USD giới hạn tổng hoạt động theo giá trị danh nghĩa hằng ngày.
  • ORDER_TYPE kiểm soát hành vi khớp lệnh.
  • PRICE_PROTECTION_BPS tùy chọn giới hạn việc thực hiện so với giá khớp của giao dịch được theo dõi.

Hiểu về lệnh FAK và FOK

Với ORDER_TYPE=FAK, lệnh có thể được khớp một phần, sau đó phần chưa khớp sẽ bị hủy. Với ORDER_TYPE=FOK, toàn bộ lệnh phải được khớp; nếu không, lệnh sẽ thất bại.

FAK có thể phù hợp khi chấp nhận khớp lệnh một phần. FOK nghiêm ngặt hơn, nhưng có thể khiến nhiều lệnh thất bại hơn khi không có đủ thanh khoản để khớp toàn bộ.

Áp dụng bảo vệ giá

Khi PRICE_PROTECTION_BPS=0, CLOB client ước tính mức giá bất lợi nhất có thể giao dịch. Khi cấu hình giá trị khác không, bot tính giới hạn giá bất lợi nhất cao hơn giá khớp được theo dõi đối với lệnh mua và thấp hơn giá đó đối với lệnh bán.

Giới hạn bảo vệ giá có thể hạn chế mức biến động giá được chấp nhận, nhưng README không đảm bảo rằng lệnh sẽ được khớp khi bật tùy chọn này.

Chạy mô phỏng trước

Bắt đầu bằng lệnh kiểm thử của dự án:

npm run test

Chế độ này tạo các lệnh mô phỏng thay vì lệnh thị trường thực. Hãy sử dụng chế độ này để xác thực việc theo dõi ví, cách tính khối lượng, các giới hạn rủi ro và cài đặt môi trường mà không ngay lập tức gửi các giao dịch thực.

Trong quá trình kiểm thử, hãy xác minh rằng:

  1. Các ví cần theo dõi đang được giám sát.
  2. Các sự kiện mua và bán được chuẩn hóa chính xác.
  3. Chế độ sao chép đã chọn tạo ra khối lượng như mong đợi.
  4. Lệnh tuân thủ các giới hạn tối thiểu, tối đa, vị thế và trong ngày.
  5. Khối lượng bán không vượt quá vị thế được theo dõi cục bộ.
  6. Trạng thái được ghi tại ./data/state.json.

Bắt đầu giao dịch thực

Sau khi xem xét kết quả mô phỏng, nguồn vốn của ví, các phê duyệt, thông tin xác thực và toàn bộ cài đặt rủi ro, hãy bắt đầu thực thi giao dịch thực bằng:

npm start

Lệnh này bật các lệnh thị trường thực. Hãy bắt đầu với khối lượng rất nhỏ và theo dõi cả đầu ra trong terminal lẫn tài khoản Polymarket. Không nên giả định rằng kết quả mô phỏng sẽ hoàn toàn trùng khớp với khớp lệnh, thanh khoản hoặc biến động giá trên thị trường thực.

Hiểu về trạng thái cục bộ

Bot lưu trạng thái cục bộ tại:

./data/state.json

Tệp này theo dõi các giao dịch đã thấy, các lệnh được mô phỏng hoặc thực thi và các vị thế ước tính. Tệp giúp ngăn hoạt động đã được xử lý trước đó bị coi là hoạt động mới, đồng thời cung cấp cho logic sao chép lệnh bán một góc nhìn cục bộ về các vị thế khả dụng.

Các vị thế chỉ mang tính ước tính vì lệnh thị trường có thể được khớp một phần. Do đó, trạng thái cục bộ có thể khác với số dư thực tế trong tài khoản.

Mẹo vận hành nâng cao

Thêm đối soát vị thế

Để sử dụng trong môi trường production, README khuyến nghị thêm một tác vụ đối soát định kỳ. Tác vụ này nên truy vấn endpoint /positions của Data API cho POLYMARKET_DEPOSIT_WALLET và so sánh các vị thế trả về với trạng thái cục bộ.

Điều này đặc biệt quan trọng sau các lần khớp một phần, lệnh thất bại, giao dịch thủ công, khởi động lại hoặc bất kỳ hoạt động nào được thực hiện bên ngoài bot.

Bảo vệ tệp trạng thái

Hãy sao lưu ./data/state.json trước khi nâng cấp hoặc thay đổi vận hành. Tránh chỉnh sửa tệp khi bot đang chạy. Vì tệp ghi lại hoạt động đã thấy và các vị thế ước tính, việc xóa hoặc làm hỏng tệp có thể ảnh hưởng đến khả năng phát hiện trùng lặp và tính khối lượng bán.

Sử dụng các giới hạn thận trọng

Bắt đầu với các giá trị thấp cho MAX_ORDER_USD, MAX_POSITION_USD_PER_TOKEN và DAILY_MAX_NOTIONAL_USD. Chỉ tăng các giá trị này sau khi quan sát bot trong điều kiện thị trường thực tế. Các giới hạn rủi ro giúp giới hạn mức độ phơi nhiễm, nhưng không loại bỏ rủi ro thực thi, thanh khoản, thị trường hoặc phần mềm.

Xem lại các tệp mã nguồn liên quan

Kho mã phân tách các trách nhiệm về cấu hình, thăm dò, chiến lược, thực thi và trạng thái:

  • src/config.ts xử lý việc phân tích môi trường và các kiểm tra an toàn.
  • src/index.ts chứa vòng lặp thăm dò chính.
  • src/polymarket/dataApi.ts thực hiện các lần đọc Data API công khai.
  • src/watchers/walletWatcher.ts thăm dò hoạt động của nhiều ví.
  • src/polymarket/tradeParser.ts chuẩn hóa các sự kiện hoạt động.
  • src/strategy/copyStrategy.ts triển khai cách tính khối lượng cố định và theo tỷ lệ phần trăm.
  • src/strategy/riskManager.ts thực thi các giới hạn lệnh, trong ngày và vị thế.
  • src/polymarket/orderExecutor.ts xử lý việc thực thi mô phỏng và thực.
  • src/storage/stateStore.ts quản lý trạng thái JSON cục bộ.

Việc xem xét các tệp này rất hữu ích trước khi triển khai giao dịch thực, đặc biệt nếu bạn cần hiểu hành vi thăm dò, các kiểm tra an toàn, việc chuẩn hóa sự kiện hoặc cách tính khối lượng lệnh.

Kết luận

Polymarket CodeX CopyTrading Bot cung cấp quy trình TypeScript để theo dõi nhiều ví và sao chép các lệnh mua, bán đủ điều kiện bằng cách tính khối lượng cố định hoặc theo tỷ lệ phần trăm. Hãy cấu hình thông tin xác thực cẩn thận, áp dụng các giới hạn rủi ro thận trọng, xác thực hoạt động bằng npm run test và đối soát các vị thế cục bộ trước khi sử dụng npm start cho giao dịch thực.