*** YAZILIM ***
Modern işlemciler çok sayıda çekirdekle geliyor; tek bir thread üzerinde çalışmak donanımın işlem gücünü çöpe atmak demek. Özellikle yüksek frekanslı veri akışında, analizlerde ve eşzamanlı emir yönetiminde CPU’nun tüm çekirdeklerinden tam verim almak için multithreading kaçınılmaz bir gereklilik.
Ancak multithreading yapılarda paylaşılan verilere erişirken klasik lock mekanizmalarına sarılmak ciddi bir tuzaktır. Kod karmaşıklaştıkça manuel kilitler hem performans darboğazı yaratır hem de deadlock riskini artırır. Deadlock'a yakalandığınızda program donar ve yeniden başlatmaktan başka çareniz kalmaz.
Bu riskleri bertaraf etmek için en baştan Concurrent Koleksiyonları (ConcurrentDictionary, ConcurrentQueue vb.) ve thread-safe yapıları tercih edin:
Kilit Yönetiminden Kaçının: Manuel lock yerine arka planda optimize edilmiş, non-blocking / atomic seviyede çalışan concurrent yapıları kullanın.
Gereksiz Beklemeleri Önleyin: Veri akışını kilitlemeden, güvenli ve yüksek hızlı bir kuyruk mimarisi kurun.
Single Thread Başlasanız Bile: "Şimdilik tek thread çalışıyor, standart liste yeter" demeyin. Proje büyüyüp multithread'e evrildiğinde mimariyi dönüştürmek çok daha sancılı olur.
Kodu kilitlerle boğmak yerine baştan thread-safe tasarlayın; donanımın gücünü kilitlenmeden kullanın.
*** ALGO ***
Algoritmik trade dünyasına adım atacaklar için yol haritası niteliğinde 8 kritik kural:
Overfitting (Aşırı Uyum) Tuzağı: Geçmiş veride kusursuz getiri eğrisi çizen bir sistem, gelecekte en hızlı patlayan sistemdir. Parametre sayısını az, kurguyu sade tutun.
İşlem ve Kayma Maliyetlerini Asla Atlamayın:
Komisyon, kayma (slippage) ve spread hesaba katılmadan yapılan her backtest bir hayal ürünüdür. Canlı piyasada kârı eriten bu maliyetlerdir.
Maksimum Drawdown'a Göre Pozisyon Alın:
Getiriye değil, sistemin tepe noktasından yapacağı maksimum sermaye kaybına odaklanın. Kasa yönetimi stratejiden önce gelir.
Çoklu Piyasa Rejiminde Test Edin: Trendde kazandıran sistem yatayda doğranabilir. Modelinizi boğa, ayı ve yatay piyasa dönemlerinde ayrı ayrı sınayın.
Out-of-Sample (Örneklem Dışı) Veri Şart:
Optimizasyon yaptığınız periyot ile nihai başarıyı ölçtüğünüz veri seti kesinlikle farklı zaman dilimlerinden olmalıdır.
Look-Ahead Bias Hatası:
Kodunuzun henüz kapanmamış barın verisini veya geleceğe ait bilgiyi okumadığından yüzde yüz emin olun.
Canlıda Mikro Lotlarla Başlayın: Kodunuz simülasyonda hatasız olsa bile, gerçek piyasada emir iletimi, derinlik ve ağ gecikmelerini ufak bütçeyle gözlemleyin.
Disiplin ve Müdahalesizlik:
Sistemin zararlı seriler yaşayacağını baştan kabul edin. Sürekli elle manuel müdahale edecekseniz algo çalıştırmanın anlamı kalmaz.
Kariyerine yeni başlayan arkadaşlar;
önünüzde iki yol var.
-Başkasının hayalini inşa etmek
-ya da kendi riskinizi alıp kendi sisteminizi kurmak.
İkincisi konfor vadetmez;
uykusuz geceler, bitmeyen sorumluluk getirir.
Ama kendi kararlarının arkasında durup o gemiyi yüzdürmenin verdiği tatmin, hiçbir maaşın satın alamayacağı bir özgürlüktür.
Kendi işinizi yapma cesaretini gösterin.
Ben ikisini de tattım.
Kendi işini yapmanın tadı bambaşka.
Çalıştığım şirkete 1 mayısa kadar sözüm var.
Sonrasında kendi keyfime göre işler yapıp sektöre bambaşka bir hava getireceğim.
CPU ve bellek numerik tipleri sever; Mümkün olan yerlerde string (metin) tipleri yerine numerik ID kullanın.
Yüksek performanslı bir mimaride altın kural: Mümk��nse veriyi sistemin içinde numerik ID (integer) olarak dolaştırın. Metin halini yalnızca son kullanıcıya gösterirken (UI/Ekranda) bir lookup tablosundan çözün.
Neden bu kadar fark yaratır?
1️⃣ CPU & İşlem Hızı:
İki tamsayıyı karşılaştırmak tek bir CPU çevrimidir (clock cycle). String karşılaştırma ise bayt bayt gezinti, uzunluk kontrolü ve bellek referansı demektir.
2️⃣ Bellek & Cache Verimi:
Bir string; nesne başlığı, uzunluk bilgisi ve karakterleriyle onlarca bayt tutarken, bir integer yalnızca 4 byte yer kaplar. Veri sıkılaştıkça CPU L1/L2/L3 cache ıskalamaları minimize olur.
3️⃣ Finans / Borsa Örneği:
Günde 10+ milyon işlemin aktığı bir sistemde her işlem satırında;
Hisse Kodu
Alan Kurum
Satan Kurum
bilgilerini string yerine integer tuttuğunuzda gigabaytlarca bellek tasarrufu sağlar, Garbage Collector baskısını kırar ve işlem hızını katlarsınız.
💡 Sistem içinde sayılarla konuşun, ekranda metne çevirin.
@__Tiberius Cengiz abi, önceki sistemlerini uzun süredir kullanıyoruz, çok da memnunum.
Bunun da getiri anlamında öncekilerin üstüne çıkacağına inanıyorum.
Merakla bekliyoruz, ilk abone öncekiler gibi ben olurum 🙂
@__Tiberius Abi merhaba seni tekrar görmek güzel.
İdeale mail atmıştım. Parabir programında paradise da olan özelliklerin bazıları yok.Bu fonksiyonları eşitleyebilirseniz çok sevinirim. Özellikle tek yönlü işlemlerde ters sinyalde flat olmaması pozisyonda kalması. Bu seçenek paradiseda var.