Bu seride kaldıracı ayarlamayı ve bir pozisyon açmayı görmüştük. Şimdi sırada, hesabınızdaki açık pozisyonları API üzerinden görüntülemek var — bu bilgiyi, örneğin belirli bir kâr/zarar seviyesine ulaşınca otomatik pozisyon kapatan bir botun temeli olarak kullanabilirsiniz.
Position Risk Uç Noktası
Binance Futures, hesabınızdaki tüm sembollerin pozisyon bilgisini tek bir uç noktadan döndürür:
def acik_pozisyonlari_al():
url = f"{FUTURES_BASE_URL}/fapi/v2/positionRisk"
headers = {"X-MBX-APIKEY": API_KEY}
params = imzali_parametre_olustur({})
response = requests.get(url, headers=headers, params=params)
return response.json()
İlk Denemede Karşılaşılan Sorun: Sıfır Miktarlı Kayıtlar
Bu uç nokta, Binance Futures'ta işlem gören her sembol için bir kayıt döndürür — pozisyonunuz olmayan yüzlerce sembol de dahil olmak üzere. Bunların hepsi positionAmt (pozisyon miktarı) değeri "0" olan kayıtlardır:
tum_kayitlar = acik_pozisyonlari_al()
print(len(tum_kayitlar)) # örn. 400+ kayıt -- hepsi sizin pozisyonunuz değil
Gerçekten açık olan pozisyonları görmek için, miktarı sıfır olmayanları filtrelemeniz gerekir:
def gercek_acik_pozisyonlari_al():
tum_kayitlar = acik_pozisyonlari_al()
return [p for p in tum_kayitlar if float(p["positionAmt"]) != 0]
acik_pozisyonlar = gercek_acik_pozisyonlari_al()
for pozisyon in acik_pozisyonlar:
print(pozisyon)
Sadece Anlamlı Alanları Göstermek
API'nin döndürdüğü ham veri, ihtiyacınız olmayan birçok alan içerir. Kendi ihtiyacınıza göre süzebilirsiniz:
def pozisyonlari_ozetle():
for pozisyon in gercek_acik_pozisyonlari_al():
sembol = pozisyon["symbol"]
miktar = pozisyon["positionAmt"]
giris_fiyati = pozisyon["entryPrice"]
kar_zarar = float(pozisyon["unRealizedProfit"])
kaldirac = pozisyon["leverage"]
print(f"{sembol}: {miktar} adet, giriş {giris_fiyati}, "
f"kaldıraç {kaldirac}x, anlık PNL: {kar_zarar:.4f} USDT")
pozisyonlari_ozetle()
Bu Veriyle Neler Yapılabilir?
unRealizedProfit (anlık gerçekleşmemiş kâr/zarar) alanını periyodik olarak kontrol eden bir döngü yazarak, belirlediğiniz bir eşiğe ulaşıldığında pozisyonu otomatik kapatan (önceki dersteki market emri mantığının tersini kullanan) basit bir bot kurabilirsiniz:
import time
while True:
for pozisyon in gercek_acik_pozisyonlari_al():
pnl = float(pozisyon["unRealizedProfit"])
if pnl >= 50:
print(f"{pozisyon['symbol']} için hedef kâra ulaşıldı: {pnl}")
# burada pozisyonu kapatan fonksiyon çağrılabilir
time.sleep(30)
Bu, yalnızca fikir vermesi için basitleştirilmiş bir örnektir — gerçek bir bot için hata yönetimi, bağlantı kopması senaryoları ve tekrar deneme (retry) mantığı da eklenmelidir.
Serinin Kalanı
Bu API otomasyon serisinde Binance spot bakiyesi sorgulamadan Futures pozisyon açma/kapatmaya, fiyat scraping'inden Telegram bot entegrasyonuna kadar birçok konuyu ele aldık. Aynı imzalı istek (HMAC-SHA256) mantığı, Binance'in diğer tüm özel uç noktaları için de geçerlidir — yeni bir işlem türü eklemek istediğinizde, sadece ilgili uç noktanın parametrelerini değiştirmeniz yeterli olacaktır.