Binance Websocket Python: Gerçek Zamanlı Verilere Erişim
Binance, dünyanın en büyük kripto para borsalarından biridir ve gerçek zamanlı veri akışına erişmek için bir WebSocket API’si sunar. Bu API, tüccarların ve yatırımcıların piyasa hareketlerini takip etmelerine, emir vermelerine ve hesaplarını yönetmelerine olanak tanır.
Bu makalede, Binance WebSocket API’sini Python kullanarak nasıl kullanacağınızı göstereceğiz. Öncelikle, API’ye nasıl bağlanacağınızı ve ardından farklı veri akışlarına nasıl abone olacağınızı öğreneceksiniz. Son olarak, alınan verileri nasıl işleyeceğinizi ve görselleştireceğinizi göstereceğiz.
API’ye Bağlanma
Binance WebSocket API’sine bağlanmak için öncelikle bir API anahtarı ve gizli anahtar oluşturmanız gerekir. Bunu Binance hesabınızın “API Yönetimi” bölümünden yapabilirsiniz.
API anahtarınızı ve gizli anahtarınızı oluşturduktan sonra, aşağıdaki kodu kullanarak API’ye bağlanabilirsiniz:
“`python
import websocket
API anahtarınızı ve gizli anahtarınızı girin
api_key = “YOUR_API_KEY”
api_secret = “YOUR_API_SECRET”
WebSocket URL’sini oluşturun
websocket_url = “wss://stream.binance.com:9443/ws”
WebSocket bağlantısını başlatın
ws = websocket.WebSocketApp(websocket_url,
on_open=on_open,
on_close=on_close,
on_message=on_message,
on_error=on_error)
WebSocket bağlantısını başlatın
ws.run_forever()
def on_open(ws):
print(“WebSocket bağlantısı açıldı”)
def on_close(ws):
print(“WebSocket bağlantısı kapandı”)
def on_message(ws, message):
print(“WebSocket mesajı alındı: {}”.format(message))
def on_error(ws, error):
print(“WebSocket hatası: {}”.format(error))
“`
Bu kod, API anahtarınızı ve gizli anahtarınızı kullanarak WebSocket bağlantısını başlatacaktır. Bağlantı başarılı bir şekilde kurulduğunda, on_open()
fonksiyonu çağrılacaktır. Bağlantı kapandığında, on_close()
fonksiyonu çağrılacaktır. WebSocket mesajı alındığında, on_message()
fonksiyonu çağrılacaktır. Ve WebSocket hatası oluştuğunda, on_error()
fonksiyonu çağrılacaktır.
Veri Akışlarına Abone Olma
API’ye bağlandıktan sonra, farklı veri akışlarına abone olabilirsiniz. Binance WebSocket API’si, aşağıdaki veri akışlarını sunar:
- Ticker veri akışı: Bu veri akışı, seçilen kripto para biriminin son fiyatı, en yüksek fiyatı, en düşük fiyatı ve işlem hacmi gibi bilgilerini içerir.
- Derinlik veri akışı: Bu veri akışı, seçilen kripto para biriminin emir defterini içerir.
- İşlem veri akışı: Bu veri akışı, seçilen kripto para birimi için gerçekleşen işlemleri içerir.
- Hesap veri akışı: Bu veri akışı, hesabınızdaki bakiyeler, emirler ve işlemler gibi bilgilerini içerir.
Veri akışlarına abone olmak için, subscribe()
fonksiyonunu kullanabilirsiniz. Örneğin, aşağıdaki kod kullanarak BTC/USDT kripto para biriminin ticker veri akışına abone olabilirsiniz:
python
ws.send('{"method": "SUBSCRIBE", "params": ["btcusdt@ticker"], "id": 1}')
Bu kod, btcusdt@ticker
veri akışına abone olacaktır. Veri akışından gelen mesajlar, on_message()
fonksiyonunda işlenecektir.
Verileri İşleme ve Görselleştirme
Veri akışlarından gelen mesajları aldıktan sonra, bunları işleyebilir ve görselleştirebilirsiniz. Örneğin, aşağıdaki kod kullanarak BTC/USDT kripto para biriminin son fiyatını ekrana yazdırabilirsiniz:
“`python
def on_message(ws, message):
data = json.loads(message)
if data['e'] == 'ticker':
print("BTC/USDT son fiyatı: {}".format(data['c']))
“`
Bu kod, on_message()
fonksiyonunda alınan mesajı JSON formatına dönüştürecek ve ardından e
alanını kontrol edecektir. e
alanı ticker
değerine eşitse, BTC/USDT kripto para biriminin son fiyatı ekrana yazdırılacaktır.
Verileri görselleştirmek için, matplotlib
veya plotly
gibi bir kütüphane kullanabilirsiniz. Örneğin, aşağıdaki kod kullanarak BTC/USDT kripto para biriminin son fiyatının zaman içindeki değişimini çizdirebilirsiniz:
“`python
import matplotlib.pyplot as plt
Son fiyatları depolayacak bir liste oluşturun
prices = []
def on_message(ws, message):
data = json.loads(message)
if data['e'] == 'ticker':
prices.append(float(data['c']))
Zaman aralığını oluşturun
timestamps = range(len(prices))
Grafiği oluşturun
plt.plot(timestamps, prices)
plt.xlabel(‘Zaman’)
plt.ylabel(‘Fiyat’)
plt.title(‘BTC/USDT Son Fiyatının Zaman İçindeki Değişimi’)
plt.show()
“`
Bu kod, on_message()
fonksiyonunda alınan mesajı JSON formatına dönüştürecek ve ardından e
alanını kontrol edecektir. e
alanı ticker
değerine eşitse, BTC/USDT kripto para biriminin son fiyatı prices
listesine eklenecektir. prices
listesi, zaman içindeki fiyat değişimini çizmek için kullanılacaktır.
Faydalı Siteler ve Dosyalar
- Binance WebSocket API Dokümantasyonu
- Binance WebSocket API Örnekleri
- Binance WebSocket API Python Kütüphanesi