01 Khám phá thị trường
Xem xét các thị trường công khai đang hoạt động, kết quả, condition ID và token ID của CLOB.
Điểm khởi đầu
Bạn đang ở trong workshop_public/polymarket, .env.polymarket đã được source, và
bước preflight đã sẵn sàng.
Tại sao
Polymarket dùng một condition ID cho mỗi thị trường và một token ID riêng cho từng kết quả. WebSocket đăng ký theo token ID; API trades công khai lọc theo condition ID.
Bước 1 — Hỏi Gamma về năm thị trường đang hoạt động sôi động nhất
curl --fail --silent --show-error --get \
'https://gamma-api.polymarket.com/markets' \
--data-urlencode 'active=true' \
--data-urlencode 'closed=false' \
--data-urlencode 'limit=20' \
--data-urlencode 'order=volume24hr' \
--data-urlencode 'ascending=false' \
| python3 -c '
import json, sys
selected = 0
for market in json.load(sys.stdin):
if not market.get("acceptingOrders"):
continue
outcomes = json.loads(market["outcomes"])
tokens = json.loads(market["clobTokenIds"])
print(market["question"])
print(" condition:", market["conditionId"])
for outcome, token in zip(outcomes, tokens):
print(f" {outcome}: {token}")
selected += 1
if selected == 5:
break
'Mong đợi: năm câu hỏi. Mỗi câu in ra một condition hash dài 66 ký tự và một token ID cho mỗi kết quả. Các câu hỏi cụ thể thay đổi theo thị trường trực tiếp.
Bước 2 — Xác nhận các giao dịch công khai cho một condition
Sao chép một condition ID từ kết quả đầu ra:
export POLYMARKET_CONDITION_ID='0x...'
curl --fail --silent --show-error --get \
'https://data-api.polymarket.com/trades' \
--data-urlencode "market=$POLYMARKET_CONDITION_ID" \
--data-urlencode 'limit=3' \
| python3 -c '
import json, sys
for trade in json.load(sys.stdin):
print(trade["outcome"], trade["side"], trade["size"], "@", trade["price"])
'Phản hồi rỗng là hợp lệ với một thị trường ít giao dịch. Hãy chọn condition khác nếu bạn muốn thấy ngay các dòng giao dịch. Không dùng xác thực nào cả.
Bước 3 — Hiểu cách collector chọn thị trường
Collector lặp lại Bước 1 khi khởi động, chọn năm thị trường, phân tích các mảng
outcome/token được mã hóa JSON, và lưu cả hai dòng kết quả vào polymarket.markets. Bạn không
hard-code token ID của ngày hôm nay vào .env.polymarket.
Hoàn thành khi
- bạn có thể xác định condition ID và cả hai token ID kết quả của một thị trường; và
- câu lệnh giao dịch công khai trả về JSON, dù mảng có thể rỗng.
Tiếp theo: tạo mô hình dữ liệu ClickHouse.