def test_MOM(): values = np.array([90.0, 88.0, 89.0]) result = func.MOM(values, timeperiod=1) assert_np_arrays_equal(result, [np.nan, -2, 1]) result = func.MOM(values, timeperiod=2) assert_np_arrays_equal(result, [np.nan, np.nan, -1]) result = func.MOM(values, timeperiod=3) assert_np_arrays_equal(result, [np.nan, np.nan, np.nan]) result = func.MOM(values, timeperiod=4) assert_np_arrays_equal(result, [np.nan, np.nan, np.nan])
def get_technical_indicators(dataset): # Create 7 and 21 days Moving Average dataset['ma5'] = dataset['Close'].rolling(window=5).mean() dataset['ma10'] = dataset['Close'].rolling(window=10).mean() # Create MACD dataset['26ema'] = func.EMA(dataset['Close'],26) dataset['12ema'] = func.EMA(dataset['Close'],12) dataset['MACD'] = (dataset['12ema']-dataset['26ema']) # Create Bollinger Bands dataset['10sd'] = dataset['Close'].rolling(10).std() dataset['upper_band'] = dataset['ma5'] + (dataset['10sd']*2) dataset['lower_band'] = dataset['ma10'] - (dataset['10sd']*2) # Create Exponential moving average dataset['ema'] = dataset['Close'].ewm(com=0.5).mean() # Create Momentum dataset['momentum'] = func.MOM(dataset['Close'],20) # ROC dataset['roc'] = func.ROC(dataset['Close'],10) # Willam dataset['wpr'] = func.WILLR(dataset['High'], dataset['Low'], dataset['Close'], timeperiod=14) # ATR dataset['atr'] = func.ATR(dataset['High'], dataset['Low'], dataset['Close'], timeperiod=14) return dataset
bb_low = (ma5 - sd_10 * 2)['2007-02-08':] print(sum(sum(np.isnan(bb_low.values)))) bb_low_open = (ma5_open - sd_10_open * 2)['2007-02-08':] print(sum(sum(np.isnan(bb_low_open.values)))) ema = Close.ewm(com=0.5).mean()['2007-02-08':] print(sum(sum(np.isnan(ema.values)))) ema_open = Open.ewm(com=0.5).mean()['2007-02-08':] print(sum(sum(np.isnan(ema_open.values)))) roc = Close.apply(lambda x: func.ROC(x, 10), axis=0)['2007-02-08':] print(sum(sum(np.isnan(roc.values)))) roc_open = Open.apply(lambda x: func.ROC(x, 10), axis=0)['2007-02-08':] print(sum(sum(np.isnan(roc_open.values)))) mom = Close.apply(lambda x: func.MOM(x, 20), axis=0)['2007-02-08':] print(sum(sum(np.isnan(mom.values)))) mom_open = Open.apply(lambda x: func.MOM(x, 20), axis=0)['2007-02-08':] print(sum(sum(np.isnan(mom_open.values)))) Close = Close['2007-02-08':] Open = Open['2007-02-08':] High = High['2007-02-08':] Low = Low['2007-02-08':] #%% def KalmanFilterAverage(x): # Construct a Kalman filter
def test_input_wrong_type(): a1 = np.arange(10, dtype=int) with assert_raises(Exception): func.MOM(a1)