Assalam-o-Alaikum, bot masters! Umeed hai sab khairiyat se honge.
Chalo bhai, اصل کام shuru karte hain. Theory bohat ho gayi, ab haath gande karne ka time hai. Agar trading bot banana hai, toh sabse pehli cheez hai data. Data nahi, toh bot andha hai. Aur hum yahan andhon ki fauj nahi bana rahe.
Suno. Stock market ho, crypto ho, ya Polymarket — jis ke paas data pehle aur saaf suthra aata hai, wohi jeet'ta hai. Yeh lesson aapka pehla qadam hai us jeet ki taraf. Hum Polymarket ka live data, direct unke server se, apne computer pe laana seekhenge. Bina kisi permission ke, bina ek روپیہ kharch kiye.
Polymarket ka ek public API hai, jiska naam hai Gamma API. Iski sabse achi baat? Yeh bilkul FREE hai aur iske liye koi API key ya authentication nahi chahiye. Matlab, Pakistan mein baithke, aap seedha real-time data access kar sakte hain. Koi credit card, koi sign-up ka jhanjhat nahi.
Yeh API "read-only" hai, yaani aap is se sirf data dekh sakte hain, trade nahi laga sakte. Trade lagane ke liye alag APIs hain, jo hum aage modules mein cover karenge. Abhi ke liye, hamara maqsad market ko samjhna hai, aur uske liye data nikalna zaroori hai.
Hum Python use kar rahe hain. Agar aapke paas Python 3.11+ installed hai, toh bas ek library install karni hai. Apna terminal ya command prompt kholo aur likho:
pip install requests
Bas. Hogaya setup. requests library humein internet se data fetch karne mein help karti hai. Bohat simple aur powerful hai.
Chalo, ab code likhte hain. Hamara goal hai Polymarket ke top 20 active markets ko fetch karna, unko 24-ghante ke volume ke hisaab se sort karke. Volume ka matlab hai ke kitna paisa us market mein lag raha hai. Jahan zyada volume, wahan zyada action.
Yeh raha poora code. Isko copy karke ek file fetch_markets.py mein save karo aur run karo. Phir hum iska post-mortem karte hain.
import requests
import json
from datetime import datetime, timezone
# Gamma API ka base URL. Isko capital mein likhna ek convention hai for constants.
GAMMA_BASE = "https://gamma-api.polymarket.com"
def fetch_active_markets(limit=20):
"""
Polymarket se active markets fetch karo — FREE, no auth.
Volume ke hisaab se sorted.
"""
print("Fetching active markets from Polymarket Gamma API...")
# API endpoint aur parameters
params = {
"active": "true", # Sirf active markets
"closed": "false", # Jo markets band na hui hon
"limit": limit, # Kitne results chahiye
"order": "volume24hr", # Volume ke hisaab se sort karo
"ascending": "false" # Ziada volume walay pehle
}
try:
# Asal API call yahan ho rahi hai
r = requests.get(f"{GAMMA_BASE}/markets", params=params, timeout=15)
r.raise_for_status() # Agar koi error aaye (like 404, 500), toh exception raise karo
print("Data received successfully!")
return r.json()
except requests.exceptions.RequestException as e:
print(f"Error fetching data: {e}")
return []
# Chalo, function ko call karte hain
markets = fetch_active_markets()
# Pehle 5 markets ka data print karte hain
print("\n--- Top 5 Active Markets by 24hr Volume ---")
for m in markets[:5]:
# 'outcomePrices' kabhi string hota hai, kabhi list. Data cleaning zaroori hai.
prices_str = m.get('outcomePrices', '[0, 0]')
try:
prices = json.loads(prices_str)
except (json.JSONDecodeError, TypeError):
prices = [0, 0] # Default value agar parsing fail ho
# Probability nikalte hain
yes_price = float(prices[0]) * 100
no_price = float(prices[1]) * 100
# Volume aur end date ko format karte hain
volume = m.get('volume24hr', 0)
end_date_str = m.get('endDate')
# Question ko thora chota karlete hain display ke liye
question = m.get('question', 'N/A')
print(f"\nQ: {question[:70]}...")
print(f" YES: {yes_price:.1f}% | NO: {no_price:.1f}%")
print(f" 24hr Volume: ${volume:,.0f}")
if end_date_str:
end_date = datetime.fromisoformat(end_date_str.replace('Z', '+00:00'))
print(f" Expires: {end_date.strftime('%d-%b-%Y %H:%M')} UTC")
GAMMA_BASE: Yeh API ka main address hai. Isko ek variable mein rakhne se code saaf rehta hai.
fetch_active_markets(limit=20): Yeh hamara main function hai.
params dictionary: Yahan hum API ko batate hain ke humein kya data chahiye.
active: "true", closed: "false": Humein woh markets chahiye jo abhi trade ho rahi hain. Na woh jo abhi shuru nahi hui, na woh jo band ho chuki hain.order: "volume24hr": Yeh sabse important hai. Hum KSE mein bhi toh volume dekhte hain na? Jahan volume, wahan liquidity. Jahan liquidity, wahan aasaani se trade enter aur exit kar sakte ho.ascending: "false": Humein highest volume markets pehle chahiye.requests.get(...): Yeh line asal jaadu karti hai. Yeh Polymarket ke server ko request bhejti hai. timeout=15 ka matlab hai ke agar 15 second mein jawab nahi aaya, toh give up kar do. Important hai, warna aapka bot phans sakta hai.r.raise_for_status(): Agar internet nahi chal raha ya Polymarket ka server down hai, toh yeh line error de degi. Yeh good practice hai.return r.json(): API se data JSON format mein aata hai. Yeh line usko Python dictionary/list mein convert kar deti hai.The for loop:
m.get('outcomePrices', '[0, 0]'): Yeh market ka dil hai. outcomePrices ek list hoti hai jismein [YES_PRICE, NO_PRICE] hota hai. Yeh price 0 se 1 ke darmiyan hota hai, jo basically probability hai. Hum .get() use kar rahe hain taake agar yeh field na bhi ho, toh hamara code crash na kare.json.loads(prices_str): Yeh ek ajeeb cheez hai. Kabhi kabhi Gamma API outcomePrices ko as a string bhej deta hai. Yeh line us string ko wapis list mein convert karti hai. Real-world data hamesha thora ganda hota hai, saaf karna parhta hai.yes_price = float(prices[0]) * 100: Hum price ko 100 se multiply karke percentage bana rahe hain. 0.67 price ka matlab hai 67% chance.volume = m.get('volume24hr', 0): 24 ghante mein kitne dollars ki trading hui hai.endDate: Market kab expire hogi. Yeh date ISO format mein hoti hai, hum usko aam format mein convert kar rahe hain.Pro Tip: Liquidity is King