Mobil Menü

Python ile Golden Cross Death Cross Grafik Programı

Finansal piyasalarda doğru analiz yöntemlerini kullanmak, yatırımcıların başarılı olmasında kritik bir rol oynar. Bu bağlamda, Golden Cross ve Death Cross kavramları, piyasa trendlerini belirlemede önemli araçlardır. Bu yazıda, bu kavramların ne anlama geldiğini ve Python ile yazılmış bir kod örneği aracılığıyla nasıl uygulanabileceğini tanıtacağız.

Golden Cross ve Death Cross Nedir?

Golden Cross, kısa vadeli bir hareketli ortalamanın (genellikle 50 günlük) uzun vadeli bir hareketli ortalamayı (genellikle 200 günlük) yukarıdan aşağıya doğru kesmesi durumudur. Bu durum, genellikle bir boğa piyasasının başlangıcını işaret eder ve yatırımcılar için alım fırsatı sunar. Öte yandan, Death Cross, kısa vadeli bir hareketli ortalamanın uzun vadeli bir hareketli ortalamayı aşağıdan yukarıya doğru kesmesiyle oluşur. Bu durum, genellikle bir ayı piyasasının başlangıcını gösterir ve yatırımcılar için satış sinyali olarak algılanabilir.

Python ile Hisse Senedi Analizi

Aşağıda, Golden Cross ve Death Cross sinyallerini belirlemek için yazılmış bir Python kodu bulunmaktadır. Bu kod, kullanıcıdan bir hisse senedi sembolü alarak, belirli bir tarih aralığında hisse senedi verilerini çeker ve analiz eder.

import numpy as np
import pandas as pd
import yfinance as yf
import pandas_ta as ta
import matplotlib.pyplot as plt
from datetime import date

plt.style.use('fivethirtyeight')

# Kullanıcıdan hisse ismi alma
hisse = input("Lütfen analiz etmek istediğiniz hisse senedi sembolünü girin (örneğin: ARDYZ.IS): ")

startdate = date(2020, 8, 4)
end_date = date.today()

print(f"Analiz tarihi aralığı: {startdate} - {end_date}")

def getMyPortfolio(stock_symbol, start=startdate, end=end_date):
    data = yf.download(stock_symbol, start=start, end=end)
    return data

# Hisse verisini çekme
data = getMyPortfolio(hisse)

# EMA hesaplama
data['EMA 50'] = ta.ema(data['Close'], 50)
data['EMA 200'] = ta.ema(data['Close'], 200)

# Satın alma ve satış sinyalleri için fonksiyon
def buy_sell(data):
    signalBuy = []
    signalSell = []
    position = False

    for i in range(len(data)):
        if data['EMA 50'][i] > data['EMA 200'][i]:
            if not position:
                signalBuy.append(data['Close'][i])
                signalSell.append(np.nan)
                position = True
            else:
                signalBuy.append(np.nan)
                signalSell.append(np.nan)
        elif data['EMA 50'][i] < data['EMA 200'][i]:
            if position:
                signalBuy.append(np.nan)
                signalSell.append(data['Close'][i])
                position = False
            else:
                signalBuy.append(np.nan)
                signalSell.append(np.nan)
        else:
            signalBuy.append(np.nan)
            signalSell.append(np.nan)
    return pd.Series([signalBuy, signalSell])

data['Buy_Signal_price'], data['Sell_Signal_price'] = buy_sell(data)

# Grafik oluşturma
fig, ax = plt.subplots(figsize=(14, 8))
ax.plot(data['Close'], label=hisse, linewidth=0.5, color='blue', alpha=0.9)
ax.plot(data['EMA 50'], label='EMA 50', alpha=0.85)
ax.plot(data['EMA 200'], label='EMA 200', alpha=0.85)
ax.scatter(data.index, data['Buy_Signal_price'], label='Buy', marker='^', color='green', alpha=1)
ax.scatter(data.index, data['Sell_Signal_price'], label='Sell', marker='v', color='red', alpha=1)
ax.set_title(hisse + " Price History with Buy and Sell Signals", fontsize=10, backgroundcolor='blue', color='white')
ax.set_xlabel(f'{startdate} - {end_date}', fontsize=18)
ax.set_ylabel('Close Price (₨)', fontsize=18)
legend = ax.legend()
ax.grid()
plt.tight_layout()
plt.show()

Bu kod, kullanıcıdan bir hisse senedi sembolü alarak, belirli bir tarih aralığında hisse senedi verilerini çeker. Ardından, 50 günlük ve 200 günlük üssel hareketli ortalamaları hesaplar ve bu hareketli ortalamaları kullanarak alım ve satım sinyallerini belirler. Kullanıcıya, bu sinyalleri görselleştiren bir grafik sunarak, piyasa trendlerini daha iyi anlamalarına yardımcı olur.

Kodun Çalışma Prensibi

  1. Veri Çekme: Kullanıcıdan alınan hisse senedi sembolü ile Yahoo Finance üzerinden belirli bir tarih aralığında hisse senedi verileri indirilir. Bu veriler, kapanış fiyatları gibi önemli bilgileri içerir.
  2. Hareketli Ortalamaların Hesaplanması: Kısa vadeli (50 günlük) ve uzun vadeli (200 günlük) üssel hareketli ortalamalar hesaplanır. Bu hareketli ortalamalar, piyasa trendlerini belirlemede kritik bir rol oynar.
  3. Alım ve Satım Sinyalleri: buy_sell fonksiyonu, hareketli ortalamaların kesişim noktalarını analiz ederek alım ve satım sinyalleri oluşturur. Eğer 50 günlük EMA, 200 günlük EMA’nın üzerinde ise alım sinyali, altında ise satım sinyali üretilir.
  4. Grafik Oluşturma: Son olarak, kapanış fiyatları, hareketli ortalamalar ve alım-satım sinyalleri bir grafik üzerinde görselleştirilir. Bu grafik, yatırımcıların piyasa hareketlerini daha iyi analiz etmelerine olanak tanır.

Sonuç

Bu Python kodu, Golden Cross ve Death Cross kavramlarını uygulamak için etkili bir yöntem sunar. Yatırımcılar, bu tür teknik analizleri kullanarak piyasa trendlerini daha iyi anlayabilir ve stratejilerini buna göre belirleyebilirler. Hisse senedi yatırımlarında doğru kararlar almak için bu tür araçların kullanılması, yatırımcıların risklerini minimize etmelerine ve potansiyel kazançlarını artırmalarına yardımcı olur.

Sonuç olarak, Golden Cross ve Death Cross gibi teknik analiz araçları, yatırımcıların piyasalardaki fırsatları değerlendirmelerine ve bilinçli kararlar almalarına olanak tanır. Python ile yazılmış bu kod, bu kavramları uygulamak için pratik bir yol sunarak, yatırımcıların finansal piyasalarda daha etkili bir şekilde hareket etmelerini sağlar.

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.

Osman Bayrak
Osman Bayrak

Yazılım Mühendisiyim. Teknoloji ve yazılıma meraklıyım.

Articles: 154