• 17-08-2025, 04:34:56
    #1
    S.a. arkadaşlar,

    Eğer BTC iyi çalışan bir indikatörüm var bunu nasıl değerlendirebilirim diyorsanız aşağıdaki python kodu ile tarama yapıp uygun olan çiftlerde ticaret yapabilirsiniz. BTC %1 yükselince %5 yükselen coinleri tespit edebilirsiniz mesela.



    Beta Katsayısı:
    Beta = 2.0 → BTC %1 yükselince coin %2 yükselir
    Beta = 5.0 → BTC %1 yükselince coin %5 yükselir
    Beta = -2.0 → BTC %1 yükselince coin %2 düşer

    Api anahtarına filan gerek yok. Gerekli kütüphaneleri yükleyin ve kullanın. Yatırım tavsiyesi filan değildir. Ayrıca Kolerasyon sayısı çok önemli. Kolerasyon > 0.5 olması daha iyidir.

    Örnek bir çıktı:





    Kodu claude yazdırdım, biraz düzenleme yaptım. İşine yarayan varsa alsın kullansın helali hoş olsun.
    r10 da Kodlar düzgün çıkmıyor. Buradan indirebilirsiniz. https://dosya.co/3u5ib7mm0tgx/beta.py.html
    Hadi iyi geceler hoşça kalın, komşuda pişer bize de düşer.

    import ccxt
    import pandas as pd
    import numpy as np
    from datetime import datetime, timedelta
    import time
    from scipy import stats
    import warnings
    warnings.filterwarnings('ignore')
    
    class CryptoBetaAnalyzer:
        def __init__(self, exchange_name='binance'):
            """
            Kripto para beta analizi için sınıf (BTC'ye göre kaç kat hareket ediyor)
            """
            self.exchange = getattr(ccxt, exchange_name)({
                'rateLimit': 1200,
                'enableRateLimit': True,
            })
            
        def get_kline_data(self, symbol, timeframe='15m', limit=100):
            """
            Belirli bir coin için 15 dakikalık kline verilerini alır
            """
            try:
                ohlcv = self.exchange.fetch_ohlcv(symbol, timeframe, limit=limit)
                df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
                df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
                df['price_change_pct'] = df['close'].pct_change() * 100  # Yüzde olarak
                return df
            except Exception as e:
                print(f"Hata {symbol}: {e}")
                return None
        
        def get_popular_coins(self, base_currency='USDT', limit=50):
            """
            Popüler coinlerin listesini alır
            """
            try:
                markets = self.exchange.load_markets()
                usdt_pairs = [symbol for symbol in markets.keys()
                             if symbol.endswith(f'/{base_currency}') and
                             not any(x in symbol for x in ['UP', 'DOWN', 'BULL', 'BEAR', 'USDC', 'BUSD', 'TUSD'])]
                
                # Volume'a göre sırala (yaklaşık)
                popular_coins = usdt_pairs[:limit]
                return popular_coins
            except Exception as e:
                print(f"Market verileri alınırken hata: {e}")
                return []
        
        def calculate_beta_and_volatility(self, btc_data, coin_data):
            """
            Beta katsayısı ve volatilite oranını hesaplar
            BTC %1 hareket ettiğinde coin kaç % hareket ediyor?
            """
            if btc_data is None or coin_data is None:
                return 0, 0, 0, 0
            
            # Temiz veri
            btc_clean = btc_data.dropna(subset=['price_change_pct'])
            coin_clean = coin_data.dropna(subset=['price_change_pct'])
            
            if len(btc_clean) < 10 or len(coin_clean) < 10:
                return 0, 0, 0, 0
            
            # Zaman damgalarına göre eşleştir
            merged = pd.merge(btc_clean[['timestamp', 'price_change_pct']],
                             coin_clean[['timestamp', 'price_change_pct']],
                             on='timestamp', suffixes=('_btc', '_coin'))
            
            if len(merged) < 10:
                return 0, 0, 0, 0
            
            try:
                # Beta hesaplama (regresyon eğimi)
                slope, intercept, r_value, p_value, std_err = stats.linregress(
                    merged['price_change_pct_btc'],
                    merged['price_change_pct_coin']
                )
                
                beta = slope  # BTC %1 değiştiğinde coin ne kadar değişiyor
                correlation = r_value
                
                # Ortalama volatilite oranı
                btc_moves = merged['price_change_pct_btc'][merged['price_change_pct_btc'].abs() > 0.1]
                coin_moves = merged['price_change_pct_coin'][merged['price_change_pct_btc'].abs() > 0.1]
                
                if len(btc_moves) > 0:
                    avg_volatility_ratio = (coin_moves.abs().mean() / btc_moves.abs().mean())
                else:
                    avg_volatility_ratio = 0
                    
                return beta, correlation, p_value, avg_volatility_ratio
                
            except:
                return 0, 0, 0, 0
        
        def analyze_beta_coins(self, timeframe='15m', limit=100, top_coins=40):
            """
            Ana beta analizi fonksiyonu
            """
            print("🚀 BETA ANALİZİ BAŞLATIILIYOR...")
            print("📊 BTC'nin %1 hareketiyle coinlerin kaç kat hareket ettiği hesaplanıyor...\n")
            
            # BTC verilerini al
            print("📈 Bitcoin verilerini alıyor...")
            btc_data = self.get_kline_data('BTC/USDT', timeframe, limit)
            if btc_data is None:
                print("❌ Bitcoin verileri alınamadı!")
                return None
            
            # Popüler coinleri al
            print(f"🎯 Top {top_coins} coin listesi alınıyor...")
            popular_coins = self.get_popular_coins(limit=top_coins)
            
            beta_results = []
            
            print(f"⚡ {len(popular_coins)} coin için beta hesaplanıyor...\n")
            
            for i, symbol in enumerate(popular_coins):
                if 'BTC' in symbol:
                    continue
                    
                print(f"  📊 {i+1:2d}/{len(popular_coins)}: {symbol:<15}", end=" ")
                
                coin_data = self.get_kline_data(symbol, timeframe, limit)
                beta, correlation, p_value, volatility_ratio = self.calculate_beta_and_volatility(btc_data, coin_data)
                
                # Anlamlı sonuçları filtrele
                if abs(beta) > 0.5 and abs(correlation) > 0.3 and p_value < 0.1:
                    beta_results.append({
                        'symbol': symbol.replace('/USDT', ''),
                        'beta': beta,
                        'correlation': correlation,
                        'p_value': p_value,
                        'volatility_ratio': volatility_ratio,
                        'risk_level': self.get_risk_level(beta, volatility_ratio)
                    })
                    print(f"✅ Beta: {beta:+.2f}x | Korelasyon: {correlation:.3f}")
                else:
                    print("⚪ Düşük anlamlılık")
                
                time.sleep(0.1)  # Rate limit
            
            # Sonuçları beta'ya göre sırala
            beta_results.sort(key=lambda x: abs(x['beta']), reverse=True)
            
            return beta_results, btc_data
        
        def get_risk_level(self, beta, volatility_ratio):
            """Risk seviyesi belirle"""
            if abs(beta) > 3:
                return "🔥 Aşırı Yüksek"
            elif abs(beta) > 2:
                return "⚡ Yüksek"
            elif abs(beta) > 1.5:
                return "📈 Orta-Yüksek"
            elif abs(beta) > 1:
                return "📊 Orta"
            else:
                return "🔵 Düşük"
        
        def display_beta_results(self, beta_results, btc_data):
            """
            Beta sonuçlarını göster
            """
            if not beta_results:
                print("❌ Anlamlı beta bulunamadı!")
                return
            
            # BTC'nin son durumu
            btc_last_change = btc_data['price_change_pct'].iloc[-1]
            btc_trend = "📈 Yükseliş" if btc_last_change > 0 else "📉 Düşüş" if btc_last_change < 0 else "➡️ Yatay"
            
            print(f"\n{'='*80}")
            print(f"🎯 BITCOIN BETA ANALİZİ - KAÇ KAT HAREKET EDİYOR? (15dk)")
            print(f"{'='*80}")
            print(f"📊 BTC Son Değişim: {btc_last_change:+.2f}% ({btc_trend})")
            print(f"⏱️  Analiz Zamanı: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
            print(f"📋 Toplam Analiz Edilen: {len(beta_results)} coin")
            
            # Yüksek Beta'lı coinler (BTC ile aynı yöne ama daha fazla)
            print(f"\n{'='*80}")
            print("🚀 YÜKSEK BETA COİNLER - BTC'den FAZLA HAREKET EDENLER")
            print(f"{'='*80}")
            print("💡 BTC %1 yükseldiğinde bu coinler daha fazla yükselir!")
            print("💡 BTC %1 düştüğünde bu coinler daha fazla düşer!")
            print(f"{'Sıra':<4} {'Coin':<8} {'Beta':<8} {'Açıklama':<25} {'Risk':<15} {'Korelasyon':<12}")
            print("-" * 80)
            
            high_beta = [c for c in beta_results if c['beta'] > 1][:15]
            for i, coin in enumerate(high_beta, 1):
                explanation = f"BTC %1 → {coin['symbol']} %{coin['beta']:+.1f}"
                print(f"{i:<4} {coin['symbol']:<8} {coin['beta']:>+.2f}x   {explanation:<25} {coin['risk_level']:<15} {coin['correlation']:.3f}")
            
            # Negatif Beta'lı coinler (BTC'nin tersi)
            negative_beta = [c for c in beta_results if c['beta'] < -0.5]
            if negative_beta:
                print(f"\n{'='*80}")
                print("🔄 NEGATİF BETA COİNLER - BTC'nin TERSİ HAREKET EDENLER")
                print(f"{'='*80}")
                print("💡 BTC düştüğünde bu coinler yükselir!")
                print("💡 BTC yükseldiğinde bu coinler düşer!")
                print(f"{'Sıra':<4} {'Coin':<8} {'Beta':<8} {'Açıklama':<25} {'Risk':<15} {'Korelasyon':<12}")
                print("-" * 80)
                
                for i, coin in enumerate(negative_beta[:10], 1):
                    explanation = f"BTC %1 → {coin['symbol']} %{coin['beta']:+.1f}"
                    print(f"{i:<4} {coin['symbol']:<8} {coin['beta']:>+.2f}x   {explanation:<25} {coin['risk_level']:<15} {coin['correlation']:.3f}")
            
            # En volatil coinler
            print(f"\n{'='*80}")
            print("⚡ EN VOLATİL COİNLER - BÜYÜK HAREKETLER")
            print(f"{'='*80}")
            volatil_coins = sorted(beta_results, key=lambda x: x['volatility_ratio'], reverse=True)[:10]
            print(f"{'Sıra':<4} {'Coin':<8} {'Vol. Oranı':<12} {'Beta':<8} {'Açıklama':<30}")
            print("-" * 80)
            
            for i, coin in enumerate(volatil_coins, 1):
                explanation = f"{coin['volatility_ratio']:.1f}x daha fazla hareket ediyor"
                print(f"{i:<4} {coin['symbol']:<8} {coin['volatility_ratio']:>8.1f}x    {coin['beta']:>+.2f}x   {explanation:<30}")
            
            # Pratik öneriler
            print(f"\n{'='*80}")
            print("💰 PRATİK YATIRIM STRATEJİLERİ")
            print(f"{'='*80}")
            
            if btc_last_change > 0.5:
                print("📈 BTC YÜKSELİŞ TRENDİNDE:")
                top_positive = [c for c in high_beta if c['beta'] > 0][:5]
                print("   🎯 LONG İÇİN ÖNERİLER:")
                for coin in top_positive:
                    print(f"      • {coin['symbol']}: BTC %1 yükselirse ~%{coin['beta']:.1f} yükselir")
                    
            elif btc_last_change < -0.5:
                print("📉 BTC DÜŞÜŞ TRENDİNDE:")
                if negative_beta:
                    print("   🎯 LONG İÇİN ÖNERİLER (Ters korelasyon):")
                    for coin in negative_beta[:3]:
                        print(f"      • {coin['symbol']}: BTC %1 düşerse ~%{abs(coin['beta']):.1f} yükselir")
                
                print("   🎯 SHORT İÇİN ÖNERİLER:")
                top_positive = [c for c in high_beta if c['beta'] > 0][:3]
                for coin in top_positive:
                    print(f"      • {coin['symbol']}: BTC %1 düşerse ~%{coin['beta']:.1f} düşer")
            
            print(f"\n⚠️  ÖNEMLİ UYARILAR:")
            print("   • Beta katsayıları geçmiş verilere dayanır, gelecekte değişebilir")
            print("   • Yüksek beta = Yüksek risk & Yüksek getiri potansiyeli")
            print("   • Pozisyon büyüklüklernizi risk toleransınıza göre ayarlayın")
            print("   • Stop-loss kullanmayı unutmayın!")
    
    def main():
        """
        Ana çalıştırma fonksiyonu
        """
        analyzer = CryptoBetaAnalyzer()
        
        try:
            # Beta analizini çalıştır
            beta_results, btc_data = analyzer.analyze_beta_coins(
                timeframe='15m',    # 15 dakikalık
                limit=96,          # Son 24 saat
                top_coins=500       # Top 60 coin analiz et
            )
            
            # Sonuçları göster
            analyzer.display_beta_results(beta_results, btc_data)
            
            return beta_results
            
        except Exception as e:
            print(f"❌ Analiz sırasında hata oluştu: {e}")
            return None
    
    # Örnek kullanım
    if __name__ == "__main__":
        # Gerekli kütüphaneler: pip install ccxt pandas numpy scipy
        results = main()
        
        # Sonuçları daha detaylı görmek isterseniz:
        if results:
            print(f"\n📋 ÖNE ÇIKAN SONUÇLAR:")
            print(f"✅ En yüksek Beta: {max(results, key=lambda x: x['beta'])['symbol']} ({max(results, key=lambda x: x['beta'])['beta']:.2f}x)")
            print(f"📊 En volatil: {max(results, key=lambda x: x['volatility_ratio'])['symbol']} ({max(results, key=lambda x: x['volatility_ratio'])['volatility_ratio']:.1f}x)")
  • 17-08-2025, 04:41:37
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Eline emeğine sağlık hocam.

    Ben ne kodlar yazdırdım 3 yıldır ama paylaşasım gelmiyor..
  • 17-08-2025, 04:46:10
    #3
    Peace adlı üyeden alıntı: mesajı görüntüle
    Eline emeğine sağlık hocam.

    Ben ne kodlar yazdırdım 3 yıldır ama paylaşasım gelmiyor..
    Sağ olasın hocam. Zamanla paylaşırsın , pc de duracağına birinin işine yarar belki diyecek zamanlarda oluyor insan hayatında. Hatta bazı şeyleri ücretsiz paylaşmak bazen inanılmaz kapılarda açabilir. Network oluşturmak gibi mesela. Hayırlı geceler.
  • 17-08-2025, 05:09:20
    #4
    Üyeliği durduruldu
    Emeğine sağlık hocam
  • 17-08-2025, 05:09:47
    #5
    Eline sağlık, bunun daha gelişmişini eklenti olarak yaptım, ayrıca alda sinyal satta sinyal veriyor, al butonu çıkınca al dersen stoplos seviyesini söylüyor ve yapay zeka ile bu sinyali yorumluyor.
    Beğendiğim bir indikatöre bağladım ama içime sinmedi bir olmamışlık var.
    Belirlediğim ayarlarda marjin ve kar yetmiyor. 100k dolar ile günlük 500 1k dolar kazandırıyor. Attıgın taş ürküttüğün kuş misali…
  • 17-08-2025, 05:16:57
    #6
    GS0707 adlı üyeden alıntı: mesajı görüntüle
    Emeğine sağlık hocam
    Teşekkür ederim.

    TeoriKod adlı üyeden alıntı: mesajı görüntüle
    Eline sağlık, bunun daha gelişmişini eklenti olarak yaptım, ayrıca alda sinyal satta sinyal veriyor, al butonu çıkınca al dersen stoplos seviyesini söylüyor ve yapay zeka ile bu sinyali yorumluyor.
    Beğendiğim bir indikatöre bağladım ama içime sinmedi bir olmamışlık var.
    Belirlediğim ayarlarda marjin ve kar yetmiyor. 100k dolar ile günlük 500 1k dolar kazandırıyor. Attıgın taş ürküttüğün kuş misali…
    Teşekkürler. Aramızda büyük iş çevirenleri görmek sevindirici. Tecrübelerinizi aktarmanız dileği ile.