Binance Websocket Python

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


Yayımlandı

kategorisi