Finansal piyasalarda yatırım yaparken, doğru analiz yöntemlerini kullanmak, yatırımcıların başarılı olmasında kritik bir rol oynar. Bu bağlamda, hisse senedi fiyatlarının trendlerini belirlemek, yatırım kararlarını etkileyen önemli bir faktördür. Özellikle düşen trendlerin tespit edilmesi, yatırımcıların potansiyel alım fırsatlarını değerlendirmelerine yardımcı olabilir. Bu yazıda, Python ile yazılmış bir kod örneği aracılığıyla düşen trendleri belirleme ve görselleştirme sürecini inceleyeceğiz.
Kodun Amacı ve İşleyişi
Aşağıda paylaşılan Python kodu, belirli hisse senedi sembollerinin fiyat verilerini analiz ederek düşen trendleri tespit etmeyi amaçlamaktadır. Kod, Yahoo Finance üzerinden hisse senedi verilerini çekmekte ve bu verileri kullanarak 20 günlük hareketli ortalamaları hesaplamaktadır. Düşen bir trendin yukarı doğru kesildiği noktaları belirleyerek, yatırımcılara potansiyel alım fırsatları sunmaktadır.
Veri Çekme Süreci
Kod, öncelikle bir dizi hisse senedi sembolü tanımlamaktadır. Ardından, bu semboller için Yahoo Finance üzerinden 2022 yılının başından 2023 yılının sonuna kadar olan kapanış fiyatları verileri çekilmektedir. Bu aşama, yatırımcıların analiz yapabilmesi için gerekli olan tarihsel verilerin toplanmasını sağlar.
Düşen Trendin Belirlenmesi
Düşen trendleri belirlemek için find_downtrend
adlı bir fonksiyon tanımlanmıştır. Bu fonksiyon, her bir hisse senedi için kapanış fiyatlarının 20 günlük hareketli ortalamasını hesaplar. Eğer trendin eğimi negatifse, bu durum düşen bir trendi işaret eder. Fonksiyon, ayrıca yukarı doğru kesen noktaları tespit ederek, düşen trendin potansiyel bir dönüşüm noktasını belirler. Bu noktalar, yatırımcılar için alım fırsatları olarak değerlendirilebilir.
Sonuçların Görselleştirilmesi
Kod, düşen trendleri yukarı doğru kesen hisse senetlerini belirledikten sonra, bu hisse senetlerinin kapanış fiyatları ve 20 günlük hareketli ortalamalarını görselleştirmektedir. Her bir hisse senedi için ayrı grafikler oluşturularak, yatırımcıların fiyat hareketlerini ve trend dönüşümlerini daha iyi anlamalarına olanak tanır. Grafikler, kapanış fiyatlarını mavi renkte, hareketli ortalamayı ise kırmızı renkte göstererek, trendin yönünü net bir şekilde ortaya koyar.
Sonuç
Bu Python kodu, yatırımcılara düşen trendleri belirleme ve analiz etme konusunda etkili bir araç sunmaktadır. Düşen trendlerin tespit edilmesi, yatırımcıların piyasa hareketlerini daha iyi anlamalarına ve stratejilerini buna göre belirlemelerine yardımcı olur. Ayrıca, bu tür teknik analizler, yatırımcıların risklerini minimize etmelerine ve potansiyel kazançlarını artırmalarına olanak tanır. Sonuç olarak, hisse senedi yatırımlarında daha bilinçli kararlar almak için bu tür araçların kullanılması büyük önem taşımaktadır.
Dikkat
Bu kodlar eğitim amaçlı yazılmış olup kesinlikle yatırım tavsiyesi içermemektedir. Kullanıcının başına gelebilecek her şeyden kendisi sorumludur.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import yfinance as yf
# Hisse senedi sembollerini tanımlayın
symbols = [
"ADESE.IS", "AFYON.IS", "AKCNS.IS", "AKFYE.IS", "AKSA.IS", "AKSEN.IS", "ALBRK.IS", "ALCTL.IS",
"ALKA.IS", "ALKIM.IS", "ANELE.IS", "ARASE.IS", "ARDYZ.IS", "ARENA.IS", "ASELS.IS", "ASGYO.IS",
"ASUZU.IS", "ATAKP.IS", "ATATP.IS", "ATEKS.IS", "AVPGY.IS", "AYEN.IS", "BAKAB.IS", "BANVT.IS",
"BARMA.IS", "BASGZ.IS", "BEGYO.IS", "BEYAZ.IS", "BIENY.IS", "BIMAS.IS", "BINHO.IS", "BIOEN.IS",
"BMSTL.IS", "BOBET.IS", "BORLS.IS", "BORSK.IS", "BOSSA.IS", "BRLSM.IS", "BUCIM.IS", "CANTE.IS",
"CCOLA.IS", "CEMAS.IS", "CEMTS.IS", "CIMSA.IS", "CLEBI.IS", "CMBTN.IS", "CWENE.IS", "DAPGM.IS",
"DARDL.IS", "DESA.IS", "DGGYO.IS", "DGNMO.IS", "DOAS.IS", "DYOBY.IS", "EBEBK.IS", "EGEPO.IS",
"EGGUB.IS", "EGPRO.IS", "EKOS.IS", "ELITE.IS", "ENJSA.IS", "ERCB.IS", "EREGL.IS", "ESCOM.IS",
"EUPWR.IS", "FMIZP.IS", "FONET.IS", "FZLGY.IS", "GENIL.IS", "GENTS.IS", "GEREL.IS", "GESAN.IS",
"GOLTS.IS", "GRSEL.IS", "GRTRK.IS", "GUBRF.IS", "HATSN.IS", "HKTM.IS", "HRKET.IS", "HUNER.IS",
"IEYHO.IS", "IHYAY.IS", "IMASM.IS", "INGRM.IS", "INTEM.IS", "ISDMR.IS", "ISKPL.IS", "ISSEN.IS",
"IZFAS.IS", "JANTS.IS", "KAREL.IS", "KARSN.IS", "KATMR.IS", "KAYSE.IS", "KBORU.IS", "KCAER.IS",
"KFEIN.IS", "KLKIM.IS", "KNFRT.IS", "KONKA.IS", "KONTR.IS", "KONYA.IS", "KOPOL.IS", "KOTON.IS",
"KRDMA.IS", "KRDMB.IS", "KRDMD.IS", "KRGYO.IS", "KRVGD.IS", "KTLEV.IS", "KUTPO.IS", "KUYAS.IS",
"KZBGY.IS", "LILAK.IS", "LINK.IS", "LKMNH.IS", "LOGO.IS", "LYDHO.IS", "MAKIM.IS", "MAVI.IS",
"MEDTR.IS", "MEGMT.IS", "MEKAG.IS", "MERCN.IS", "MIATK.IS", "MNDRS.IS", "MNDTR.IS", "MOBTL.IS",
"MPARK.IS", "NETAS.IS", "NTGAZ.IS", "NUGYO.IS", "NUHCM.IS", "OBAMS.IS", "ODAS.IS", "OFSYM.IS",
"ONCSM.IS", "ORGE.IS", "OTKAR.IS", "OYAKC.IS", "OZSUB.IS", "PAGYO.IS", "PARSN.IS", "PASEU.IS",
"PEKGY.IS", "PENTA.IS", "PETKM.IS", "PETUN.IS", "PGSUS.IS", "PLTUR.IS", "PNSUT.IS", "POLHO.IS",
"PRKAB.IS", "QUAGR.IS", "RALYH.IS", "RUBNS.IS", "RYGYO.IS", "SANFM.IS", "SANKO.IS", "SASA.IS",
"SELEC.IS", "SMRTG.IS", "SNGYO.IS", "SNICA.IS", "SOKE.IS", "SONME.IS", "SRVGY.IS", "SUNTK.IS",
"SURGY.IS", "SUWEN.IS", "TABGD.IS", "TEZOL.IS", "THYAO.IS", "TKFEN.IS", "TMSN.IS", "TRILC.IS",
"TUKAS.IS", "TUPRS.IS", "TUREX.IS", "TURGG.IS", "ULUSE.IS", "USAK.IS", "VAKKO.IS", "VBTYZ.IS",
"VESBE.IS", "VESTL.IS", "YATAS.IS", "YEOTK.IS", "YKSLN.IS", "YUNSA.IS"
]
# Hisse senedi verilerini çekin
data = {}
for symbol in symbols:
data[symbol] = yf.download(symbol, start="2022-01-01", end="2023-12-31")
# Düşen trendi belirlemek için bir fonksiyon
def find_downtrend(data):
downtrend_symbols = []
for symbol, df in data.items():
# NaN değerleri kontrol et
if df['Close'].isnull().all() or df['Close'].count() < 20:
continue # Yeterli veri yoksa atla
df['Trend'] = df['Close'].rolling(window=20).mean() # 20 günlük hareketli ortalama
df = df.dropna() # NaN değerleri kaldır
if df['Trend'].empty:
continue # Trend boşsa atla
trend_slope = np.polyfit(range(len(df['Trend'])), df['Trend'], 1)[0] # Trendin eğimi
# Düşen trendi kontrol et
if trend_slope < 0:
# Yukarı doğru kesen noktaları bul
for i in range(1, len(df)):
if df['Close'].iloc[i] > df['Trend'].iloc[i] and df['Close'].iloc[i-1] <= df['Trend'].iloc[i-1]:
downtrend_symbols.append(symbol)
break
return downtrend_symbols
# Düşen trendi bul
downtrend_symbols = find_downtrend(data)
# Sonuçları yazdır
print("Düşen trendi yukarı doğru kesen hisseler:")
for symbol in downtrend_symbols:
print(symbol)
# Trendleri çizme
for symbol in downtrend_symbols:
df = data[symbol]
plt.figure(figsize=(12, 6))
plt.plot(df['Close'], label='Kapanış Fiyatı', color='blue')
plt.plot(df['Trend'], label='20 Günlük Trend', color='red')
plt.title(f"{symbol} - Düşen Trend ve Kesişim")
plt.xlabel('Tarih')
plt.ylabel('Fiyat')
plt.legend()
plt.show()