12 oct 2023
import pandas as pd import numpy as np # Super Trend hesaplama fonksiyonu def calculate_super_trend(data, atr_period, multiplier): tr = data['High'] - data['Low'] atr = tr.rolling(atr_period).mean() super_trend_upper = data['High'] - (multiplier * atr) super_trend_lower = data['Low'] + (multiplier * atr) data['SuperTrend'] = (super_trend_upper + super_trend_lower) / 2 return data # Bollinger Bands hesaplama fonksiyonu def calculate_bollinger_bands(data, window, num_std_dev): rolling_mean = data['Close'].rolling(window=window).mean() rolling_std = data['Close'].rolling(window=window).std() data['BollingerUpper'] = rolling_mean + (rolling_std * num_std_dev) data['BollingerLower'] = rolling_mean - (rolling_std * num_std_dev) return data # Veriyi yükle data = pd.read_csv('your_data.csv') data['Date'] = pd.to_datetime(data['Date']) data.set_index('Date', inplace=True) # Super Trend ve Bollinger Bands hesaplama atr_period = 14 multiplier = 1.0 bollinger_window = 20 num_std_dev = 2.0 data = calculate_super_trend(data, atr_period, multiplier) data = calculate_bollinger_bands(data, bollinger_window, num_std_dev) # Al-Sat kararları data['Buy_Signal'] = np.where(data['Close'] > data['SuperTrend'], 1, 0) data['Sell_Signal'] = np.where(data['Close'] < data['SuperTrend'], -1, 0) data['Buy_Signal'] = np.where(data['Close'] > data['BollingerUpper'], 1, data['Buy_Signal']) data['Sell_Signal'] = np.where(data['Close'] < data['BollingerLower'], -1, data['Sell_Signal']) # Al-Sat sinyallerini birleştirme data['Signal'] = data['Buy_Signal'] + data['Sell_Signal'] # Veriyi gösterme print(data)