3 dk okuma
Giriş
Borsa botları ile otomatik işlem yapmak dışarıdan bakıldığında ‘indikatör sinyal verince emir gönder’ kadar basit görünebilir. Gerçekte güvenilir bir trading sistemi; market data toplama, state yönetimi, sinyal üretimi, risk kontrolü, order execution, hata yönetimi ve izleme katmanlarının birlikte çalıştığı uzun ömürlü bir servis mimarisidir. Bir botun iyi stratejiye sahip olması önemlidir, fakat operasyonel olarak güvenilir değilse iyi sinyaller bile kötü sonuca dönüşebilir.
Market data katmanı
Sistemin ilk katmanı doğru ve zamanında veridir. REST uçları geçmiş mumları tamamlamak için kullanılabilirken WebSocket akışları canlı fiyat, trade veya order book güncellemelerini almak için daha uygundur. Multi-exchange bir yapıda her borsanın veri formatını ortak bir domain modeline çevirmek, stratejinin borsaya bağımlı hale gelmesini engeller.
State ve feature hesaplama
Her gelen tick üzerinde bütün indikatörleri sıfırdan hesaplamak pahalıdır. Bunun yerine rolling window ve incremental hesaplama yaklaşımı daha verimlidir. 30 dakika, 1 saat, 4 saat veya günlük periyotlar için farklı feature setleri tutulabilir. RSI, volatilite, momentum, hacim değişimi veya model skorları aynı state nesnesinde birleştirilebilir.
Sinyal motoru karar değil öneri üretmeli
Sinyal motorunun görevi doğrudan emir göndermek yerine LONG, SHORT, EXIT veya NONE gibi öneri üretmek olmalıdır. Böylece risk katmanı sinyali bağımsız biçimde değerlendirebilir. Tahmin edilen getiri, volatilite ve anomaly score gibi farklı bileşenleri aynı karar mekanizmasında kullanmak, tek bir indikatöre bağlı sistemden daha esnek bir yapı sağlar.
Risk katmanı neden zorunludur?
Pozisyon büyüklüğü, maksimum açık pozisyon, günlük zarar limiti, stop mekanizması ve volatilite filtresi stratejiden ayrı bir risk modülünde tutulmalıdır. Risk sistemi ‘sinyal doğru mu?’ sorusunu değil, ‘bu sinyal şu anda alınabilir mi?’ sorusunu cevaplar. Production botlarda en kritik katman çoğu zaman budur.
Order execution ve idempotency
Borsaya emir göndermek network hataları nedeniyle belirsiz sonuç üretebilir. İstek timeout olduğunda emir gerçekten gitmiş olabilir. Bu yüzden client order id, idempotency, order status reconciliation ve retry politikaları dikkatli tasarlanmalıdır. Aynı sinyalin iki kez emir üretmesini engellemek özellikle önemlidir.
Dry-run ve testnet olmadan canlıya geçmeyin
Trading sistemlerinde yeni strateji veya yeni borsa adaptörü önce historical backtest, ardından dry-run veya sandbox/testnet aşamasından geçmelidir. Canlı para ile test etmek geliştirme yöntemi değildir. Gerçek işlem açılmadan önce loglama, reconnect, rate limit ve beklenmeyen exception senaryoları doğrulanmalıdır.
Sonuç
Borsa botları ile otomatik işlem, sinyal algoritmasından çok daha geniş bir mühendislik problemidir. Başarılı sistem; veri, karar, risk ve yürütme katmanlarını ayırır, her işlemi izlenebilir hale getirir ve canlıya geçmeden önce backtest ile dry-run süreçlerini zorunlu tutar.
Araştırma Kaynakları ve İleri Okuma
- .NET Worker Services – https://learn.microsoft.com/en-us/dotnet/core/extensions/workers
- Binance WebSocket Streams – https://developers.binance.com/docs/binance-spot-api-docs/web-socket-streams

