Kripto Para, Kripto Paralar, Programlama, Python

Python ile yfinance – talib ve numpy kütüphanelerini kullanarak SMA200 tabanlı al-sat stratejisi oluşturma

Daha önce bu yazıda Hareketli Ortalamanın Osilatörü, Kodlanması ve Ticarette Kullanımı ile ilgili örnekler vermiştim. Bugün ise finansal verileri işlemek ve analiz etmek için kullandığımız bazı kütüphaneler ile SMA 200 stratejisine göre hisse senedi sinyali oluşturacağız ve bunu grafiğe dökeceğiz.

Basit Hareketli Ortalama (SMA) nedir ?

Hareketli ortalamalar, bir finansal aracın ortalama fiyatını belirli bir süre boyunca görselleştirir. Bununla birlikte, birkaç farklı hareketli ortalama türü vardır. Genellikle, farklı veri noktalarının ağırlıklı olması veya önem verilmesi konusunda farklılık gösterirler. Basit Hareketli Ortalama (SMA), ağırlıksız bir hareketli ortalamadır. Ağırlıksız demek, veri kümesindeki her periyodun eşit önemde olduğu ve eşit derecede ağırlıklı olması anlamına gelir. Her dönem sona erdiğinde, en eski veri noktası çıkar ve en yenisi başa eklenir. Unutmayın SMA diğer hareketli ortalamalara göre fiyatı hep en geriden takip eder.

import yfinance as yf
import numpy as np
import talib

Şimdi yfinance kullanarak hisse senedimize ait verileri alacağız. Kullanılan hisse senedi kodunun yahoo finance verisiyle uygun olmasına özen gösterin.

# TSLA hissesinin verilerini alalım
tsla = yf.Ticker("TSLA")
data = tsla.history(period="1y")

# Kapanış fiyatlarını alalım
close_prices = data['Close']

# 200 günlük basit hareketli ortalama (SMA200) hesaplayalım
sma200 = talib.SMA(np.array(close_prices), timeperiod=200)

Burada “TSLA” hissesinin son 1 yıllık açılış ve kapanış fiyatına göre sma200 stratejimizi oluşturuyoruz.

# Al-Sat stratejisi oluşturalım
signals = []
position = 0  # Pozisyon: 0 (Nötr), 1 (Uzun), -1 (Kısa)

for i in range(len(close_prices)):
    if i < 200:  # İlk 200 gün boyunca strateji oluşturmayalım
        signals.append(0)
    elif close_prices[i] > sma200[i] and close_prices[i - 1] <= sma200[i - 1]:
        signals.append(1)  # Al sinyali
        position = 1
    elif close_prices[i] < sma200[i] and close_prices[i - 1] >= sma200[i - 1]:
        signals.append(-1)  # Sat sinyali
        position = -1
    else:
        signals.append(0)  # Nötr
        
# Sonuçları yazdıralım
for i in range(len(close_prices)):
    print(f"Tarih: {close_prices.index[i]}, Kapanış Fiyatı: {close_prices[i]}, SMA200: {sma200[i]}, Sinyal: {signals[i]}")

Sonuç çıktımız şu şekilde olacak:

Şimdi sonuç çıktımızı matplotlib kullanarak grafiğe dökelim.

import matplotlib.pyplot as plt
# Grafiği çizelim
plt.figure(figsize=(10, 6))

# Kapanış fiyatlarını grafiğe ekleyelim
plt.plot(close_prices.index, close_prices, label='Kapanış Fiyatı', color='blue')

# SMA200 değerlerini grafiğe ekleyelim
plt.plot(close_prices.index, sma200, label='SMA200', color='red')

# Al sinyali noktalarını yeşil renkte gösterelim
buy_signals = [i for i, signal in enumerate(signals) if signal == 1]
plt.scatter(close_prices.index[buy_signals], close_prices[buy_signals], marker='^', color='green', label='Al Sinyali')

# Sat sinyali noktalarını kırmızı renkte gösterelim
sell_signals = [i for i, signal in enumerate(signals) if signal == -1]
plt.scatter(close_prices.index[sell_signals], close_prices[sell_signals], marker='v', color='red', label='Sat Sinyali')

# Eksen etiketleri ve başlık ekleyelim
plt.xlabel('Tarih')
plt.ylabel('Fiyat')
plt.title('TSLA Hisse Senedi Al-Sat Stratejisi')
plt.legend()

# Grafiği gösterelim
plt.show()

Sonuç çıktımız şu şekilde olacak:

14300cookie-checkPython ile yfinance – talib ve numpy kütüphanelerini kullanarak SMA200 tabanlı al-sat stratejisi oluşturma

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir