Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Binance Spot Trading Bot (Düşük Risk, Maker-First)

Deterministik, düşük riskli Binance Spot trading botu. Rejim filtresi (EMA20/EMA50 + ADX), volatiliteye uyarlamalı bantlar (ATR/Bollinger), maker-öncelikli yürütme (LIMIT_MAKER), TTL/cancel-replace, katı risk kontrolleri (işlem/portföy/günlük DD), slippage/korelasyon "gating", haber penceresi durdurma, SQLite işlem logları, User Data Stream ile gerçek zamanlı dolum/hesap takibi, dinamik sermaye (USDT + diğer varlıkların USDT karşılığı) ve günlük raporlama (opsiyonel Telegram) içerir.

İçindekiler

Özellikler

Piyasalar

  • Desteklenen Çiftler: ETH/USDT (varsayılan), BTC/USDT, SOL/USDT ve diğer /USDT çiftleri
  • Binance Spot API: REST ve WebSocket entegrasyonu
  • Real-time Veri: Depth stream (L1-L5) ve User Data Stream

Strateji Motoru

  • Rejim Filtresi: Trend (EMA20/EMA50 + ADX) vs yatay piyasa algılama
  • Volatilite Bantları: ATR ve Bollinger Bands kombinasyonu
  • Onay İndikatörleri: RSI ve VWAP ile sinyal doğrulama
  • Microprice: Bid-ask spread içinde optimal fiyatlama

Yürütme Sistemi

  • Maker-First: Post-only LIMIT_MAKER emirleri
  • TTL (Time-To-Live): 5-10 saniye otomatik iptal
  • Cancel/Replace: Akıllı emir yenileme
  • Kısmi Dolum: Kademeli pozisyon inşası

Çıkış Stratejileri

  • Take Profit: ATR tabanlı, maker cancel/replace
  • Stop Loss: ATR tabanlı, agresif limit emirleri
  • Dinamik Seviyeler: Volatiliteye göre otomatik ayarlama

Risk Yönetimi

  • Çok Katmanlı Risk: İşlem, portföy ve günlük seviyede kontrol
  • Drawdown Protection: Günlük DD stop ve cooldown mekanizması
  • Korelasyon Filtresi: Benzer varlıklarda aynı anda pozisyon engelleme
  • Slippage Gating: Yüksek slippage durumunda işlem durdurma
  • Spread Kontrolü: Aşırı spread durumunda işlem engelleme

Veri ve İzleme

  • SQLite Veritabanı: Tüm işlem geçmişi ve metrikleri
  • Real-time Takip: User Data Stream ile dolum ve hesap güncellemeleri
  • Performans Metrikleri: Slippage, PnL, win rate analizi

Mimari Özet

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   Market Data   │───▶│  Strategy Engine │───▶│ Execution Engine│
│   (WebSocket)   │    │  (EMA/ATR/RSI)   │    │ (LIMIT_MAKER)   │
└─────────────────┘    └──────────────────┘    └─────────────────┘
         │                       │                       │
         ▼                       ▼                       ▼
┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   Risk Manager  │◀───│   Portfolio      │◀───│   User Stream   │
│ (Multi-layer)   │    │   (Positions)    │    │ (Real-time)     │
└─────────────────┘    └──────────────────┘    └─────────────────┘
         │
         ▼
┌─────────────────┐
│   DB Logger     │
│   (SQLite)      │
└─────────────────┘

Kurulum

Gereksinimler

  • Python 3.8+
  • NumPy 2.x uyumlu ortam (sanal ortam önerilir)
  • Binance API anahtarları (opsiyonel - paper test için gerekli değil)

Adım 1: Projeyi İndirin

git clone <repository-url>
cd binance-trader

Adım 2: Sanal Ortam Oluşturun (Önerilen)

python -m venv venv
source venv/bin/activate  # Linux/Mac
# veya
venv\Scripts\activate  # Windows

Not: Sanal ortam kullanımı NumPy 2.x uyumluluğu için kritik önem taşır.

Adım 3: Bağımlılıkları Yükleyin

pip install -r requirements.txt

Adım 4: Konfigürasyon Dosyalarını Hazırlayın

# Konfigürasyon dosyasını kopyalayın
cp config/config.example.json config/config.json

# Haber takvimi dosyasını kopyalayın (opsiyonel)
cp config/news_calendar.example.json config/news_calendar.json

# .env dosyasını oluşturun (opsiyonel)
touch .env

Adım 5: Storage Klasörünü Oluşturun

mkdir -p storage

.env Konfigürasyonu

Bot, aşağıdaki ortam değişkenlerini destekler:

# Binance API Anahtarları (opsiyonel - paper test için gerekli değil)
BINANCE_API_KEY=your_api_key_here
BINANCE_API_SECRET=your_api_secret_here

# Telegram Bildirimleri (opsiyonel)
TELEGRAM_BOT_TOKEN=your_bot_token_here
TELEGRAM_CHAT_ID=your_chat_id_here

# OpenAI API (GPT araçları için)
OPENAI_API_KEY=your_openai_key_here
OPENAI_BASE_URL=https://api.openai.com/v1  # opsiyonel

Not: API anahtarları olmadan da bot paper test modunda çalışabilir.

Çalışma Modları

1. Paper Test Modu (Varsayılan)

# Sanal ortamı aktifleştirin
source venv/bin/activate

# PYTHONPATH ayarlayın ve çalıştırın
PYTHONPATH=/path/to/binance-trader python main.py
  • Gerçek para kullanmaz
  • Simüle edilmiş fiyat verileri ile çalışır
  • Tüm strateji ve risk kontrolleri aktif
  • SQLite veritabanında işlem logları tutar

2. Live Trading Modu

# Sanal ortamı aktifleştirin
source venv/bin/activate

# .env dosyasında API anahtarlarınızı ayarlayın
BINANCE_API_KEY=your_key
BINANCE_API_SECRET=your_secret

# config.json'da dry_run: false yapın
PYTHONPATH=/path/to/binance-trader python main.py

3. Testnet Modu

# Sanal ortamı aktifleştirin
source venv/bin/activate

# config.json'da use_testnet: true yapın
PYTHONPATH=/path/to/binance-trader python main.py

Paper Test

Paper Test, trading botunuzun stratejisini gerçek para kullanmadan geçmiş veriler üzerinde simüle ederek performansını değerlendirmenizi sağlar. Bu sayede:

  • Risk-Free Test: Gerçek para kaybetme riski olmadan strateji testi
  • Performans Analizi: Botun karlılığını, win rate'ini ve risk metriklerini ölçme
  • Strateji Optimizasyonu: Farklı parametrelerle test yaparak en iyi ayarları bulma
  • Güven Testi: Live trading'e geçmeden önce botun güvenilirliğini doğrulama

Paper test, tüm teknik indikatörleri (EMA, RSI, ATR, Bollinger Bands, ADX), risk yönetimi kontrollerini (stop loss, take profit, drawdown) ve emir yürütme mekanizmalarını simüle eder.

Otomatik Paper Test

# Sanal ortamı aktifleştirin
source venv/bin/activate

# PYTHONPATH ayarlayın ve testi çalıştırın
PYTHONPATH=/path/to/binance-trader python tools/paper_test.py --symbols "ETH/USDT,BTC/USDT" --bars 1000 --spread-bps 0.1

Parametreler

  • --symbols: Test edilecek semboller (virgülle ayrılmış, tırnak içinde)
  • --bars: Kullanılacak geçmiş veri miktarı
  • --spread-bps: Simüle edilecek spread (bps cinsinden)

Örnek Kullanım

# Tek sembol testi
PYTHONPATH=/path/to/binance-trader python tools/paper_test.py --symbols "ETH/USDT" --bars 500 --spread-bps 2.0

# Çoklu sembol testi
PYTHONPATH=/path/to/binance-trader python tools/paper_test.py --symbols "ETH/USDT,BTC/USDT,SOL/USDT" --bars 1000 --spread-bps 1.5

Test Sonuçları

  • Detaylı performans metrikleri
  • Win rate ve PnL analizi
  • Risk metrikleri
  • Slippage analizi

GPT Araçları

Konfigürasyon Asistanı

# Sanal ortamı aktifleştirin
source venv/bin/activate

# PYTHONPATH ayarlayın ve çalıştırın
PYTHONPATH=/path/to/binance-trader python tools/nl2config.py "Daha agresif bir strateji istiyorum, RSI 80'de sat"

Rapor Asistanı

source venv/bin/activate
PYTHONPATH=/path/to/binance-trader python tools/summarize_day.py

What-If Analizi

source venv/bin/activate
PYTHONPATH=/path/to/binance-trader python tools/what_if.py

GPT Konfigürasyonu

config.json dosyasında GPT ayarları:

{
  "gpt": {
    "enabled": true,
    "model": "gpt-4o-mini",
    "temperature": 0.2,
    "base_url": "https://api.openai.com/v1"
  }
}

Raporlama ve Bildirimler

Günlük Raporlar

  • Otomatik olarak her gün UTC 00:00'da oluşturulur
  • Performans metrikleri, PnL, win rate
  • Risk metrikleri ve uyarılar
  • Telegram'a otomatik gönderim (yapılandırılmışsa)

Telegram Bildirimleri

# .env dosyasında
TELEGRAM_BOT_TOKEN=your_bot_token
TELEGRAM_CHAT_ID=your_chat_id

Bildirim Türleri

  • Günlük performans raporları
  • Risk limiti aşımları
  • Cooldown tetiklenmeleri
  • Günlük drawdown durdurmaları
  • Haber penceresi uyarıları

Manuel Rapor Oluşturma

python -c "
from reporting.reporter import generate_daily_report
from core.db import DBLogger
from datetime import datetime, timezone

db = DBLogger('storage/trading.db')
report = generate_daily_report(db, datetime.now(timezone.utc))
print(report)
"

Konfigürasyon Referansı

Ana Konfigürasyon (config.json)

Risk Ayarları

{
  "risk": {
    "per_trade_risk_pct": 0.004,        // İşlem başına risk (%)
    "portfolio_risk_pct": 0.01,         // Portföy riski (%)
    "daily_dd_stop_pct": 0.015,         // Günlük DD durdurma (%)
    "cooldown_minutes": 20,             // Cooldown süresi (dakika)
    "max_spread_bps": 3,                // Maksimum spread (bps)
    "max_consecutive_losses": 3,         // Maksimum ardışık kayıp
    "slippage_window": 20,              // Slippage pencere boyutu
    "slippage_threshold_bps": 2.0,      // Slippage eşiği (bps)
    "correlation_threshold": 0.8,       // Korelasyon eşiği
    "correlation_cache_seconds": 300    // Korelasyon cache süresi
  }
}

Strateji Ayarları

{
  "strategy": {
    "use_atr_band": true,               // ATR bant kullanımı
    "atr_period": 14,                   // ATR periyodu
    "atr_k": 0.6,                       // ATR katsayısı
    "bb_period": 20,                    // Bollinger Bands periyodu
    "bb_k": 2.0,                        // Bollinger Bands katsayısı
    "ema_fast": 20,                     // Hızlı EMA periyodu
    "ema_slow": 50,                     // Yavaş EMA periyodu
    "adx_period": 14,                   // ADX periyodu
    "adx_trend_threshold": 18,          // ADX trend eşiği
    "rsi_period": 14,                   // RSI periyodu
    "rsi_overbought": 70,               // RSI aşırı alım seviyesi
    "rsi_oversold": 30,                 // RSI aşırı satım seviyesi
    "vwap_confirmation": true,          // VWAP onayı
    "microprice_k": 0.25,               // Microprice katsayısı
    "ttl_seconds": 7,                   // Emir TTL (saniye)
    "min_depth_notional": 5000          // Minimum derinlik (USDT)
  }
}

Operasyonel Ayarlar

{
  "ops": {
    "prometheus_port": 9108,            // Prometheus portu
    "log_level": "INFO",                // Log seviyesi
    "api_base_url": "https://api.binance.com",
    "ws_base_url": "wss://stream.binance.com:9443",
    "use_testnet": false                // Testnet kullanımı
  }
}

Sermaye Ayarları

{
  "capital": {
    "base_capital_usd": 2000,           // Temel sermaye (USDT)
    "max_symbols_concurrent": 1         // Maksimum eşzamanlı sembol
  }
}

Haber Takvimi (news_calendar.json)

[
  {
    "name": "FOMC Rate Decision",
    "start_utc": "2025-09-17T18:00:00Z",
    "end_utc": "2025-09-17T19:30:00Z",
    "severity": "high"
  }
]

Veri ve Log Yapısı

SQLite Veritabanı

  • Dosya Konumu: storage/trading.db
  • Tablo Yapısı:
    • signals: Sinyal logları
    • fills: Dolum logları
    • pnl: PnL kayıtları
    • errors: Hata logları
    • orders: Emir logları

Log Dosyaları

  • Konum: logs/ klasörü
  • Format: Günlük rotasyon
  • Seviyeler: DEBUG, INFO, WARNING, ERROR

Veri Yapısı

storage/
├── trading.db          # Ana veritabanı
├── test_trading.db     # Test veritabanı
└── logs/               # Log dosyaları
    ├── trading_2024-01-01.log
    └── trading_2024-01-02.log

Performans Metrikleri

  • Win Rate: Kazançlı işlem oranı
  • Sharpe Ratio: Risk-ayarlı getiri
  • Maximum Drawdown: Maksimum düşüş
  • Slippage: Ortalama slippage (bps)
  • Correlation: Sembol korelasyonları

Güvenlik Notları

API Güvenliği

  • IP Kısıtlaması: Binance API'de IP kısıtlaması kullanın
  • İzin Sınırları: Sadece Spot Trading izinleri verin
  • Testnet: Önce testnet'te test edin
  • Küçük Miktarlar: Başlangıçta küçük miktarlarla test edin

Risk Yönetimi

  • Stop Loss: Her zaman stop loss kullanın
  • Pozisyon Boyutu: Sermayenizin %1-2'sinden fazla risk almayın
  • Diversifikasyon: Tek sembole odaklanmayın
  • Monitoring: Botu düzenli olarak izleyin

Veri Güvenliği

  • Backup: Veritabanını düzenli yedekleyin
  • Encryption: Hassas verileri şifreleyin
  • Access Control: Dosya izinlerini sınırlayın

Operasyonel Güvenlik

  • Uptime: Sunucu uptime'ını izleyin
  • Alerts: Kritik durumlar için uyarılar kurun
  • Updates: Sistemi güncel tutun
  • Documentation: Değişiklikleri dokümante edin

Teknik Terimler Sözlüğü

Temel Terimler

  • API (Application Programming Interface): Uygulamalar arası iletişim arayüzü
  • Arbitraj: Farklı borsalarda fiyat farkından kar elde etme
  • Ask Price: Satış fiyatı (en düşük satış teklifi)
  • Bid Price: Alış fiyatı (en yüksek alış teklifi)
  • Spread: Bid-ask fiyat farkı
  • Volume: İşlem hacmi
  • Market Cap: Piyasa değeri

Teknik Analiz

  • ATR (Average True Range): Ortalama gerçek aralık, volatilite ölçümü
  • Bollinger Bands: Fiyat bantları, volatilite ve aşırı alım/satım göstergesi
  • EMA (Exponential Moving Average): Üstel hareketli ortalama
  • RSI (Relative Strength Index): Göreceli güç endeksi, momentum göstergesi
  • VWAP (Volume Weighted Average Price): Hacim ağırlıklı ortalama fiyat
  • ADX (Average Directional Index): Trend gücü göstergesi
  • MACD: Hareketli ortalama yakınsama/ıraksama göstergesi

Trading Terimleri

  • Long Position: Uzun pozisyon (alış)
  • Short Position: Kısa pozisyon (satış)
  • Liquidity: Likidite, piyasa derinliği
  • Slippage: Beklenen fiyat ile gerçekleşen fiyat arasındaki fark
  • Maker: Likidite sağlayan (emir defterine emir koyan)
  • Taker: Likidite alan (mevcut emri eşleştiren)
  • Order Book: Emir defteri
  • Depth: Piyasa derinliği

Risk Yönetimi

  • Drawdown (DD): Maksimum düşüş, portföy değerindeki en büşük düşüş
  • Stop Loss: Zarar durdurma emri
  • Take Profit: Kar alma emri
  • Position Sizing: Pozisyon boyutlandırma
  • Correlation: Korelasyon, varlıklar arası ilişki
  • Volatility: Volatilite, fiyat değişkenliği
  • Sharpe Ratio: Risk-ayarlı getiri oranı

Bot Terimleri

  • Paper Trading: Sanal trading, gerçek para kullanmadan test
  • Backtesting: Geçmiş verilerle strateji testi
  • Live Trading: Gerçek para ile trading
  • Dry Run: Test modu
  • TTL (Time To Live): Emir yaşam süresi
  • Cancel/Replace: Emir iptal etme ve yenileme
  • Microprice: Bid-ask arası optimal fiyat

Veri Terimleri

  • Kline/Candlestick: Mum grafik verisi
  • OHLCV: Open, High, Low, Close, Volume
  • WebSocket: Gerçek zamanlı veri akışı
  • REST API: HTTP tabanlı API
  • JSON: Veri formatı
  • SQLite: Hafif veritabanı sistemi

Piyasa Terimleri

  • Spot Trading: Anında teslimat trading
  • Futures: Vadeli işlemler
  • Margin Trading: Kaldıraçlı trading
  • Liquidation: Tasfiye, pozisyon kapatma
  • Funding Rate: Finansman oranı
  • Open Interest: Açık pozisyon hacmi

Binance Özel Terimleri

  • USDT: Tether, USD'ye sabitlenmiş kripto para
  • BNB: Binance Coin
  • Testnet: Test ağı
  • Mainnet: Ana ağ
  • API Key: API anahtarı
  • API Secret: API gizli anahtarı
  • User Data Stream: Kullanıcı veri akışı
  • Depth Stream: Derinlik akışı

Performans Metrikleri

  • PnL (Profit and Loss): Kar/zarar
  • Win Rate: Kazanma oranı
  • Average Win: Ortalama kazanç
  • Average Loss: Ortalama kayıp
  • Profit Factor: Kar faktörü
  • Maximum Drawdown: Maksimum düşüş
  • Recovery Factor: Toparlanma faktörü
  • Calmar Ratio: Calmar oranı

Zaman Terimleri

  • UTC: Koordineli evrensel zaman
  • Timezone: Zaman dilimi
  • Cron: Zamanlanmış görev
  • Real-time: Gerçek zamanlı
  • Historical Data: Geçmiş veri
  • Live Data: Canlı veri
  • Batch Processing: Toplu işlem

Bu sözlük, trading bot projesinde kullanılan teknik terimleri kapsamlı bir şekilde açıklamaktadır. Yeni terimler eklendikçe bu sözlük güncellenebilir.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages