İçerikler

GOLANG İle Binance Vadeli İşlemlerin Websocket Api Kullanarak Takibi

GOLANG İle Binance Vadeli İşlemlerin Websocket Api Kullanarak Takibi

Giriş

Bu makale, Binance vadeli işlem platformu için geliştirilmiş olan gerçek zamanlı pozisyon ve emir takip uygulamasının teknik bir incelemesini sunmaktadır. Uygulama, Go programlama dili kullanılarak geliştirilmiş olup, Binance API’si üzerinden vadeli işlem hesabındaki pozisyonları, emirleri ve hesap durumunu canlı olarak izleme imkanı sağlamaktadır.

Teknik Altyapı

Kullanılan Teknolojiler

  • Go Programming Language: Ana geliştirme dili
  • Gorilla WebSocket: WebSocket bağlantıları için kullanılan kütüphane
  • Binance Futures API: Vadeli işlem platformu ile iletişim
  • HMAC-SHA256: API güvenlik imzalaması için kullanılan hash algoritması

Temel Veri Yapıları

Uygulama üç temel veri yapısı üzerine inşa edilmiştir:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
type Position struct {
    Symbol           string  `json:"symbol"`
    PositionAmt      string  `json:"positionAmt"`
    EntryPrice       string  `json:"entryPrice"`
    UnRealizedProfit string  `json:"unRealizedProfit"`
    Leverage         string  `json:"leverage"`
    MarkPrice        string  `json:"markPrice"`
    ROE              float64
}

type Order struct {
    OrderID   int64  `json:"orderId"`
    Symbol    string `json:"symbol"`
    Type      string `json:"type"`
    Side      string `json:"side"`
    Price     string `json:"price"`
    OrigQty   string `json:"origQty"`
    StopPrice string `json:"stopPrice"`
    Status    string `json:"status"`
}

type Account struct {
    TotalWalletBalance    string `json:"totalWalletBalance"`
    AvailableBalance      string `json:"availableBalance"`
    TotalUnrealizedProfit string `json:"totalUnrealizedProfit"`
}

Uygulama Mimarisi

1. Güvenlik ve Kimlik Doğrulama

Binance API ile güvenli iletişim için HMAC-SHA256 imzalama mekanizması kullanılmaktadır:

1
2
3
4
5
func getSignature(queryString string) string {
    h := hmac.New(sha256.New, []byte(API_SECRET))
    h.Write([]byte(queryString))
    return hex.EncodeToString(h.Sum(nil))
}

2. Veri Toplama ve İşleme

Uygulama iki ana veri akışı yönetir:

  1. REST API Üzerinden Başlangıç Verisi: getInitialData() fonksiyonu ile hesap durumu, pozisyonlar ve emirler alınır.
  2. WebSocket Üzerinden Gerçek Zamanlı Güncellemeler: handleUserData() fonksiyonu ile canlı veri akışı sağlanır.

3. Gerçek Zamanlı Veri Akışı

WebSocket bağlantıları iki farklı amaç için kullanılır:

  1. Kullanıcı Verisi Akışı: Hesap güncellemeleri ve emir değişiklikleri
  2. Market Verisi Akışı: Açık pozisyonların fiyat güncellemeleri
1
2
3
4
5
func handleUserData(positions []Position, orders []Order, account Account) {
    listenKey := getListenKey()
    wsURL := fmt.Sprintf("wss://fstream.binance.com/ws/%s", listenKey)
    // ... WebSocket işlemleri
}

4. Konsol Arayüzü

Uygulama, konsol üzerinde kullanıcı dostu bir arayüz sunar. printCurrentStatus() fonksiyonu ile:

  • Hesap bakiyesi
  • Açık pozisyonlar ve kâr/zarar durumları
  • Aktif emirler
  • ROE (Return on Equity) hesaplamaları

düzenli olarak gösterilir.

Önemli Özellikler

1. ROE Hesaplaması

Pozisyonların kârlılık oranı şu formüle göre hesaplanır:

1
2
3
4
investment := math.Abs(posAmt) * entryPrice / leverage
if investment > 0 {
    pos.ROE = (unRealizedProfit / investment) * 100
}

2. Çoklu Sembol Desteği

Uygulama, birden fazla açık pozisyonu aynı anda izleyebilir ve her biri için gerçek zamanlı fiyat güncellemelerini takip eder.

3. Hata Yönetimi

Bağlantı kopması durumunda otomatik yeniden bağlanma ve veri akışının devamlılığını sağlama özellikleri bulunmaktadır.

Sonuç

Bu uygulama, Binance vadeli işlem platformunda işlem yapan kullanıcılar için güçlü bir izleme aracıdır. Gerçek zamanlı veri akışı, otomatik ROE hesaplaması ve kullanıcı dostu konsol arayüzü ile trading deneyimini geliştirmektedir.

Gelecek geliştirmeler için öneriler:

  • Grafik arayüz eklenmesi
  • Alarm sistemi implementasyonu
  • Otomatik trading stratejileri entegrasyonu
  • Performans analizi ve raporlama özellikleri

Teknik Gereksinimler