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.

8 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.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir