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=false kwa 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:

LeboIDLeboID
Sports1NBA745
Crypto21NFL450
Politics2Tennis864
Bitcoin100196Esports702
Ethereum100383Soccer1059
Election3EPL739
Middle East1432UCL2186

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: true inaondoa masoko ambayo timu ya Polymarket imeficha kutoka kiolesura.
  • closed=true|false: false inaondoa masoko yaliyosuluhishwa. Mchanganyiko active=true&closed=false ni kichujio cha masoko hai cha kawaida zaidi.
  • order=volume24hr, order=volume, order=endDate: ufunguo wa kupanga. Muhimu zaidi ni volume24hr kwa kupata masoko yanayoendelea sasa.
  • ascending=true|false: chaguomsingi true kwa endpoints nyingi; karibu daima unataka false kwa 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.

Maswali yanayoulizwa mara kwa mara

Ni nini Gamma API ya Polymarket?
Gamma ni API ya data ya maelezo na ugunduzi ya Polymarket. Inatoa orodha za tukio/soko, vichwa, maelezo, tarehe za mwisho, lebo, na kiasi cha biashara cha jumla. HAITOI data ya daftari la oda ya wakati halisi - hiyo inaishi kwenye CLOB API. Kwa matumizi mengi ya ugunduzi na uchanganuzi, unaanza na Gamma.
Ni nini tofauti kati ya tukio na soko kwenye Polymarket?
Tukio linaunganisha soko moja au zaidi yanayoshiriki dhamira ya swali. Soko ni tokeo mahususi la Ndiyo/Hapana lenye daftari lake la oda na token IDs. Tukio la "2026 NBA Champion" lina masoko 30 (moja kwa kila timu). Kwa matukio ya Ndiyo/Hapana, tukio lina soko moja la msingi.
Je, ninawezaje kupata tag IDs za Polymarket?
Lebo zinafichuliwa kupitia kiunga cha gamma /tags. Vitambulisho vilivyothibitishwa tunavyotumia katika uzalishaji: 864 Tennis, 745 NBA. Slug za lebo katika URLs (?tag_slug=tennis) na hoja ya matini-huru (?q=tennis) si za kuaminika - tumia tag_id ya nambari tu. Angalia /tags kabla ya kutegemea slug.
Je, ninawezaje kupanga matukio ya Polymarket kwa kiasi cha biashara cha saa 24?
/events?order=volume24hr&ascending=false - hii ndiyo inayoendesha vidirisha vingi vya "masoko yanayovuma". Changanya na active=true&closed=false kuchuja masoko yaliyoisha au yaliyosimamishwa. Limit ni 25 kwa chaguomsingi; kikomo cha juu ni 500 kwa mwito.
Je, kuna vikomo vya ugawaji wa kurasa kwenye Gamma?
Ndio. Endpoints za /events na /markets zinakubali limit (kikomo cha juu 500 kwa mwito) na offset kwa ugawaji wa kurasa. Maktaba nyingi hazifanyi ugawaji wa kurasa kiotomatiki - ikiwa unahitaji ulimwengu mzima, fanya kitanzi na offset hadi upate ukurasa wenye matokeo machache kuliko `limit`.
Je, Gamma inasaidia WebSocket?
Hapana. Gamma ni REST-tu. Kwa masasisho ya wakati halisi (mabadiliko ya bei, masoko mapya, daftari la oda) tumia CLOB WebSocket - imefunikwa katika sura ya 8 ya mfululizo huu.