💰 Tüm kripto depozitoyu boşaltıyoruz

Bugün masamızda jhonwick547/trading_bot projesi var.
İlk bakışta ciddi bir başarı vaadi gibi görünüyor. Python ile yazılmış, Binance için otomatik bir ticaret botu. Ama aslında finansal yazılımın nasıl yazılmaması gerektiğine dair bir rehber. Bunu gerçek bir hesapta çalıştırırsanız, piyasa sizi yer.

Kâbus ne? 🤡

1️⃣Schrödinger'in Makine Öğrenmesi
Kodda gururla sklearn içe aktarılıyor ve bir model yükleniyor:
self.model = joblib.load(model_path)

Ama generate_signals metodunda... hiçbir yerde kullanılmıyor. 🤡
Sinyaller, 5. sınıf seviyesinde bir dizi if ile üretiliyor: «RSI < 60 ve MACD yükseliyorsa satın al».
Random Forest neden var? Muhtemelen dizüstü bilgisayar fanının daha inandırıcı ses çıkarması için.

2️⃣ Ölümcül yarış
execute_trade fonksiyonuna bakalım.
1. Bot bir piyasa emri gönderir (create_market_buy_order).
2. Bot, Stop Loss ve Take Profit'i ayrı isteklerle ayarlamaya çalışır.

Milyon dolarlık soru: 1. ve 2. adım arasında internetiniz kesilirse, betik çökerse veya Binance API hatası döndürürse ne olur?
Cevap: Stop loss olmadan açık bir pozisyonla kalırsınız. Ters yönde bir mum ve merhaba tasfiye.
Normal sistemlerde OCO emirleri (One Cancels the Other) kullanılır veya giriş ve stopun atomik (ya da en azından mümkün olduğunca yakın) olması için emir ağı toplu olarak gönderilir.

3️⃣ Çalışmayan matematik
Pozisyon hesaplama fonksiyonu calculate_position_size:
risk_amount = balance * self.balance_pct  # Deponun %10'u
position_size = risk_amount / (entry_price - stop_loss)

Yazar, işlem başına risk ile giriş hacmini karıştırmış.
entry_price, stop_loss'a yakınsa, payda sıfıra yaklaşır ve pozisyon büyüklüğü uzaya fırlar. Orada bir min() var, ancak sabit riskten hacim hesaplama mantığı yanlış uygulanmış. Sonuçta, volatiliteye bağlı olarak ya kuruşluk risk alırsınız ya da tüm depozitoyu.

4️⃣ Çifte iş
start_trading döngüsünde bot, sinyali kontrol etmek için mumları indirir (fetch_data) ve göstergeleri hesaplar.
Sinyal varsa, execute_trade'i çağırır, burada... tekrar mumları indirir ve göstergeleri hesaplar.
Muhtemelen Binance'in gereksiz istekler nedeniyle IP'yi daha hızlı yasaklaması için.

5️⃣ Anahtarların sabit kodlanması
if __name__ == "__main__": içinde anahtarların doğrudan koda yazılması öneriliyor.
api_key = 'YOUR_API_KEY'
Asla. Duyuyor musunuz? Asla sırları kodda saklamayın. .env kullanın.

👨🏻‍⚖️ Karar:
Dışarıdan bir ticaret botuna benziyor, ama özünde rastgele kayıp üreteci.

#kodu_kızartıyoruz