vericek

binance bnb verisi cekme
 avatar
neron
plain_text
14 days ago
3.5 kB
6
Indexable
Never
import ccxt
import numpy as np
import pandas as pd
import pandas_ta as ta

# Binance borsasına bağlanın
exchange = ccxt.binanceusdm()

# İşlem yapacağınız sembolleri liste olarak tanımlayın
symbols = ['BNB/USDT']
timeframe = '3m'  # Zaman dilimi
limit = 100  # Kaç veri noktası almak istediğinizi belirleyin
ma_period = 10  # Hareketli ortalama süresi

for symbol in symbols:
    # Veri alın
    ohlcv = exchange.fetch_ohlcv(symbol, timeframe, limit=limit)

    # Veriyi DataFrame'e dönüştürün
    df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])

    # Sembol bilgisi ekleyin
    df['symbol'] = symbol

    # Timestamp'i okunabilir bir formata dönüştürün
    df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')

    # RSI hesaplaması
    df['rsi'] = ta.rsi(df['close'], length=14)

    # Bollinger Band hesaplamaları
    bbands = ta.bbands(df['close'], length=20, std=2)
    df['bb_upper'] = bbands['BBU_20_2.0']
    df['bb_middle'] = bbands['BBM_20_2.0']
    df['bb_lower'] = bbands['BBL_20_2.0']

    # Bollinger Band sinyali
    df['bollinger_flag'] = np.where(df['close'] > df['bb_upper'], 1, 
                                    np.where(df['close'] < df['bb_lower'], -1, 0))

    # Stochastic Oscillator hesaplamaları
    stoch = ta.stoch(df['high'], df['low'], df['close'], k=14, d=3)
    df['stoch_k'] = stoch['STOCHk_14_3_3']
    df['stochastic_flag'] = np.where(df['stoch_k'] < 20, -1, 
                                     np.where(df['stoch_k'] > 80, 1, 0))

    # MACD hesaplamaları
    macd = ta.macd(df['close'], fast=12, slow=26, signal=9)
    df['macd_line'] = macd['MACD_12_26_9']
    df['macd_signal_line'] = macd['MACDs_12_26_9']
    df['macd_hist'] = macd['MACDh_12_26_9']

    # MACD sinyali
    df['macd_signal'] = np.where((df['macd_line'].shift(1) < df['macd_signal_line'].shift(1)) & 
                                 (df['macd_line'] > df['macd_signal_line']), 1, 
                                 np.where((df['macd_line'].shift(1) > df['macd_signal_line'].shift(1)) & 
                                          (df['macd_line'] < df['macd_signal_line']), -1, 0))

    # Hareketli Ortalama (MA) hesaplaması
    df['ma'] = ta.sma(df['close'], length=ma_period)
    df['ma_flag'] = np.where(df['close'] > df['ma'], 1, 0)

    # Mumun büyüklüğü (body size) hesaplaması
    df['body_size'] = np.abs(df['close'] - df['open']).round(2)

    # Kapanış fiyatı farkı (unit difference) ve yüzdesel fark (percentage difference) hesaplaması
    df['unit_diff'] = df['close'].diff().round(2)
    df['percent_diff'] = (df['unit_diff'] / df['close'].shift(1) * 100).round(2)

    # Yüksek ve düşük fiyat farklarını hesaplama (açılış fiyatına göre yüzdelik fark)
    df['percent_high_diff'] = ((df['high'] - df['open']) / df['open'] * 100).round(2)
    df['percent_low_diff'] = ((df['low'] - df['open']) / df['open'] * 100).round(2)

    # CSV dosyasına kaydedin, sembol adına göre dosya adını belirleyin
    filename = f'{symbol.replace("/", "_")}_veri.csv'
    df.to_csv(filename, index=False)

    print(f'{symbol} için veri başarıyla kaydedildi.')
    print(df[['timestamp', 'symbol', 'close', 'rsi', 'bollinger_flag', 'stochastic_flag', 
              'macd_signal', 'ma_flag', 'body_size', 'volume', 'unit_diff', 
              'percent_diff', 'percent_high_diff', 'percent_low_diff']].head(25))
Leave a Comment