Python ile Binance Futures API'sinde Pozisyon Açma ve Kaldıraç Ayarlama

kusha · 03 Ağustos 2026 · 6 dk okuma

Önceki derste bakiye sorgulamak için gereken imzalı istek altyapısını kurmuştuk. Bu derste aynı altyapıyı kullanarak gerçek bir işlem yapacağız: kaldıracı ayarlayıp market emriyle bir pozisyon açacağız.

Önemli risk uyarısı: Aşağıdaki kod, gerçek parayla gerçek bir pozisyon açar. Kaldıraçlı vadeli işlemlerde kayıp hızlı ve büyük olabilir; kodu test etmeden önce Binance'in testnet (sanal bakiye ile çalışan test ortamı) adresini kullanmanız şiddetle önerilir. Bu içerik yalnızca API'nin teknik çalışma mantığını öğretmek amaçlıdır, yatırım tavsiyesi değildir.

Kaldıracı Ayarlamak

Bir pozisyon açmadan önce, o sembol için kullanmak istediğiniz kaldıraç oranını ayarlamanız gerekir:

def kaldirac_ayarla(sembol: str, kaldirac: int):
    url = f"{FUTURES_BASE_URL}/fapi/v1/leverage"
    headers = {"X-MBX-APIKEY": API_KEY}
    params = imzali_parametre_olustur({
        "symbol": sembol,
        "leverage": kaldirac,
    })

    response = requests.post(url, headers=headers, params=params)
    return response.json()

kaldirac_ayarla("BTCUSDT", 5)  # 5x kaldıraç

Dikkat: bu istek requests.get(...) değil requests.post(...)'tur — çünkü bir veri okumuyor, hesap üzerinde bir ayar değiştiriyoruz. Binance API'sinde okuma işlemleri genelde GET, durum değiştiren işlemler ise POST/DELETE ile yapılır.

Market Emriyle Pozisyon Açmak

def pozisyon_ac(sembol: str, yon: str, miktar: float):
    url = f"{FUTURES_BASE_URL}/fapi/v1/order"
    headers = {"X-MBX-APIKEY": API_KEY}
    params = imzali_parametre_olustur({
        "symbol": sembol,
        "side": yon,          # "BUY" (long) veya "SELL" (short)
        "type": "MARKET",
        "quantity": miktar,
    })

    response = requests.post(url, headers=headers, params=params)
    return response.json()

sonuc = pozisyon_ac("BTCUSDT", "BUY", 0.01)
print(sonuc)

side="BUY", fiyatın yükselmesini beklediğiniz bir long pozisyon açar; side="SELL" ise fiyatın düşmesini beklediğiniz bir short pozisyon açar. type="MARKET", emrin belirli bir fiyat beklemeden anlık piyasa fiyatından hemen gerçekleşmesini sağlar.

Miktarı USDT Tutarından Hesaplamak

Çoğu zaman "1000 USDT'lik pozisyon aç" demek istersiniz, ama API quantity parametresini coin cinsinden (BTC miktarı gibi) bekler. Bu durumda önce güncel fiyatı çekip miktarı hesaplamanız gerekir:

def usdt_tutarindan_miktar_hesapla(sembol: str, usdt_tutari: float) -> float:
    fiyat = mark_fiyat_al(sembol)
    return round(usdt_tutari / fiyat, 3)

miktar = usdt_tutarindan_miktar_hesapla("BTCUSDT", 1000)
pozisyon_ac("BTCUSDT", "BUY", miktar)

round(..., 3) kullanılmasının nedeni, Binance'in her sembol için belirli bir ondalık hassasiyet (lot size) kuralı olmasıdır — kuralın dışında bir miktar gönderirseniz emir reddedilir. Gerçek bir projede, sembolün hassasiyet kuralını exchangeInfo uç noktasından dinamik olarak çekmek daha sağlam bir yaklaşımdır.

Sırada Ne Var?

Sırada, açtığımız bu pozisyonları API üzerinden görüntülemeyi ve anlık kâr/zarar (unrealized PNL) durumunu takip etmeyi göreceğiz.