Python

Python ile RSI MACD EMA SMA Hesaplama

Finansal Indikatörleri Python’da Kullanımınız için hazırladım. Burada şunu söylemek isterim ki Finansal indikatörler hakkında bilgi sahibi değilim. Ancak bir yazılımcı gelen her formülü ve algoritmayı koda dönüştürebilmelidir.

RSI Nedir Nasıl Hesaplanır ?

Relative Strength Index (RSI), bir finansal piyasada bir varlığın fiyat hareketlerinin momentumunu ölçen bir teknik analiz göstergesidir. RSI, bir varlığın fiyatının yükseliş ve düşüşleri arasındaki oranı kullanarak hesaplanır ve genellikle 0 ile 100 arasında bir değer olarak gösterilir. RSI, 70 veya üstünde olduğunda bir varlık için “yüksek” (overbought) olarak, 30 veya altında olduğunda ise “düşük” (oversold) olarak kabul edilir.

RSI Hesaplama Adımları

  1. Bir varlık için fiyat hareketlerini günlük olarak düzenleyin. Örneğin, bir hisse senedi için her gün kapanış fiyatını kaydedin. Bunun için python’da yfinance yani yahoo finans modülünü ücretsiz ve sınırsız kullanabiliyoruz.
  2. Bir varlık için günlük fiyat değişimlerini hesaplayın. Bu, bir önceki günün kapanış fiyatı ile bugünün kapanış fiyatı arasındaki farktır.  Örneğin, bir hisse senedi için bugünün kapanış fiyatının dünkü kapanış fiyatına göre ne kadar değiştiğini hesaplayın. Eğer bugünün kapanış fiyatı dünkü kapanış fiyatından daha yüksekse, fiyat değişimi pozitif olacaktır. Eğer bugünün kapanış fiyatı dünkü kapanış fiyatından daha düşükse, fiyat değişimi negatif olacaktır. Bunun için pandas kütüphanesi veya numpy kullanarak shift yapmamız gerekiyor.
  3. Bir periyot için pozitif fiyat değişimlerinin ortalamasını ve negatif fiyat değişimlerinin ortalamasını hesaplayın. Örneğin, son 14 gün için pozitif fiyat değişimlerinin ortalamasını ve negatif fiyat değişimlerinin ortalamasını hesaplayın.

Formül = RSI= 100-100/( 1+RS)

import pandas as pd
import numpy as np
import yfinance as yf
import matplotlib.pyplot as plt
plt.style.use("ggplot")
dataset=yf.download("TSLA",start='2018-01-03', end="2019-12-31")
dataset=dataset.dropna()
def SMA(data,period=30, column='Adj Close'):
    return data[column].rolling(window=period).mean() #rollingin ortalaması

def EMA(data,period=20,column='Adj Close'):
    return data[column].ewm(span=period, adjust=False).mean()  #üstel ağırlığın ortalaması

def MACD(data,period_long=26, period_short=12, period_signal=9,column='Adj Close'):
    #short hesaplayalım
    ShortEMA=EMA(data,period_short,column=column)
    #long
    LongEMA=EMA(data,period_long,column=column)
    #MACD
    data["MACD"]=ShortEMA-LongEMA
    #Signal
    data["Signal_Line"]=EMA(data,period_signal,column="MACD")
    
    return data

def RSI(data,period=14 , column="Close"):
    delta=data[column].diff(1)
    delta=delta[1:] #ilksatırı aldık
    up=delta.copy() #kopyaladık
    down=delta.copy()
    up[up<0]=0
    down[down>0]=0
    data["up"]=up
    data["down"]=down
    AVG_Gain=SMA(data,period,column='up')
    AVG_Loss=abs(SMA(data,period,column='down'))
    RS=AVG_Gain/AVG_Loss
    RSI=100.0-(100.0/(1.0+RS))
    data["RSI"]=RSI   
    return data

 

MACD Nedir ? Nasıl Hesaplanır ?

Moving Average Convergence Divergence (MACD), fiyat hareketlerinin momentumunu ölçen bir teknik analiz göstergesidir. MACD, bir varlığın fiyat hareketlerinin hızını ve yönünü belirlemek için iki hareketli ortalamanın birbirine olan uzaklığını kullanır. MACD, bir varlığın fiyat hareketlerinin ne kadar hızlı değiştiğini ve hangi yönde değiştiğini gösterir.

MACD Hesaplama Adımları ?

  1. Bir varlık için fiyat verilerini toplayın. Örneğin, bir hisse senedi için günlük kapanış fiyatlarını toplayın.
  2. Bir periyot için birinci hareketli ortalamayı hesaplayın. Örneğin, son 12 gün için birinci hareketli ortalamayı hesaplayın. Hareketli ortalama, verilerin belirli bir periyot içindeki ortalamasıdır ve genellikle verilerin en son değerlerine daha fazla ağırlık verilir.
  3. İkinci periyot için ikinci hareketli ortalamayı hesaplayın. Örneğin, son 26 gün için ikinci hareketli ortalamayı hesaplayın.
  4. İkinci hareketli ortalamayı birinci hareketli ortalamadan çıkarın. Bu, MACD çizgisini oluşturacaktır.
  5. Bir periyot için MACD çizgisinin ortalamasını hesaplayın. Örneğin, son 9 gün için MACD çizgisinin ortalamasını hesaplayın. Bu, MACD çizgisinin ortalamasını gösteren bir çizgi oluşturacaktır ve bu çizgiye sinyal çizgisi denir.
  6. MACD çizgisini ve sinyal çizgisini bir grafikte gösterin. Bu, MACD göstergesinin nasıl hesaplandığını ve ne zaman alım veya satım yapılması gerektiğini gösterir.

 

Python ile RSI MACD EMA SMA değerlerini hesaplayan fonksiyonlar

import pandas as pd
import numpy as np
import yfinance as yf
import matplotlib.pyplot as plt
plt.style.use("ggplot")
dataset=yf.download("TSLA",start='2018-01-03', end="2019-12-31")
dataset=dataset.dropna()
def SMA(data,period=30, column='Adj Close'):
    return data[column].rolling(window=period).mean() #rollingin ortalaması

def EMA(data,period=20,column='Adj Close'):
    return data[column].ewm(span=period, adjust=False).mean()  #üstel ağırlığın ortalaması

def MACD(data,period_long=26, period_short=12, period_signal=9,column='Adj Close'):
    #short hesaplayalım
    ShortEMA=EMA(data,period_short,column=column)
    #long
    LongEMA=EMA(data,period_long,column=column)
    #MACD
    data["MACD"]=ShortEMA-LongEMA
    #Signal
    data["Signal_Line"]=EMA(data,period_signal,column="MACD")
    
    return data

def RSI(data,period=14 , column="Close"):
    delta=data[column].diff(1)
    delta=delta[1:] #ilksatırı aldık
    up=delta.copy() #kopyaladık
    down=delta.copy()
    up[up<0]=0
    down[down>0]=0
    data["up"]=up
    data["down"]=down
    AVG_Gain=SMA(data,period,column='up')
    AVG_Loss=abs(SMA(data,period,column='down'))
    RS=AVG_Gain/AVG_Loss
    RSI=100.0-(100.0/(1.0+RS))
    data["RSI"]=RSI   
    return data

 

5 1 vote
Article Rating
Subscribe
Bildir
guest
1 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments
fatih
3 yıl önce

rsi da saatlik dakikalık dilimi nasıl ayarlayacağız peki ?