Ekonomi, Programlama, Python

Python ile Pandas ve TA-Lib kütüphanelerini kullanarak Hisse Senedi ve Fiyatlarını Simüle Etme

Klasik hatırlatmamızı yaparak yazımıza başlayayım, kesinlikle YTD! Bildiğiniz üzere Python, nesne yönelimli, yorumlamalı, birimsel ve etkileşimli yüksek seviyeli bir programlama dilidir. Modüler yapısı, sınıf dizgesini (sistem) ve her türlü veri alanı girişini destekler. Hemen hemen her türlü platformda çalışabilir. Blockchain (ayrıca yazı yazacağım) uygulamaları kodlanabilir, uzaktan kontrol veya görüntü işleme yapılabilir, veri analizi veya veri kontrolü yapılabilir, TensorFlow, PyTorch, Keras (Makine öğrenimi)gibi kütüphanlerle derin makine öğrenmesi uygulamaları yapılabilir. Bizde bugün benzer kütüphaneler olan TA-Lib ve pandas ile birlikte rsi, macd ve momentum indikatörünü kullanarak belirli tarih aralıklarındaki fiyatların analizini yaparak 3’lü olasılık oluşturacağız.

Pandas, veri işlemesi ve analizi için Python programlama dilinde yazılmış olan bir yazılım kütüphanesidir. Bu kütüphane temel olarak zaman etiketli serileri ve sayısal tabloları işlemek için bir veri yapısı oluşturur ve bu şekilde çeşitli işlemler bu veri yapısı üzerinde gerçekleştirilebilir olur. Yazılım ücretsizdir ve bir çeşit BSD ile lisansına sahiptir. Yazılım ismini bir ekonometri terimi olan veri panelinden almıştır. Bir veri paneli birçok zaman aralığı içinde farklı gözlemlerin işlenebildiği yapıyı tarif eder. TA-Lib ise içinde tam 150 tane farklı indikatörü bulunduran özellikle trade algoritmaları için kullanılan bir kütüphanedir.

Öncelikle verilerimizi çekeceğimiz yahoo finance kütüphanemiz ile birlikte pandas ve TA-Lib kütüphanelerini ekliyoruz.

import yfinance as yf
import talib as ta
import pandas as pd

daha sonra değişkenimizi atayarak hangi tarihler arasındaki fiyatların analiz edileceğini belirliyoruz.

def get_data(crypto):
  df = yf.download(crypto, start="2020-01-01", end="2021-03-06")
  return df

Analiz etmesini istediğimiz kriptoları isimlerini veya hisse isimlerini belirliyoruz. Burada Yahoo Finance adresindeki kodların aynı olmasına dikkat edin.

df1 = get_data("BTC-USD")
df2 = get_data("ETH-USD")
df3 = get_data("NIO")
df4 = get_data("TSLA")

MOM (Momentum), MACD (Moving Average Convergence Divergence) ve RSI (Relative Strength Index) indikatörlerimizi kullanıyoruz. Rsi aralığımız 25-75, Macd teknik analizi ise fiyatın kısa dönemli eğilimiyle uzun dönemli eğilimi arasındaki ilişkiyi gösterir.  Kısa vadeli (12 günlük ) üssel ortalama ile uzun vadeli 26 günlük üssel ortalama arasındaki farkın alınmasıyla oluşturulmuştur. Kodumuzda da bu şekilde göstererek sinyal periyodu olarak 9 belirliyoruz.

ef get_MOM(data):
  data["momentum"]  = ta.MOM(data["Close"], timeperiod=7)
  return data.momentum.iat[-1]

def get_RSI(data):
  data["rsi"] = ta.RSI(data["Close"], timeperiod=7)
  return data.rsi.iat[-1]

def get_macd(data):
  data["macd"], data["macdsignal"], data["macdhist"] = ta.MACD(data["Close"], fastperiod=12, slowperiod=26, signalperiod=9)

def get_price(data):
  return data.Close.iat[-1]

def get_slowk(data):
  data["slowk"], data["slowd"] = ta.STOCH(data["High"], data["Low"], data["Close"], fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
  return data.slowk.iat[-1]

def get_slowd(data):
  data["slowk"], data["slowd"] = ta.STOCH(data["High"], data["Low"], data["Close"], fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
  return data.slowd.iat[-1]

Mevcut verilerimizi ayrı ayrı listeliyoruz.

dataframes = [df1, df2, df3, df4]

Son olarak verilerimizi analiz ederek yazdırıyoruz.

or dataframe in dataframes:

  dataframe.RSI = get_RSI(dataframe)
  dataframe.MOM= get_MOM(dataframe)
  dataframe.price = get_price(dataframe)
  dataframe.macd = get_macd(dataframe)
  
  if dataframe.RSI<=60 and dataframe.MOM <0:
    dataframe.decision = "AL"
  elif dataframe.RSI>=85 and dataframe.MOM >0:
    dataframe.decision = "SAT"
  else:
    dataframe.decision = "ELİNDE TUT"

data = {'Kripto':  ['BTC-USD', 'ETH-USD', 'NIO', 'TSLA'],
        'Fiyat': [df1.price, df2.price, df3.price, df4.price],
        'RSI': [df1.RSI, df2.RSI, df3.RSI, df4.RSI],
        'Momentum' : [df1.MOM, df2.MOM, df3.MOM, df4.MOM],
        'Sonuc' : [df1.decision, df2.decision, df3.decision, df4.decision]
        }

dfinal = pd.DataFrame (data, columns = ['Kripto','Fiyat','RSI', 'Momentum', 'Sonuc'])

print (dfinal)

Sonuç çıktımız:

Son olarak yazı kesinlikle bilgilendirme amaçlıdır. Kütüphanelerin kullanımı ve veri analizi konusunda örnekleme içerir.

9830cookie-checkPython ile Pandas ve TA-Lib kütüphanelerini kullanarak Hisse Senedi ve Fiyatlarını Simüle Etme

10 Replies to Python ile Pandas ve TA-Lib kütüphanelerini kullanarak Hisse Senedi ve Fiyatlarını Simüle Etme

  1. Merhaba
    Yahoo dan değilde binance dan 4 saatlik grafikler üzerinde bu verileri nasıl analiz ettirebiliriz?

    1. Merhabalar, binance apisine bakmak lazım, Python’un binance kütüphanesi olduğu biliyorum. İnceleyip geri dönüş yapacağım.

  2. Merhaba, hocam or dataframe in dataframes’te hata alıyorum am sorun şu. TA-lib’i indiremedim. Yüklemiyor. bunun yerine manuel yapmam gerekiyor fakat o zamanda macos GCC indirmemi istiyor. Açıkçası anlamadım hiçbir şey. Diğer kütüphaneleri indirebiliyorum. TA-lib hata veriyor sadece. Yeni yeni yazılım öğreniyorum. ios işletim sistemi kullanıyorum.

    1. Merhabalar,or dataframe in dataframes hatasını almanızın sebebi kütüphanenin yüklenmemiş olması. Ta-lib yüklerken aldığınız hatayı yazabilir misiniz ? ve pip en son versiyon mu kullanıyorsunuz ?

Bir yanıt yazın

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