def GetStockData(tickers): start = datetime.now() - timedelta(days=2) end = datetime.now() df1 = pd.DataFrame() test = pd.DataFrame() for stock in stocks: df = yf.download(stock, start=start, end=end, interval="15m") df['Stock'] = stock print(stock) ######################### RSI ################################ df['RSI'] = talib.RSI(df.Close, timeperiod=14) df['RSI_EMA'] = talib.EMA(df.RSI, timeperiod=9) cross = ta.cross(series_a=df.RSI, series_b=df.RSI_EMA, above=True) cross_down = ta.cross(series_a=df.RSI, series_b=df.RSI_EMA, above=False) cross_down.replace(1, -1, inplace=True) for each in range(len(cross)): if cross_down.iloc[each] == -1: cross.iloc[each] = -1 df['RSI_X'] = cross ################## shortlist for trade ######################## test = test.append(df) if df.RSI_X.iloc[-1] in [1, -1]: if (df.RSI.iloc[-1] > 70) or (df.RSI.iloc[-1] < 30): df1 = df1.append(df.tail(1)) appended_stock = df['Stock'].iloc[-1] print(f'record appended {appended_stock}') return df1
def movingAverage(df, fast_p, slow_p): smas = df.ta.sma(length=fast_p) smal = df.ta.sma(length=slow_p) ma_buy = ta.cross(smas, smal, above=True) ma_sell = ta.cross(smas, smal, above=False) ma_upw = ta.above(smas, smal) ma_buy.iloc[:fast_p] = np.nan ma_sell.iloc[:fast_p] = np.nan ma_upw.iloc[:fast_p] = np.nan return ma_buy, ma_sell, ma_upw
def adx(df, adx_len, adx_ul): df_adx = df.ta.adx(length=adx_len) adx, dmp, dmm = df_adx.iloc[:, 0], df_adx.iloc[:, 1], df_adx.iloc[:, 2] adx_force = ta.above_value(adx, adx_ul) adx_buy = ta.cross(dmp, dmm, above=True) adx_sell = ta.cross(dmp, dmm, above=False) adx_upw = ta.above(dmp, dmm) adx_force.iloc[:adx_len] = np.nan adx_buy.iloc[:adx_len] = np.nan adx_sell.iloc[:adx_len] = np.nan adx_upw.iloc[:adx_len] = np.nan return adx_force, adx_buy, adx_sell, adx_upw
def macd(df, macd_fast_p, macd_slow_p, macd_sign_p): df_macd = df.ta.macd(fast=macd_fast_p, slow=macd_slow_p, signal=macd_sign_p) macd_macd = df_macd.iloc[:, 0] macd_sign = df_macd.iloc[:, 2] macd_buy = ta.cross(macd_sign, macd_macd, above=True) macd_sell = ta.cross(macd_sign, macd_macd, above=False) macd_upw = ta.above(macd_sign, macd_macd) macd_buy.iloc[:macd_slow_p] = np.nan macd_sell.iloc[:macd_slow_p] = np.nan macd_upw.iloc[:macd_slow_p] = np.nan return macd_buy, macd_sell, macd_upw