Finansal piyasalarda başarılı olmak için doğru analiz yöntemlerine sahip olmak kritik öneme sahiptir. Bu yazıda, Python programlama dili kullanarak hisse senedi verilerini analiz etmek ve görselleştirmek için geliştirdiğim kodu tanıtacağım. Bu kod, yfinance
, pandas
, numpy
, matplotlib
ve mplfinance
gibi güçlü kütüphaneleri kullanarak yatırımcılara kapsamlı bir analiz aracı sunmaktadır.
Hisse Senedi Verilerini İndirme
Kodun başlangıcında, yfinance
kütüphanesi aracılığıyla belirli bir hisse senedinin verileri indirilir. Kullanıcıdan alınan hisse kodu, zaman aralığı ve veri süresi bilgileri ile download_data
fonksiyonu, yatırımcıların geçmiş fiyat hareketlerini incelemesine olanak tanır. Bu, yatırım kararlarını destekleyen önemli bir adımdır.
Üssel Hareketli Ortalama (EMA) Hesaplama
Yatırımcıların piyasa trendlerini daha iyi anlamalarına yardımcı olmak için, kodda ema
fonksiyonu ile Üssel Hareketli Ortalama (EMA) hesaplanmaktadır. 20, 50, 100 ve 200 periyotlu EMA’lar, fiyatların zaman içindeki ortalamasını alarak trendin yönünü belirlemeye yardımcı olur. Bu göstergeler, yatırımcıların alım-satım stratejilerini geliştirmelerine katkı sağlar.
Supertrend Göstergesi ile Trend Analizi
Kodun en dikkat çekici özelliklerinden biri, supertrend
fonksiyonu ile Supertrend göstergesinin hesaplanmasıdır. Supertrend, fiyat hareketlerini takip ederek alım-satım sinyalleri oluşturur. Bu gösterge, yatırımcıların piyasa trendlerini daha iyi anlamalarına ve potansiyel alım-satım fırsatlarını değerlendirmelerine yardımcı olur.
Fibonacci Kanalları ile Destek ve Direnç Seviyeleri
Ayrıca, fibonacci_channel
fonksiyonu kullanılarak Fibonacci seviyeleri hesaplanmaktadır. Bu seviyeler, fiyat hareketlerinin önemli destek ve direnç noktalarını belirlemek için kullanılır. Yatırımcılar, bu seviyeleri analiz ederek daha bilinçli kararlar alabilirler.
Grafik Görselleştirme ile Analizlerinizi Güçlendirin
Son olarak, elde edilen veriler ve hesaplanan göstergeler, mplfinance
kütüphanesi ile görselleştirilir. Grafik üzerinde mum çubukları, EMA’lar, Supertrend göstergesi ve Fibonacci seviyeleri bir arada sunulmaktadır. Bu görselleştirme, yatırımcıların piyasa hareketlerini daha iyi analiz etmelerine ve stratejilerini geliştirmelerine yardımcı olur.
Sonuç
Bu Python kodu, finansal analiz yapmak isteyen yatırımcılar ve analistler için güçlü bir araçtır. Kullanıcı dostu yapısı ve kapsamlı analiz yetenekleri ile piyasa trendlerini anlamak ve yatırım kararlarını desteklemek için etkili bir çözüm sunmaktadır. Hisse senedi analizi yapmak isteyen herkes için bu kod, değerli bir kaynak olacaktı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 yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import mplfinance as mpf
def download_data(ticker, interval="1h", period="1mo"):
data = yf.download(tickers=ticker, interval=interval, period=period)
return data
def ema(data, period, column='Close'):
return data[column].ewm(span=period, adjust=False).mean()
def supertrend(df, period=7, atr_multiplier=3):
high = df['High']
low = df['Low']
close = df['Close']
tr1 = pd.DataFrame(high - low)
tr2 = pd.DataFrame(abs(high - close.shift(1)))
tr3 = pd.DataFrame(abs(low - close.shift(1)))
tr = pd.concat([tr1, tr2, tr3], axis=1, join='inner').max(axis=1)
atr = tr.rolling(period).mean()
hl2 = (high + low) / 2
final_upperband = hl2 + (atr_multiplier * atr)
final_lowerband = hl2 - (atr_multiplier * atr)
supertrend = pd.DataFrame(index=hl2.index)
supertrend['supertrend'] = np.nan
supertrend['in_uptrend'] = True
for i in range(1, len(supertrend)):
if close[i] > final_upperband[i - 1]:
supertrend['supertrend'][i] = final_lowerband[i]
elif close[i] < final_lowerband[i - 1]:
supertrend['supertrend'][i] = final_upperband[i]
else:
supertrend['supertrend'][i] = supertrend['supertrend'][i - 1]
if supertrend['in_uptrend'][i - 1] and close[i] < final_lowerband[i - 1]:
supertrend['in_uptrend'][i] = False
elif not supertrend['in_uptrend'][i - 1] and close[i] > final_upperband[i - 1]:
supertrend['in_uptrend'][i] = True
return supertrend
def fibonacci_channel(data):
high = data['High'].max()
low = data['Low'].min()
diff = high - low
levels = {
"0.236": low + diff * 0.236,
"0.382": low + diff * 0.382,
"0.500": low + diff * 0.500,
"0.618": low + diff * 0.618,
"0.764": low + diff * 0.764,
"1.000": high
}
return levels
# Kullanıcıdan hisse ve parametre bilgilerini alma
ticker = input("Lütfen hisse kodunu girin (örnek: ARDYZ.IS): ")
interval = input("Lütfen zaman aralığını girin (örnek: 1h, 5m, 1d): ")
period = input("Lütfen veri süresini girin (örnek: 1mo, 1d, 1y): ")
# Veriyi indirme
data = download_data(ticker, interval, period)
# EMA hesaplama
data['EMA20'] = ema(data, 20)
data['EMA50'] = ema(data, 50)
data['EMA100'] = ema(data, 100)
data['EMA200'] = ema(data, 200)
# Supertrend hesaplama
supertrend_df = supertrend(data)
data['Supertrend'] = supertrend_df['supertrend']
# Fibonacci kanalı hesaplama
fibonacci_levels = fibonacci_channel(data)
# Grafik oluşturma
apds = [
mpf.make_addplot(data['EMA20'], color='blue'),
mpf.make_addplot(data['EMA50'], color='orange'),
mpf.make_addplot(data['EMA100'], color='green'),
mpf.make_addplot(data['EMA200'], color='red'),
mpf.make_addplot(data['Supertrend'], color='black'),
]
fig, ax = mpf.plot(data, type='candle', addplot=apds, returnfig=True)
colors = ['b', 'g', 'r', 'c', 'm', 'y']
for (level, value), color in zip(fibonacci_levels.items(), colors):
ax[0].axhline(value, linestyle='--', color=color, alpha=0.7)
ax[0].text(data.index[-1], value, f'Fibo {level}', color=color, alpha=0.7)
plt.show()