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ı
- 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.
- 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.
- 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ı ?
- Bir varlık için fiyat verilerini toplayın. Örneğin, bir hisse senedi için günlük kapanış fiyatlarını toplayın.
- 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.
- İkinci periyot için ikinci hareketli ortalamayı hesaplayın. Örneğin, son 26 gün için ikinci hareketli ortalamayı hesaplayın.
- İkinci hareketli ortalamayı birinci hareketli ortalamadan çıkarın. Bu, MACD çizgisini oluşturacaktır.
- 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.
- 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
rsi da saatlik dakikalık dilimi nasıl ayarlayacağız peki ?