def BBANDS(cls, data, ndays): MA = pd.Series(pd.rolling_mean(data['Close'], ndays)) SD = pd.Series(pd.rolling_std(data['Close'], ndays)) b1 = MA + (2 * SD) B1 = pd.Series(b1, name='Upper BollingerBand') data = data.join(B1) b2 = MA - (2 * SD) B2 = pd.Series(b2, name='Lower BollingerBand') data = data.join(B2) return data
def BBANDS(data, ndays): MA = pd.Series(pd.rolling_mean(data['Close'], ndays)) SD = pd.Series(pd.rolling_std(data['Close'], ndays)) b1 = MA + (2 * SD) B1 = pd.Series(b1, name='Upper BollingerBand') data = data.join(B1) b2 = MA - (2 * SD) B2 = pd.Series(b2, name='Lower BollingerBand') data = data.join(B2) return data
def CCI(data, ndays): TP = (data['High'] + data['Low'] + data['Close']) / 3 CCI = pd.Series((TP - pd.rolling_mean(TP, ndays)) / (0.015 * pd.rolling_std(TP, ndays)), name='CCI') data = data.join(CCI) return data
def EVM(data, ndays): dm = ((data['High'] + data['Low']) / 2) - ( (data['High'].shift(1) + data['Low'].shift(1)) / 2) br = (data['Volume'] / 100000000) / ((data['High'] - data['Low'])) EVM = dm / br EVM_MA = pd.Series(pd.rolling_mean(EVM, ndays), name='EVM') data = data.join(EVM_MA) return data
def SMA(data, ndays): SMA = pd.Series(pd.rolling_mean(data['Close'], ndays), name='SMA') data = data.join(SMA) return data
def EWMA(data, ndays): EMA = pd.Series(pd.ewma(data['Close'], span=ndays, min_periods=ndays - 1), name='EWMA_' + str(ndays)) data = data.join(EMA) return data
def ForceIndex(data, ndays): FI = pd.Series(data['Close'].diff(ndays) * data['Volume'], name='ForceIndex') data = data.join(FI) return data
def ROC(data,n): N = data['Close'].diff(n) D = data['Close'].shift(n) ROC = pd.Series(N/D,name='Rate of Change') data = data.join(ROC) return data