Mafunzo ya Boti ya Polymarket · Sura 7 kati ya 32
Uchunguzi wa kina wa Gamma API ya Polymarket: viunga vya /events na /markets, ugawaji wa kurasa, vitambulisho vya lebo (864 Tennis, 745 NBA, n.k.), kuchuja kwa kiasi cha biashara cha saa 24, vikomo vya kasi, na sampuli za msimbo za Python na Node.
Sura hii inafunika nini
Gamma ni API ya katalogi ya Polymarket - inaorodhesha kila tukio, kila soko, lebo, picha, na tokeo lililosuluhishwa ambazo sehemu ya mbele inaonyesha. CLOB API inafanya biashara; Gamma inaelezea kile kinachoweza kufanyiwa biashara. Hitilafu nyingi za boti katika safu ya ugunduzi zinatokana na kuchanganya zote mbili, au kwa kukosa mkataba wa ugawaji wa kurasa. Sura hii ni marejeleo ya uwandani kwa viunga vikuu vya Gamma na tabia kamili ya vigezo ambayo waletaji wetu wa uzalishaji wanategemea.
- Gamma dhidi ya CLOB: lini kutumia ipi
- Anatomia ya kiunga cha /events
- Anatomia ya kiunga cha /markets
- Lebo na vitambulisho vya lebo (orodha iliyothibitishwa)
- Kuchuja: mpangilio wa active, closed, volume24hr
- Ugawaji wa kurasa na vikomo
- Vikomo vya kasi na uhifadhi wa akiba
- Msimbo: leta masoko yenye kiasi cha juu cha biashara cha saa 24
Gamma dhidi ya CLOB: lini kutumia ipi
Huduma mbili tofauti kwa kazi mbili tofauti.
Gamma (gamma-api.polymarket.com): katalogi. Inaorodhesha matukio, masoko, lebo, maelezo, picha, matokeo yaliyosuluhishwa, kiasi cha biashara cha saa 24, kiasi cha biashara cha jumla, tarehe za mwisho. HTTP ya kusoma-tu. Hakuna uthibitishaji unaohitajika kwa usomaji mwingi. Inasasishwa kwa kuendelea lakini ni ya uthabiti wa hatimaye - soko lililofungwa hivi karibuni linaweza bado kuonyesha closed: false kwa sekunde chache.
CLOB (clob.polymarket.com): biashara + daftari la oda. Inaorodhesha bid/ask bora ya sasa, kina cha daftari cha juu-N, biashara za hivi karibuni. Iliyothibitishwa kwa viunga vya kuandika (kuweka oda, kufuta). Njia za WebSocket za wakati halisi zinapatikana kwa masasisho ya daftari.
Kanuni ya kidole gumba: tumia Gamma kupata cha kufanyia biashara; tumia CLOB kulifanyia biashara. Boti inayosoma bei kutoka Gamma inatumia data iliyopitwa na wakati - sehemu za bei za Gamma zinasasishwa mara chache kuliko daftari la oda la CLOB. Boti inayosoma data ya maelezo ya soko kutoka CLOB inafanya maombi mengi zaidi kuliko yanayohitajika.
Anatomia ya kiunga cha /events
GET /events inarudisha data ya kiwango cha tukio. "Tukio" ni ukurasa wa Polymarket; tukio moja linaweza kuwa na masoko mengi (mfano tukio la 2024 Presidential Election lina soko moja kwa kila mgombea).
Sehemu muhimu:
slug: kitambulisho salama-kwa-URL, thabiti kwa maisha ya tukio.title,description: onyesho la binadamu.endDate(ISO 8601): wakati tukio linafunga.active,closed: boolean; changanya katika hoja na?active=true&closed=falsekwa matukio hai.volume,volume24hr: jumla za USD.tags: safu ya vitu vya lebo (angalia sehemu ya lebo hapa chini).markets: safu ya vitu vya masoko ya watoto (angalia anatomia ya/markets).
Mfumo mmoja wa ugunduzi wa kawaida zaidi: GET /events?active=true&closed=false&order=volume24hr&ascending=false&limit=100. Inarudisha matukio 100 ya juu zaidi kwa kiasi cha biashara yanayoendelea sasa hivi.
Anatomia ya kiunga cha /markets
GET /markets inarudisha data ya kiwango cha soko. Soko ni mkataba mmoja wa Y/N au wa matokeo mengi; unaishi ndani ya tukio.
Sehemu muhimu:
slug: kitambulisho salama-kwa-URL.question: kichwa kinachoonyeshwa kwenye ukurasa wa biashara (mfano "Will Trump be president on January 1, 2027?").outcomes: mfuatano wa JSON wa majina ya matokeo, mfano'["Yes","No"]'. Daima vipengele viwili kwa soko la Ndiyo/Hapana; zaidi kwa NegRisk.outcomePrices: mfuatano wa JSON wa bei za sasa kama desimali, mfano'["0.62","0.38"]'. Pande zote mbili zinajumlika hadi ~1.0 kutoa spredi.clobTokenIds: mfuatano wa JSON wa token IDs za ERC-1155 zilizolinganishwa na matokeo. Hizi ni tokeni unazonunua/kuuza kweli.negRisk: boolean; true kwa masoko ya matokeo mengi ya jumla-hadi-1. Inajali kwa kuweka oda (sura ya 11).
Sehemu za outcomes / outcomePrices / clobTokenIds zinafika kama mifuatano ya JSON, si safu zilizochanganuliwa - zifanyie JSON-decode kabla ya kuzitumia.
Lebo na vitambulisho vya lebo (orodha iliyothibitishwa)
Lebo ni alama za kikundi (Sports, Crypto, Tennis, NBA, n.k.). Vitambulisho vya lebo vya uzalishaji vilivyothibitishwa kwa makundi yanayotumiwa zaidi:
| Lebo | ID | Lebo | ID |
|---|---|---|---|
| Sports | 1 | NBA | 745 |
| Crypto | 21 | NFL | 450 |
| Politics | 2 | Tennis | 864 |
| Bitcoin | 100196 | Esports | 702 |
| Ethereum | 100383 | Soccer | 1059 |
| Election | 3 | EPL | 739 |
| Middle East | 1432 | UCL | 2186 |
Chuja kwa lebo na ?tag_id=745 kwa lebo maalum, au ?tag_slug=nba kutumia slug. Kuchuja kwa slug ni kunakosomeka zaidi katika msimbo lakini polepole kidogo; kuchuja kwa ID ndicho chaguomsingi cha uzalishaji.
Kuchuja: mpangilio wa active, closed, volume24hr
Vipimo vinne vya kuchuja utakavyotumia 95% ya muda.
active=true|false:trueinaondoa masoko ambayo timu ya Polymarket imeficha kutoka kiolesura.closed=true|false:falseinaondoa masoko yaliyosuluhishwa. Mchanganyikoactive=true&closed=falseni kichujio cha masoko hai cha kawaida zaidi.order=volume24hr,order=volume,order=endDate: ufunguo wa kupanga. Muhimu zaidi nivolume24hrkwa kupata masoko yanayoendelea sasa.ascending=true|false: chaguomsingi true kwa endpoints nyingi; karibu daima unatakafalsekwa mipangilio ya kiasi cha biashara.
Tahadhari: kuchuja kwa tag_id kukichanganywa na order=volume24hr na ascending=false mara nyingine kunarudisha ukurasa tupu wakati lebo ina masoko hai machache sana. Daima leta zaidi (omba zaidi ya unavyoonyesha) na uchuje baada ya kupata ili kushughulikia hili.
Ugawaji wa kurasa na vikomo
Kigezo cha limit kinakubali 1-500 kwa mwito. Chaguomsingi ni 100 ikiwa haijabainishwa. Zaidi ya 500 seva inaweka kikomo kimya - unapokea 500 lakini jibu halina dalili ya zaidi.
Ugawaji wa kurasa unategemea offset: ?limit=500&offset=500 kwa ukurasa wa pili. Hakuna ugawaji wa kurasa unaotegemea cursor, kwa hivyo uingizaji unaotokea kwa wakati mmoja unaweza kusababisha mipaka ya kurasa kuhama kati ya miito. Kwa madhumuni mengi ya ugunduzi wa boti hili linakubalika; kwa uchakataji wa kumbukumbu, panga kwa sehemu thabiti (endDate au createdAt) na tambua muingiliano kwa slug.
Mfumo wa vitendo kwa "masoko yote hai": leta limit=500&order=volume24hr&ascending=false. Hiyo inafunika masoko 500 ya juu kwa kiasi cha biashara ambayo kimsingi ni kila soko lenye shughuli isiyo ndogo. Kwenda zaidi ya ukurasa wa 1 mara chache kunafaa - masoko katika mkia wa mgawanyo wa kiasi cha biashara ni kwa ufafanuzi si mahali ambapo hatua ipo.
Vikomo vya kasi na uhifadhi wa akiba
Gamma inasimamiwa mbele na Cloudflare na ina vikomo vya kasi laini kwa kila IP. Vizingiti vya kimajaribio vilivyoonwa chini ya mzigo wa uzalishaji:
- Hadi ~maombi 30 kwa sekunde kutoka IP moja endelevu: sawa.
- Milipuko ya maombi 100+ kwa sekunde: mara kwa mara 429, majaribio yanashinda.
- ~maombi 500 kwa sekunde endelevu: ukurasa wa kikomo cha kasi au kizuizi cha muda (sekunde 10-60).
Vichwa vya jibu vilivyochapishwa vinajumuisha thamani za Cache-Control za sekunde 30-60 kwa viunga vingi. Ziheshimu - hakuna faida kuleta tukio lilelile mara 10 kwa dakika. Mfumo wa uhifadhi wa akiba wa uzalishaji: LRU ya ndani ya mchakato + TTL iliyotegemea URL kamili, TTL ya sekunde 30. Inahifadhi idadi ya maombi na inapunguza ucheleweshaji.
Kwa mikakati ya masafa ya juu, akisi data ya Gamma kwenda hifadhi ya ndani iliyosasishwa na mchakato mmoja wa mletaji; kuwa na watumiaji wengi wakisoma kutoka hifadhi hiyo. Mletaji mmoja × watumiaji wengi > waletaji wengi × Gamma.
Msimbo: leta masoko yenye kiasi cha juu cha biashara cha saa 24
Mletaji wa marejeleo katika lugha tatu, inarudisha masoko 50 ya juu hai kwa kiasi cha biashara cha saa 24.
Python:
import requests
r = requests.get("https://gamma-api.polymarket.com/events",
params={"active":"true","closed":"false",
"order":"volume24hr","ascending":"false","limit":50},
timeout=10)
for ev in r.json()[:50]:
print(ev["slug"], ev.get("volume24hr"))
Node:
const url = "https://gamma-api.polymarket.com/events?active=true&closed=false" +
"&order=volume24hr&ascending=false&limit=50";
const events = await fetch(url).then(r => r.json());
for (const ev of events) console.log(ev.slug, ev.volume24hr);
Curl:
curl -s "https://gamma-api.polymarket.com/events?active=true&closed=false&order=volume24hr&ascending=false&limit=50" \
| jq '.[].slug'
Kiunga cha gamma /events cha Polymarket HAIRUHUSU kigezo cha utafutaji wa matini-huru - kuongeza ?q=foo au ?search=foo kunarudisha kimya mpangilio wa chaguomsingi. Chuja kwa slug au tag badala yake.


