Bu Python kodu, belirli hisse senetlerinin RSI (Relative Strength Index) değerlerini hesaplamak ve bu değerlere göre alım-satım sinyalleri üretmek için tasarlanmıştır. Kod, finansal veri analizi ve yatırım kararları almak isteyenler için oldukça faydalı bir araçtır. İşte kodun işleyişi ve temel bileşenleri hakkında detaylı bir açıklama:
Hisse Senedi Sembolleri
Kodun başında, Türkiye borsa endeksinde işlem gören çeşitli hisse senetlerinin sembolleri bir liste halinde tanımlanmıştır. Bu semboller, yatırımcıların takip etmek istediği şirketleri temsil eder. Örneğin, “AKBNK.IS” Akbank’ı, “THYAO.IS” ise Türk Hava Yolları’nı temsil eder.
RSI Hesaplama Fonksiyonu
RSI, bir varlığın aşırı alım veya aşırı satım durumunu belirlemek için kullanılan bir teknik analiz göstergesidir. Kodda, calculate_rsi
adlı bir fonksiyon tanımlanmıştır. Bu fonksiyon, hisse senedinin kapanış fiyatları arasındaki değişimleri analiz ederek RSI değerini hesaplar. Fonksiyon, belirli bir zaman diliminde (genellikle 14 gün) kazanç ve kayıpları değerlendirir ve bu verileri kullanarak RSI değerini üretir.
Veri Alma ve İşleme
Kod, yfinance
kütüphanesini kullanarak her bir hisse senedinin son 6 aylık tarihsel verilerini alır. yf.download
fonksiyonu ile bu veriler çekilir. Her hisse için RSI değeri hesaplandıktan sonra, en son RSI değeri alınır ve bu değere göre alım-satım sinyalleri belirlenir. Eğer RSI değeri 70’in üzerindeyse “Güçlü Sat”, 50 ile 70 arasında ise “Sat”, 30’un altında ise “Güçlü Al” sinyali verilir. Bu sinyaller, yatırımcılara hangi hisse senetlerinin alım veya satım için uygun olduğunu gösterir.
Sonuçların Saklanması ve Gösterimi
Hesaplanan RSI değerleri ve sinyaller, bir listeye eklenir ve sonunda bu liste bir pandas DataFrame’e dönüştürülür. DataFrame, hisse senedi sembollerine göre sıralanır ve tüm sonuçlar ekrana yazdırılır. Bu aşama, kullanıcıların sonuçları kolayca incelemesine olanak tanır.
Kullanım Alanları
Bu tür bir analiz, yatırımcıların piyasa trendlerini anlamalarına ve daha bilinçli yatırım kararları almalarına yardımcı olur. Özellikle teknik analizle ilgilenen yatırımcılar için RSI gibi göstergeler, alım-satım stratejilerini geliştirmek için önemli bir araçtır. Ayrıca, bu kodun özelleştirilmesi ve farklı göstergelerle birleştirilmesi, daha kapsamlı bir analiz yapma imkanı sunar.
Sonuç olarak, bu Python kodu, hisse senedi yatırımcıları için pratik bir araç sunmakta ve piyasa analizlerini kolaylaştırmaktadır. Yatırımcılar, bu tür analizleri kullanarak daha etkili stratejiler geliştirebilir ve piyasa hareketlerine daha iyi yanıt verebilirler.
import pandas as pd
import yfinance as yf
# Hisse senedi sembolleri
tickers = [
"AEFES.IS", "AGHOL.IS", "AGROT.IS", "AKBNK.IS", "AKFGY.IS", "AKFYE.IS",
"AKSEN.IS", "ALARK.IS", "ALFAS.IS", "ARCLK.IS", "ARDYZ.IS", "ASELS.IS",
"ASTOR.IS", "BERA.IS", "BFREN.IS", "BIMAS.IS", "BINHO.IS", "BRSAN.IS",
"BRYAT.IS", "BTCIM.IS", "CANTE.IS", "CCOLA.IS", "CIMSA.IS", "CWENE.IS",
"DOAS.IS", "DOHOL.IS", "ECILC.IS", "ECZYT.IS", "EGEEN.IS", "EKGYO.IS",
"ENERY.IS", "ENJSA.IS", "ENKAI.IS", "EREGL.IS", "EUPWR.IS", "EUREN.IS",
"FROTO.IS", "GARAN.IS", "GESAN.IS", "GOLTS.IS", "GUBRF.IS", "HALKB.IS",
"HEKTS.IS", "ISCTR.IS", "ISGYO.IS", "ISMEN.IS", "IZENR.IS", "KAYSE.IS",
"KCAER.IS", "KCHOL.IS", "KLSER.IS", "KONTR.IS", "KOZAA.IS", "KOZAL.IS",
"KRDMD.IS", "KTLEV.IS", "LMKDC.IS", "MAVI.IS", "MGROS.IS", "MIATK.IS",
"OBAMS.IS", "ODAS.IS", "OTKAR.IS", "OYAKC.IS", "PEKGY.IS", "PETKM.IS",
"PGSUS.IS", "QUAGR.IS", "REEDR.IS", "SAHOL.IS", "SASA.IS", "SDTTR.IS",
"SISE.IS", "SKBNK.IS", "SMRTG.IS", "SOKM.IS", "TABGD.IS", "TAVHL.IS",
"TCELL.IS", "THYAO.IS", "TKFEN.IS", "TKNSA.IS", "TMSN.IS", "TOASO.IS",
"TSKB.IS", "TTKOM.IS", "TTRAK.IS", "TUKAS.IS", "TUPRS.IS", "TURSG.IS",
"ULKER.IS", "VAKBN.IS", "VESBE.IS", "VESTL.IS", "YEOTK.IS", "YKBNK.IS",
"YYLGD.IS", "ZOREN.IS"
]
# RSI hesaplama fonksiyonu
def calculate_rsi(data, window=14):
delta = data['Close'].diff()
gain = (delta.where(delta > 0, 0)).rolling(window=window).mean()
loss = (-delta.where(delta < 0, 0)).rolling(window=window).mean()
rs = gain / loss
rsi = 100 - (100 / (1 + rs))
return rsi
# Sonuçları tutacak DataFrame
results = []
# Her hisse için veri al ve RSI hesapla
for ticker in tickers:
try:
# Tarihsel verileri al
data = yf.download(ticker, period='6mo')
data['RSI'] = calculate_rsi(data)
# En son RSI değerini al
latest_rsi = data['RSI'].iloc[-1]
# Sinyali belirle
if latest_rsi > 70:
signal = 'Güçlü Sat'
elif latest_rsi > 50:
signal = 'Sat'
elif latest_rsi < 30:
signal = 'Güçlü Al'
else:
signal = 'Al'
results.append({
'Hisse': ticker,
'RSI Değeri': latest_rsi,
'Sinyal': signal
})
except Exception as e:
# Veri alınamazsa "Veri Yok" olarak ekle
results.append({
'Hisse': ticker,
'RSI Değeri': 'Veri Yok',
'Sinyal': 'Veri Yok'
})
# Sonuçları DataFrame'e çevir
results_df = pd.DataFrame(results)
# DataFrame'i hisse ismine göre sırala
results_df.sort_values(by='Hisse', inplace=True)
# Tüm DataFrame'i göster
pd.set_option('display.max_rows', None)
print(results_df)