Finans, Formasyon Analizi, Kripto Para, Programlama, Python

Pandas ve ta-talib kütüphanelerini kullanarak hisse senetleri ve kripto paralar üzerinde al-sat sinyali oluşturalım

Daha önce yine pandas ve talib kütüphanelerini kullanarak hisse senetlerini simule etmiştik ve akademik çalışmalara konu olacak şekilde çok ilgi çekmişti. Bu yazımızda ise aynı kütüphanelere ek olarak yfinance kullanarak bir sinyal oluşturacağız. Stratejimiz Üstel Hareketli Ortalama (EMA) ve Basit Hareketli Ortalama (MA) nın kesişmesi ile oluşacak.

Bildiğiniz gibi Üstel Hareketli Ortalama (EMA), teknik bir gösterge olup bir menkul kıymetin belirli bir süre içindeki fiyat değişimlerini gösterir. EMA’nın hesaplanmasında, belirli bir dönemdeki fiyat hareketlerinin ortalaması alınırken, yakın dönem fiyat hareketlerine daha fazla ağırlık verilir. Basit Hareketli Ortalama (MA) ise Bir finansal ürünün, belirlenen dönem içerisindeki fiyat hareketlerinin ortalaması alınarak oluşturulan hareketli ortalamadır. Basit hareketli ortalama kapanış fiyatlarını dikkate almaktadır. Küçük bir tanımlama yaptıktan sonra şimdi kod bloğumuza geçelim:

20 günlük üstel hareketli ortalamaya örnek verecek olursak;

import pandas as pd
import numpy as np

# Örnek fiyat verileri (örnek verilerle değiştirin)
prices = [100, 102, 105, 110, 108, 115, 118, 120, 122, 125, 130, 128, 133, 136, 140, 145, 142, 148, 150, 155]

# Fiyat verilerini bir DataFrame'e dönüştürün
data = pd.DataFrame(prices, columns=['Close'])

# 20 günlük EMA hesaplama fonksiyonu
def calculate_ema(data, window):
    ema = data['Close'].ewm(span=window, adjust=False).mean()
    return ema

# 20 günlük EMA hesaplaması
ema_20 = calculate_ema(data, window=20)

print(ema_20)

50 günlün basit hareketli ortalamaya örnek verecek olursak;

import pandas as pd
import numpy as np

# Örnek fiyat verileri (örnek verilerle değiştirin)
prices = [100, 102, 105, 110, 108, 115, 118, 120, 122, 125, 130, 128, 133, 136, 140, 145, 142, 148, 150, 155]

# Fiyat verilerini bir DataFrame'e dönüştürün
data = pd.DataFrame(prices, columns=['Close'])

# 50 günlük Basit Hareketli Ortalama (MA) hesaplama fonksiyonu
def calculate_ma(data, window):
    ma = data['Close'].rolling(window=window).mean()
    return ma

# 50 günlük MA hesaplaması
ma_50 = calculate_ma(data, window=50)

print(ma_50)

Şimdi ise kesişme değerlerini gösteren kodumuzu yazalım:

import yfinance as yf
import pandas as pd
import talib

def get_ema_ma_signals(symbol):
    # Hisse senedi verilerini çekme
    stock = yf.Ticker(symbol)
    data = stock.history(period="1y")

    # Kapanış fiyatlarını içeren bir DataFrame oluşturma
    closing_prices = data['Close']

    # EMA20 ve SMA50 hesaplamaları
    ema_20 = talib.EMA(closing_prices, timeperiod=20)
    sma_50 = talib.SMA(closing_prices, timeperiod=50)

    # Kesişme noktalarını tespit etme
    signals = pd.DataFrame(index=data.index)
    signals['EMA20'] = ema_20
    signals['SMA50'] = sma_50
    signals['Signal'] = 0  # Varsayılan olarak sinyal yok

    signals['Signal'][20:] = np.where(signals['EMA20'][20:] > signals['SMA50'][20:], 1, -1)

    return signals

# Kullanıcıdan hisse senedi sembolünü al
symbol = input("Hisse senedi sembolünü girin (örneğin TSLA): ")

# Sinyal verilerini al
signals = get_ema_ma_signals(symbol)

# Sonuçları görüntüleme
print(signals.tail())

Lütfen bu örnekleri backtest yaparak stratejinize uygun hale getirin.

14240cookie-checkPandas ve ta-talib kütüphanelerini kullanarak hisse senetleri ve kripto paralar üzerinde al-sat sinyali oluşturalım

Bir yanıt yazın

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