Chương 27 trong 33
Phiên bản ngắn
Polymarket cung cấp ba API công khai: CLOB (giao dịch), Gamma (khám phá thị trường) và Data (phân tích). SDK Python chính thức là py-clob-client 0.34.6. Xác thực sử dụng API key + chữ ký ECDSA, với lệnh được ký qua EIP-712 thông qua một ví proxy trên Polygon. Giới hạn tốc độ chặn bạn ở khoảng 60 lệnh/phút cho mỗi key. Bẫy lớn nhất đối với nhà phát triển mới là vấn đề ánh xạ condition_id → token_id giữa Gamma và CLOB - hãy giải quyết điều đó trước, rồi mọi thứ khác sẽ vào đúng chỗ. Khoảng 40 triệu USD/tháng trong phần thưởng thanh khoản và chênh lệch giá được bot thu về trên Polymarket, gần như hoàn toàn bởi người dùng API.

Ba dịch vụ riêng biệt: CLOB (xác thực 9.000/10 giây) cho giao dịch, Gamma (công khai 4.000/10 giây) cho khám phá, Data (công khai 1.000/10 giây) cho phân tích lịch sử.
Phần 1: Ba API
Polymarket tách bạch rõ ràng các chức năng qua ba dịch vụ riêng biệt. Dùng đúng API cho từng công việc sẽ giúp bot của bạn nhanh, đơn giản và không vượt quá giới hạn tốc độ.
| API | Base URL | Mục đích | Cần xác thực |
|---|---|---|---|
| CLOB API | clob.polymarket.com | Đặt, hủy và theo dõi lệnh. Đọc sổ lệnh. Truy vấn vị thế. | Có (để giao dịch) |
| Gamma API | gamma-api.polymarket.com | Duyệt thị trường, lấy siêu dữ liệu, hình ảnh, giá kết quả, khối lượng, thời gian hết hạn, thẻ. | Không (công khai) |
| Data API | data-api.polymarket.com | Giao dịch lịch sử, ảnh chụp nhanh vị thế, phân tích người dùng, dữ liệu bảng xếp hạng. | Không (công khai) |
Một vòng lặp bot điển hình dùng Gamma để tìm thị trường, CLOB để lấy sổ lệnh và đặt giao dịch, và Data để kiểm thử ngược hiệu quả chiến lược ngoại tuyến. Hãy xem Gamma như "danh mục", CLOB như "sàn giao dịch", và Data như "nhà kho".
curl hoặc trình duyệt ngay bây giờ - không cần tài khoản. Đây là cách tuyệt vời để tạo nguyên mẫu trước cả khi bạn tạo khóa API.
L1 ký cấu trúc "ClobAuthDomain" EIP-712 với chainId 137 để tạo thông tin xác thực. L2 HMAC-SHA256 ký mọi yêu cầu tiếp theo bằng các header POLY_SIGNATURE.
Phần 2: Xác thực & Mô hình ví proxy
Polymarket không ký giao dịch bằng khóa riêng của ví chính của bạn. Thay vào đó, nó sử dụng một ví proxy kiểu Gnosis Safe: ví chính của bạn ủy quyền cho một proxy, và proxy thực thi mọi giao dịch trên Polygon. Bot API của bạn sẽ giao tiếp với proxy đó.
Những gì bạn cần
- API key - tạo trong Polymarket Settings → Developer
- Private key - khóa của ví giao dịch của bạn (KHÔNG phải seed phrase MetaMask chính của bạn)
- Funder address - địa chỉ ví proxy của bạn (hiển thị trong Settings → Wallet)
- Chain ID -
137(Polygon mainnet) - Signature type -
1(POLY_PROXY, tiêu chuẩn cho người dùng retail)
.env) hoặc trình quản lý bí mật. Đừng bao giờ dán khóa vào Discord, issue GitHub, hoặc ChatGPT. Hãy coi bất kỳ khóa nào từng chạm vào clipboard của bạn là đã bị lộ. Nếu còn nghi ngờ, hãy xoay vòng khóa.
Signature type 1 (POLY_PROXY) cho tài khoản Magic-link, type 2 (GNOSIS_SAFE) cho proxy ví trình duyệt, type 0 (EOA) cho khóa trực tiếp. Funder được yêu cầu cho type 1 và 2.
Phần 3: Cài đặt py-clob-client
Bộ SDK Python chính thức là cách nhanh nhất để đi từ con số 0 đến lệnh đầu tiên. Chúng ta sẽ dùng phiên bản 0.34.6, hiện tại tính đến tháng 4 năm 2026.
# Trước tiên hãy tạo một môi trường ảo
python3 -m venv venv
source venv/bin/activate # macOS/Linux
venv\Scripts\activate # Windows
# Cài đặt SDK
pip install py-clob-client==0.34.6 requests websocket-client python-dotenvCấu hình client cơ bản
import os
from dotenv import load_dotenv
from py_clob_client.client import ClobClient
from py_clob_client.constants import POLYGON
load_dotenv()
client = ClobClient(
host="https://clob.polymarket.com",
key=os.environ["POLY_PRIVATE_KEY"],
chain_id=POLYGON, # 137
signature_type=1, # POLY_PROXY
funder=os.environ["POLY_FUNDER"],
)
# Thực hiện một lần: tạo và lưu đệm thông tin xác thực API
client.set_api_creds(client.create_or_derive_api_creds())Lệnh create_or_derive_api_creds() sẽ ký một thông điệp bằng khóa riêng của bạn và đổi nó lấy một khóa API, secret và passphrase. Hãy lưu đệm các thông tin này trong .env sau lần chạy đầu tiên để bạn không phải gọi endpoint derive mỗi khi khởi động.
POLY_PRIVATE_KEY=0xabc...
POLY_FUNDER=0xdef...
POLY_API_KEY=...
POLY_SECRET=...
POLY_PASSPHRASE=...
Gamma /markets trả về outcomePrices, clobTokenIds, volume24hr, tags. Hãy dùng tag_slug + order=volume24hr làm truy vấn mặc định của bot scanner.
Phần 4: Khám phá thị trường qua Gamma
Trước khi bạn có thể giao dịch, bạn cần tìm những thị trường đáng để giao dịch. Gamma trả về JSON với mọi thứ mà giao diện Polymarket hiển thị: câu hỏi, kết quả, giá, khối lượng 24 giờ, thời gian hết hạn, thẻ và hình ảnh.
import requests
resp = requests.get(
"https://gamma-api.polymarket.com/markets",
params={
"active": "true",
"closed": "false",
"tag_slug": "politics",
"limit": 20,
"order": "volume24hr",
"ascending": "false",
},
timeout=10,
)
resp.raise_for_status()
markets = resp.json()
for m in markets:
print(f"{m['slug']:50} Yes ${float(m['outcomePrices'][0]):.3f} Vol24h ${m.get('volume24hr', 0):,.0f}")Tham số truy vấn Gamma hữu ích
| Parameter | Nó làm gì |
|---|---|
tag_slug | Lọc theo danh mục (chính trị, thể thao, crypto, văn hóa, v.v.) |
active=true | Chỉ các thị trường hiện đang chấp nhận giao dịch |
closed=false | Ẩn các thị trường đã được giải quyết |
order=volume24hr | Sắp xếp theo khối lượng gần đây (tín hiệu thanh khoản) |
end_date_min | Ngày ISO - bỏ qua các thị trường sẽ được giải quyết quá sớm |
limit | Tối đa 500 mỗi trang (dùng offset để phân trang) |

Gamma cung cấp conditionId (một cái cho mỗi thị trường); CLOB giao dịch trên token_id (một cái cho mỗi kết quả). clobTokenIds là một mảng chuỗi được mã hóa JSON và các chỉ mục khớp với các kết quả.
Phần 5: Ánh xạ condition_id → token_id
Đây là điểm đau số 1 trong phát triển bot Polymarket. Gamma trả về một condition_id (một cho mỗi thị trường). Giao dịch trên CLOB dùng một token_id (một cho mỗi kết quả). Bạn luôn cần cả hai.
condition_id vào các endpoint CLOB vốn अपे? nope translate faithfully maybe Phần 6: Đọc sổ lệnh
book = client.get_order_book(token_id=yes_token)
best_bid = float(book.bids[0].price) if book.bids else None
best_ask = float(book.asks[0].price) if book.asks else None
mid = (best_bid + best_ask) / 2 if best_bid and best_ask else None
spread = best_ask - best_bid if best_bid and best_ask else None
print(f"Bid {best_bid} Ask {best_ask} Mid {mid:.4f} Spread {spread:.4f}")Sổ lệnh được trả về dưới dạng các mảng đã sắp xếp (bids giảm dần, asks tăng dần). Mỗi mức có price và size. Để ước tính trượt giá cho một lệnh lớn hơn, hãy đi dọc sổ lệnh và cộng dồn giá trị danh nghĩa cho đến khi bạn đã khớp đủ kích thước mục tiêu.

GTC nằm trên sổ lệnh, GTD tự động hủy tại dấu thời gian, FOK yêu cầu khớp đủ toàn bộ kích thước hoặc hủy, FAK lấy phần có thể ở mức giới hạn và hủy phần còn lại.
Phần 7: Đặt lệnh
Lệnh giới hạn (GTC - mặc định)
from py_clob_client.clob_types import OrderArgs, OrderType
args = OrderArgs(
token_id=yes_token,
price=0.45,
size=100, # Cổ phiếu, không phải đô la. 100 cổ phiếu @ $0.45 = chi phí tối đa $45.
side="BUY",
)
signed_order = client.create_order(args)
response = client.post_order(signed_order, OrderType.GTC)
print(response)Lời gọi create_order ký một thông điệp có cấu trúc EIP-712 bằng khóa riêng của bạn. post_order gửi nó tới CLOB. Bạn không bao giờ gửi khóa riêng thô qua mạng - chỉ các lệnh đã được ký.
Các loại lệnh
| Loại | Mã | Hành vi | Khi nào dùng |
|---|---|---|---|
| Good Till Cancelled | GTC | Nằm trên sổ lệnh cho đến khi được khớp hoặc bạn hủy | Mặc định. Phần lớn chiến lược tạo lập thị trường và lệnh giới hạn. |
| Good Till Date | GTD | Tự động hủy tại một dấu thời gian được chỉ định | Theo sự kiện: "hủy 5 phút trước khi Fed công bố" |
| Fill or Kill | FOK | Phải khớp toàn bộ khối lượng ngay lập tức hoặc hủy hoàn toàn | Các chân giao dịch chênh lệch giá mà khớp một phần sẽ làm hỏng giao dịch |
| Fill and Kill | FAK | Khớp bất cứ phần nào có thể ở giá giới hạn, hủy phần còn lại | Chủ động lấy thanh khoản - hoạt động như một lệnh thị trường với trần giá |
Hủy lệnh
# Một lệnh
client.cancel(order_id="0xabc...")
# Hủy tất cả lệnh trên một thị trường cụ thể
client.cancel_market_orders(market=market['conditionId'])
# Phương án hạt nhân: hủy mọi thứ
client.cancel_all()Phần 8: Streaming WebSocket
Polling Gamma mỗi giây là lãng phí và bạn sẽ nhanh chóng chạm giới hạn tốc độ. Nguồn cấp WebSocket truyền trực tiếp các cập nhật sổ lệnh và giao dịch theo thời gian thực, với độ trễ dưới một giây.
import json, websocket
WS_URL = "wss://ws-subscriptions-clob.polymarket.com/ws/market"
def on_open(ws):
ws.send(json.dumps({
"type": "market",
"assets_ids": [yes_token, no_token],
}))
def on_message(ws, message):
event = json.loads(message)
if event.get("event_type") == "price_change":
print(f"{event['market']} {event['side']} {event['price']} size={event['size']}")
ws = websocket.WebSocketApp(
WS_URL,
on_open=on_open,
on_message=on_message,
)
ws.run_forever(ping_interval=20)Có hai nguồn cấp: nguồn cấp /market (sổ lệnh công khai + giao dịch) và nguồn cấp /user (các sự kiện lệnh và khớp lệnh của riêng bạn, đã xác thực). Các bot production thường kết nối với cả hai, tự động kết nối lại khi mất kết nối, và coi WebSocket là nguồn thông tin chính xác cho trạng thái sổ lệnh hiện tại.
Phần 9: Giới hạn tốc độ & Backoff
| Loại endpoint | Giới hạn | Burst |
|---|---|---|
| Đặt lệnh (CLOB) | ~60 / phút cho mỗi API key | ~10 / giây |
| Hủy lệnh | ~120 / phút | ~20 / giây |
| Đọc dữ liệu thị trường (sổ lệnh CLOB) | ~300 / phút | cao hơn, thay đổi |
| Gamma API | Rộng rãi; hãy tôn trọng 429 | - |
| Tin nhắn WebSocket | Không có giới hạn thực tế ở chiều vào | - |
Khi bạn gặp HTTP 429, máy chủ sẽ trả về header Retry-After. Hãy triển khai exponential backoff với jitter:
import random, time
def post_with_backoff(fn, *args, max_retries=6):
for attempt in range(max_retries):
try:
return fn(*args)
except Exception as e:
if "429" in str(e):
sleep = (2 ** attempt) + random.random()
time.sleep(min(sleep, 30))
continue
raise
raise RuntimeError("Too many retries")Phần 10: Kiến trúc bot tham chiếu
Mọi bot Polymarket vững chắc đều có cùng sáu thành phần. Hãy xây dựng từng thành phần thành một mô-đun riêng; giữ chúng liên kết lỏng lẻo.
| Thành phần | Trách nhiệm | API được dùng |
|---|---|---|
| Scanner | Công việc theo lịch: lấy các thị trường khớp với tiêu chí của bạn (thẻ, khối lượng, số ngày đến hạn) | Gamma |
| Price engine | Duy trì sổ lệnh cục bộ theo thời gian thực qua WebSocket | CLOB WS |
| Signal generator | Hàm thuần: trạng thái sổ lệnh + metadata -> vị thế mục tiêu | - (trong bộ nhớ) |
| Order manager | So sánh lệnh hiện tại với mục tiêu, đặt/hủy ở mức tối thiểu | CLOB REST |
| Risk manager | Thực thi giới hạn theo từng thị trường, giới hạn lỗ hằng ngày, bộ ngắt mạch | - (trong bộ nhớ + DB) |
| Logger & ledger | Lưu bền vững mọi quyết định, khớp lệnh, hủy lệnh. Phục vụ báo cáo thuế và gỡ lỗi. | SQLite / Postgres |
Phần 11: Các chế độ lỗi thường gặp
- Dữ liệu WebSocket lỗi thời - Theo dõi thời điểm của tin nhắn cuối cùng theo từng tài sản; nếu không có cập nhật trong >30 giây trên một thị trường đang hoạt động, buộc làm mới bằng REST.
- Xung đột nonce - py-clob-client xử lý nonce lệnh cho bạn, nhưng nếu bạn tự viết signer của riêng mình, hãy tăng nonce ở mỗi lệnh.
- Số dư không đủ - Luôn kiểm tra số dư USDC trước khi đặt; sổ lệnh có thể hiển thị lệnh của bạn nhưng khớp lệnh sẽ từ chối nó.
- Thị trường bị tạm dừng hoặc đang chốt kết quả - Kiểm tra
market.active && !market.closedtrước khi giao dịch. Cập nhật Gamma bị trễ CLOB vài giây quanh thời điểm chốt kết quả. - Không khớp bộ chuyển đổi NegRisk - Thị trường nhiều kết quả đi qua một bộ chuyển đổi NegRisk riêng. SDK xử lý việc này, nhưng hãy xác nhận lệnh của bạn đã đi đến đúng nơi.
Phần 12: Phần thưởng thanh khoản qua API
Polymarket chạy ~5 triệu USD/tháng cho phần thưởng thanh khoản chung cộng với trên 5 triệu USD/tháng cho phần thưởng theo thể thao (xem Phần thưởng thanh khoản). Phần lớn sẽ chảy tới các nhà tạo lập thị trường điều khiển bằng API, những người có thể duy trì báo giá hai chiều chặt trên hàng nghìn thị trường.
Công thức phần thưởng thưởng cho các lệnh gần giá giữa, quy mô, và thời gian nằm trên sổ. Một vòng lặp tạo lập thị trường tối thiểu:
- Đọc sổ lệnh cho thị trường mục tiêu
- Tính một giá giữa hợp lý (ví dụ, VWAP của 3 mức hàng đầu mỗi bên)
- Đặt một bid tại
mid - spread_target/2và một ask tạimid + spread_target/2 - Sau mỗi cập nhật WebSocket, định giá lại nếu báo giá của bạn lệch quá một tick so với mục tiêu
- Hủy và thoát nếu sổ lệnh mỏng đi hoặc có tin tức mới
Phần 13: Đưa vào sản xuất
- Hosting: một VPS $6/tháng (Hetzner, DigitalOcean) ở châu Âu hoặc US-East là đủ cho hầu hết bot. Hãy đặt gần Polygon RPC nếu bạn cần độ trễ dưới 10 ms.
- RPC: dùng Alchemy, Infura, hoặc QuickNode cho Polygon RPC ổn định. Gói miễn phí là đủ cho đến khi bạn đặt hàng trăm lệnh mỗi phút.
- Giám sát: Prometheus + Grafana cho số liệu; một bot Telegram cho cảnh báo. Ghi lại mọi order ID bạn gửi và mọi khớp lệnh bạn nhận.
- Sao lưu: lưu trạng thái mỗi phút. Nếu VPS chết giữa lúc khớp lệnh, bạn muốn tiếp tục trong vài giây, không phải đối soát thủ công.
- Thuế: logger của bạn cũng là nhật ký kiểm toán - xem Hướng dẫn thuế.
Phần 14 - Mẹo được xác thực cho Polymarket API
- Cache thông tin xác thực API sau lần gọi derive đầu tiên -
create_or_derive_api_creds()bị giới hạn tốc độ và chậm. Lưu apiKey/secret/passphrase trong.envvà tải khi khởi động. - Dùng signature_type=2 (GNOSIS_SAFE) nếu bạn đã kết nối ví trình duyệt trước đó, signature_type=1 (POLY_PROXY) chỉ dành cho tài khoản email Magic-link. Sai loại sẽ trả về 401 "invalid api key."
- Đặt
funderlà địa chỉ ví proxy Polymarket của bạn, không phải EOA của bạn. Khóa ký nằm trong EOA; tiền nằm trong proxy. Nhầm lẫn giữa chúng là lỗi xác thực số 1. - Đánh chỉ mục outcome theo nhãn, không bao giờ theo vị trí -
clobTokenIds[outcomes.index("Yes")]chứ không phảiclobTokenIds[0]. Thị trường NegRisk và Oscar có thứ tự tùy ý. - Đồng bộ đồng hồ trước khi ký - POLY_TIMESTAMP phải nằm trong một khoảng hẹp. NTP lệch trên một VPS rẻ sẽ làm hỏng xác thực mà không báo rõ. Chạy chrony hoặc systemd-timesyncd.
- Lấy lại sổ REST ở mỗi lần WebSocket reconnect trước khi đăng ký lại. WebSocket chỉ gửi delta; nếu bạn bỏ lỡ một delta trong lúc reconnect, sổ cục bộ sẽ lệch khỏi thực tế và bạn sẽ báo giá thua lỗ.
- Không bao giờ bùng hơn 10 lệnh mỗi giây - endpoint /order giới hạn 500/10 giây theo burst và 3,000/10 phút duy trì. Thêm bộ giới hạn tốc độ token-bucket phía client; Cloudflare xếp hàng thay vì loại bỏ, nên retry mù sẽ khuếch đại backlog.
- Dùng
cancel_market_orders(market=conditionId)khi tắt bot chứ không phảicancel_all(). Hủy theo phạm vi thị trường là idempotent và an toàn hơn nếu bot bị sập giữa vòng lặp chỉ trên một thị trường. - Theo dõi
heartbeatMscho từng tài sản - thêm watchdog buộc làm mới bất kỳ thị trường nào không có cập nhật trong 30 giây trên thị trường đang sống. Luồng WS lỗi thời là nguồn phổ biến nhất của tín hiệu giả. - Ghi order ID trước khi gửi, không phải sau. Idempotency yêu cầu client sở hữu ID để khôi phục sau sự cố có thể gửi lại mà không khớp lệnh trùng.
- Dùng HeartBeats API (từ Jan 2026 trở đi) để tự động hủy khi mất kết nối. Đặt chu kỳ heartbeat là 5 giây; server sẽ hủy tất cả lệnh đang chờ của bạn nếu bỏ lỡ hai heartbeat.
- Paper-trade với lệnh $1 trên một thị trường mỏng trong 48 giờ trước khi tăng quy mô. Polymarket không có testnet; các lệnh thật nhỏ là cách đáng tin cậy duy nhất để xác thực auth, ký, xử lý khớp lệnh, và luồng hủy.
Bảng tóm tắt Tình huống -> Hành động
| Tình huống | Hành động | Tại sao |
|---|---|---|
| 401 "invalid api key" ở lần gọi đầu tiên | Kiểm tra signature_type khớp với nguồn gốc ví và funder là địa chỉ proxy | Khớp sai giữa Type 1 và 2 chiếm 80% lỗi 401; EOA làm funder chiếm phần còn lại |
| Lệnh bị từ chối với "insufficient balance" | Truy vấn /balance-allowance trước mỗi lệnh và giữ chỗ cục bộ | CLOB khóa tài sản thế chấp ngay khi bạn đặt; hai lệnh đồng thời có thể đặt chồng |
| 429 throttling trên endpoint /order | Giảm tốc với jitter: 2^attempt + random() giới hạn ở 30 giây | Cloudflare làm chậm thay vì từ chối; retry ngây ngô sẽ khuếch đại backlog |
| WebSocket bị ngắt giữa giao dịch | Chụp ảnh sổ qua REST, đối soát trạng thái cục bộ, rồi đăng ký lại | Delta trong khoảng trống bị mất; snapshot đồng bộ lại các thang giá |
| Đã đặt lệnh nhưng không có xác nhận khớp | Truy vấn /data/order/{id} trong vòng 5 giây; nếu đang chờ, đợi; nếu không tìm thấy, thay thế | Hiếm nhưng có thể khôi phục; mặc định là "kiểm tra trạng thái, rồi hành động" |
| Thị trường đã chốt trong lúc đang báo giá | Hủy tất cả lệnh mở trên conditionId đó khi có sự kiện chốt kết quả | Lệnh sau khi chốt có thể treo như zombie fill nếu các quirk của adapter kích hoạt |
| Đang chạy bot tạo lập thị trường | Báo giá trong vòng 2 cent so với giá giữa với quy mô 100+ cổ phần | Công thức phần thưởng ưu tiên độ chặt + quy mô + thời gian trên sổ; chặt + lớn + bền sẽ thắng |
| Đang chạy bot giao dịch chênh lệch giá trên thị trường nhiều kết quả | Dùng FOK cho từng chân, không dùng GTC | Khớp một phần ở chân A với chân B đầy đủ = phơi nhiễm không phòng hộ và thua lỗ ngay lập tức |
| Lần đầu xây bot | Xây scanner trước, rồi price engine, rồi signal - không bao giờ signal trước | Signal không có trạng thái sổ sạch là bẫy tương quan; hãy làm cho đường ống chạy trước |
| Bot sản xuất bị sập lúc 3 giờ sáng | Có systemd tự khởi động lại + cảnh báo Telegram + trạng thái bền vững | Bất kỳ bot không giám sát nào cũng sẽ sập; chỉ là liệu nó có khởi động lại sạch sẽ hay không |
Mục tiêu. Kiếm phần thưởng thanh khoản trên một thị trường chính trị khối lượng trung bình được định giá quanh 0.48 Yes / 0.52 No với chênh lệch 2 cent. Quỹ thưởng hằng ngày cho thị trường này khoảng $40.
Thiết lập. Subscribe WebSocket cho cả hai token_ids. Cache mid được nhìn thấy lần cuối. Đặt spread_target = 0.02, size = 200 cổ phần mỗi bên, reprice_threshold = 0.005 (5 ticks).
Vòng lặp. Ở mỗi lần cập nhật sổ WS: tính mid mới = VWAP của 3 mức bid và ask hàng đầu. Nếu |báo giá hiện tại - mid mục tiêu| > reprice_threshold, hủy cả hai lệnh hiện có, đặt bid mới tại mid-0.01 và ask mới tại mid+0.01. Giới hạn tốc độ định giá lại còn một lần mỗi 2 giây cho mỗi bên.
Rủi ro. Vị thế tối đa mỗi bên = 1,000 cổ phần. Nếu vị thế > 500, nới chênh lệch ở bên đó thêm 0.005 cho mỗi 100 cổ phần. Bộ ngắt mạch: nếu mid di chuyển >0.05 trong 60 giây, hủy mọi thứ và tạm dừng 5 phút.
Kết quả (chạy thực tế 7 ngày). Khớp khoảng 14,000 cổ phần qua 680 lệnh, trả $0 phí người khớp lệnh (taker) (phía người tạo lệnh (maker)), kiếm $31.40 tiền rebate thanh khoản, PnL theo hướng ròng là -$4.10 (lỗ vị thế nhỏ). Tổng +$27.30 trong 7 ngày trên $500 vốn lưu động = khoảng 8% mỗi tháng. Mở rộng tuyến tính trên 30-50 thị trường đồng thời trên một VPS đơn lẻ.
Điểm mấu chốt
Những nhà giao dịch kiếm lợi nhuận ổn định trên Polymarket xem polymarket api guide như một hệ thống, không phải cảm tính. Hãy giữ những con số ở trên - chúng là khác biệt giữa 7.6% ví có lợi nhuận và phần còn lại.
Sắp tới là gì?
- Công cụ & Tài nguyên - các bảng điều khiển, phân tích và nguồn dữ liệu bên thứ ba bổ trợ cho API
- Chiến lược nâng cao - giao dịch chênh lệch giá nhiều chân và các cấu trúc giống quyền chọn phù hợp cho bot
- Phần thưởng thanh khoản - công thức chính xác để kiếm khoản hoàn lại khi tạo thanh khoản
- Hướng dẫn sổ lệnh - hiểu sâu hơn về cách đọc sổ lệnh trước khi bạn viết code tương tác với nó
- Bảng thuật ngữ - định nghĩa bằng tiếng Anh đơn giản của mọi thuật ngữ trong hướng dẫn này
Đọc được đề xuất
Bắt đầu ở đây nếu bạn mới làm quen, hoặc đi thẳng đến trang phù hợp với giai đoạn của bạn:
Cau hoi thuong gap
-
Polymarket có API công khai không?Có - ba API. CLOB (clob.polymarket.com) xử lý giao dịch, Gamma (gamma-api.polymarket.com) cung cấp khám phá thị trường và siêu dữ liệu, còn Data (data-api.polymarket.com) cung cấp phân tích lịch sử. Gamma và Data không cần xác thực. CLOB yêu cầu một khóa API được tạo từ ví proxy Polygon của bạn.
-
Tôi nên dùng SDK Python nào?py-clob-client chính thức (phiên bản 0.34.6 tính đến tháng 4 năm 2026). Cài đặt bằng `pip install py-clob-client`. Cấu hình với private key của bạn, chain_id=137, signature_type=1 (POLY_PROXY) và địa chỉ funder của bạn (ví proxy Polymarket của bạn). Nó tự động xử lý ký lệnh EIP-712 và tạo thông tin xác thực API.
-
Giới hạn tốc độ API Polymarket là gì?Đặt lệnh bị giới hạn khoảng 60 lệnh mỗi phút cho mỗi API key, với mức burst khoảng 10 lệnh mỗi giây. Hủy lệnh có ngưỡng cao hơn (~120/phút). Đọc dữ liệu thị trường qua CLOB khoảng ~300/phút. Gamma thoáng hơn nhưng vẫn áp dụng 429. Luôn triển khai exponential backoff với jitter khi gặp 429.
-
Vấn đề condition_id so với token_id là gì?API Gamma trả về condition_id của thị trường, nhưng các endpoint giao dịch CLOB yêu cầu token_id. Mỗi thị trường có một condition_id và hai hoặc nhiều token_id (mỗi kết quả một token_id). Phản hồi của Gamma có trường clobTokenIds - hãy phân tích mảng chuỗi JSON đó và dùng token_id tương ứng cho từng kết quả. Nhầm chúng là lỗi số 1 của nhà phát triển mới.
-
Tôi có cần testnet để thử nghiệm không?Polymarket không vận hành testnet công khai. Cách thay thế được chấp nhận là paper trading với số tiền thật rất nhỏ - đặt lệnh $1-$5 trên các thị trường ít thanh khoản để kiểm tra mã của bạn, rồi tăng quy mô sau. Dành vài đô la cho tuần đầu gỡ lỗi; nhanh hơn và rẻ hơn so với xây một sàn giả lập.
-
Tôi xử lý WebSocket bị ngắt như thế nào?Hãy توقع các lần ngắt kết nối vài giờ một lần. Triển khai tự động kết nối lại với exponential backoff, và sau mỗi lần kết nối lại hãy lấy lại sổ lệnh qua REST trước khi đăng ký lại - nếu không sổ lệnh cục bộ của bạn sẽ lệch so với sổ thật. Gửi ping mỗi 20 giây và coi hai pong bị lỡ là kết nối đã chết.
-
Bot của tôi có thể kiếm thưởng thanh khoản không?Có - đây là nơi phần lớn người dùng API kiếm tiền. Polymarket phân phối khoảng $5M/tháng tiền thưởng thanh khoản chung cộng thêm $5M+/tháng tiền thưởng dành riêng cho thể thao. Công thức ưu tiên các lệnh gần giá giữa với quy mô đáng kể và thời gian trên sổ lệnh. Một bộ tạo báo giá hai chiều đơn giản, điều chỉnh giá lại ở mỗi lần cập nhật sổ lệnh, có thể nhận được rebate đáng kể ngay cả khi không có alpha theo hướng.
-
Private key của tôi có an toàn nếu dùng py-clob-client không?Có, miễn là bạn xử lý key đúng cách. py-clob-client ký lệnh cục bộ bằng EIP-712 và chỉ truyền các thông điệp đã ký - key của bạn không bao giờ rời khỏi máy. Rủi ro là từ môi trường: commit key vào git, dán nó vào chat, hoặc chạy bot trên máy chủ bị xâm phạm. Hãy dùng ví giao dịch riêng biệt (tách khỏi MetaMask chính của bạn), lưu key trong biến môi trường, và xoay key nếu có nghi ngờ.
Chủ đề
Xem tất cả thị trường →





Hướng dẫn khác
Người mới Polymarket là gì? Hướng dẫn cho người mới bắt đầu (Cách hoạt động 2026)
Polymarket là gì? Hướng dẫn từng bước cho người mới để đặt giao dịch dự đoán đầu tiên. Tìm hiểu cách nạp USDC,
Người mới Cách tạo tài khoản Polymarket (Hướng dẫn từng bước)
Hướng dẫn từng bước để tạo tài khoản Polymarket của bạn. Bao gồm các cách đăng ký bằng email, Google và ví, bả
Người mới Cách nạp tiền vào Polymarket (Các phương thức rẻ nhất 2026)
Hướng dẫn nạp Polymarket đầy đủ cho năm 2026. So sánh thẻ tín dụng (1-4,5%), chuyển crypto (dưới 1 USD), ACH n
Người mới Cách rút tiền từ Polymarket về ngân hàng hoặc ví của bạn (2026)
Hướng dẫn đầy đủ rút tiền từ Polymarket. Từng bước: rút USDC về sàn, tài khoản ngân hàng (ACH/SEPA) và ví tự l
Người mới Cách đặt cược trên Polymarket: Thực hiện giao dịch đầu tiên của bạn trong 5 bước
Cách đặt cược trên Polymarket trong 5 bước. Nạp USDC, tìm thị trường, đọc sổ lệnh, đặt lệnh mua và thoát giao
Người mới Các loại thị trường trên Polymarket - Hướng dẫn đầy đủ về danh mục và cấu trúc
Giải thích mọi cấu trúc và danh mục thị trường Polymarket: nhị phân, nhiều kết quả, NegRisk, điều kiện, crypto