Esempio n. 1
0
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
Esempio n. 2
0
def test_unstable_period():
    a = np.arange(10, dtype=float)
    r = func.EMA(a, 3)
    assert_np_arrays_equal(r, [np.nan, np.nan, 1, 2, 3, 4, 5, 6, 7, 8])
    talib.set_unstable_period('EMA', 5)
    r = func.EMA(a, 3)
    assert_np_arrays_equal(r, [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, 6, 7, 8])
    talib.set_unstable_period('EMA', 0)
Esempio n. 3
0
def test_compatibility():
    a = np.arange(10, dtype=float)
    talib.set_compatibility(0)
    r = func.EMA(a, 3)
    assert_np_arrays_equal(r, [np.nan, np.nan, 1, 2, 3, 4, 5, 6, 7, 8])
    talib.set_compatibility(1)
    r = func.EMA(a, 3)
    assert_np_arrays_equal(r, [
        np.nan, np.nan, 1.25, 2.125, 3.0625, 4.03125, 5.015625, 6.0078125,
        7.00390625, 8.001953125
    ])
    talib.set_compatibility(0)
Esempio n. 4
0
def add_moving_average(df: pd.DataFrame,
                       mat_window_: list):
    """
    Adds moving averages columns to the DataFrame of historical prices

    :param df: pandas.Dataframe with historical prices
    :param mat_window_: list [moving average type, time window] defining moving averages to calculate
                Example ma_type_window_ = [['EMA', 13], ['WMA', 55]]
    """
    for ma_ in mat_window_:
        # Extract params
        ma_type_, time_window_ = ma_
        ma_type_ = ma_type_.upper()
        column_name_ = f'{ma_type_.title()}{time_window_:0>2}'

        # Identify, calculate and add moving average column to the DataFrame
        if ma_type_ == 'SMA':               # Simple Moving Average
            # Visit https://www.investopedia.com/terms/s/sma.asp
            df[column_name_] = df['Close'].rolling(window=time_window_).mean()
        elif ma_type_ == 'EMA':             # Exponential Moving Average
            # Visit https://www.investopedia.com/terms/e/ema.asp
            df[column_name_] = func.EMA(df['Close'], time_window_)
        elif ma_type_ == 'WMA':             # Weighted Moving Average
            # Visit https://www.investopedia.com/terms/l/linearlyweightedmovingaverage.asp
            df[column_name_] = func.WMA(df['Close'], time_window_)
        else:
            logging.warning(f'ERROR: Calculation of moving average: {ma_type_}, not supported.')
Esempio n. 5
0
    return dataset


#%% TI
ma5 = Close.rolling(window=5).mean()['2007-02-08':]
print(sum(sum(np.isnan(ma5.values))))
ma5_open = Open.rolling(window=5).mean()['2007-02-08':]
print(sum(sum(np.isnan(ma5_open.values))))

ma10 = Close.rolling(window=10).mean()['2007-02-08':]
print(sum(sum(np.isnan(ma10.values))))
ma10_open = Open.rolling(window=10).mean()['2007-02-08':]
print(sum(sum(np.isnan(ma10_open.values))))

ema_26 = Close.apply(lambda x: func.EMA(x, 26), axis=0)['2007-02-08':]
print(sum(sum(np.isnan(ema_26.values))))
ema_26_open = Open.apply(lambda x: func.EMA(x, 26), axis=0)['2007-02-08':]
print(sum(sum(np.isnan(ema_26_open.values))))

ema_12 = Close.apply(lambda x: func.EMA(x, 12), axis=0)['2007-02-08':]
print(sum(sum(np.isnan(ema_12.values))))
ema_12_open = Open.apply(lambda x: func.EMA(x, 12), axis=0)['2007-02-08':]
print(sum(sum(np.isnan(ema_12_open.values))))

sd_10 = Close.rolling(10).std()['2007-02-08':]
print(sum(sum(np.isnan(sd_10.values))))
sd_10_open = Open.rolling(10).std()['2007-02-08':]
print(sum(sum(np.isnan(sd_10_open.values))))

bb_up = (ma5 + sd_10 * 2)['2007-02-08':]
Esempio n. 6
0
def test_EMAEMA():
    result = func.EMA(series, timeperiod=2)
    result = func.EMA(result, timeperiod=2)
    i = np.where(~np.isnan(result))[0][0]
    assert_true(len(series) == len(result))
    assert_equals(i, 2)
Esempio n. 7
0
def test_EMAEMA():
    result = func.EMA(series, timeperiod=2)
    result = func.EMA(result, timeperiod=2)
    i = np.where(~np.isnan(result))[0][0]
    assert len(series) == len(result)
    assert i == 2