Hisse Senedi Analizi: MACD Sinyalleri
Bu Python kodu, yatırımcılar ve finansal analistler için önemli bir teknik analiz aracı olan MACD (Hareketli Ortalama Yakınsama Diverjansı) göstergelerini hesaplamak ve analiz etmek amacıyla geliştirilmiştir. Hisse senedi piyasalarında işlem yaparken, yatırımcıların fiyat hareketlerini anlamaları ve gelecekteki fiyat yönelimlerini tahmin etmeleri kritik öneme sahiptir. MACD, bu tür analizlerde sıklıkla kullanılan bir göstergedir ve fiyat hareketlerinin momentumunu belirlemeye yardımcı olur.
Kodun Özellikleri:
- Hisse Senedi Listesi: Kod, Türkiye borsa endeksinde işlem gören çeşitli hisse senetlerinin kısaltmalarını içeren bir liste ile başlar. Bu hisse senetleri, yatırımcıların ilgisini çekebilecek popüler şirketleri temsil eder. Kullanıcılar, bu hisse senetleri üzerinden analiz yaparak, potansiyel alım veya satım fırsatlarını değerlendirebilirler.
- Veri Çekme:
yfinance
kütüphanesi kullanılarak, belirtilen hisse senetlerinin son 6 aylık fiyat verileri otomatik olarak indirilir. Bu, kullanıcıların güncel verilere erişimini sağlar. - MACD Hesaplama: Kod, her hisse senedi için MACD ve sinyal değerlerini hesaplar. MACD, kısa ve uzun dönemli üssel hareketli ortalamaların farkını temsil ederken, sinyal çizgisi bu MACD değerinin 9 günlük üssel hareketli ortalamasıdır.
- Al/Sat Sinyalleri: Hesaplanan MACD ve sinyal değerlerine dayanarak, her hisse senedi için “GÜÇLÜ AL”, “AL”, “GÜÇLÜ SAT”, “SAT” veya “NÖTR” gibi alım-satım sinyalleri belirlenir. Bu sinyaller, yatırımcılara potansiyel işlem fırsatları hakkında bilgi verir.
- Sonuçların Düzenlenmesi: Elde edilen sonuçlar, hisse senedi isimlerine göre A’dan Z’ye sıralanarak düzenli bir tablo formatında sunulur. Bu, kullanıcıların verileri daha kolay analiz etmesine olanak tanır.
Kullanım Alanları:
Bu kod, bireysel yatırımcılar, portföy yöneticileri ve finansal analistler için yararlı bir araçtır. Kullanıcılar, hisse senetlerinin teknik analizini yaparak daha bilinçli yatırım kararları alabilirler. Ayrıca, bu tür analizler, piyasa trendlerini anlamak ve potansiyel riskleri değerlendirmek için de kullanılabilir. Sonuç olarak, bu Python kodu, yatırımcıların piyasa dinamiklerini daha iyi anlamalarına ve stratejik kararlar almalarına yardımcı olmayı amaçlamaktadır.
Not: Bu kod deneme amaçlı yapılmış olup hataları ve eksikleri olabilir. Kesinlikle yatırım tavsiyesi içermemektedir. Herkes kendi kararını kendisi vermelidir.
import pandas as pd
import yfinance as yf
stocks = [
"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"
]
def calculate_macd(data):
short_ema = data['Close'].ewm(span=12, adjust=False).mean()
long_ema = data['Close'].ewm(span=26, adjust=False).mean()
macd = short_ema - long_ema
signal = macd.ewm(span=9, adjust=False).mean()
return macd, signal
results = []
for stock in stocks:
try:
data = yf.download(stock, period="6mo")
data['MACD'], data['Signal'] = calculate_macd(data)
last_macd = data['MACD'].iloc[-1]
last_signal = data['Signal'].iloc[-1]
if last_macd > last_signal and (last_macd - last_signal) > 0.5:
signal = "GÜÇLÜ AL"
elif last_macd > last_signal:
signal = "AL"
elif last_macd < last_signal and (last_signal - last_macd) > 0.5:
signal = "GÜÇLÜ SAT"
elif last_macd < last_signal:
signal = "SAT"
else:
signal = "NÖTR"
results.append((stock, last_macd, signal))
except Exception as e:
results.append((stock, None, f"Veri alınamadı: {e}"))
results.sort(key=lambda x: x[0])
results_df = pd.DataFrame(results, columns=["Hisse", "MACD", "Sinyal"])
print(results_df.to_string(index=False))