Skip to content

Indicators

mkarpis edited this page Aug 28, 2017 · 1 revision

Indicators / Features

Below is a code sample of implementation Financial Indicators which can be used directly or as an input feature for your ML strategy. Indicators, should be placed and used under the calculate function in your strategy.

Initial Tips & Tricks

Getting dataset for your pair

Get dataset for your desired pair

df = look_back.loc[look_back['pair'] == pair].sort_values('date')

Get desired values from dataset

close = df['close'].values
volume = df['volume'].values

Indicators

SMA (Single Moving Average)

sma_interva1 = 6
sma_interva2 = 18
sma1 = talib.SMA(close[-sma_interva1:], timeperiod=sma_interva1)[-1]
sma2 = talib.SMA(close[-sma_interva2:], timeperiod=sma_interva2)[-1]

RSI

rsi = talib.RSI(close[-15:], timeperiod=14)[-1]

OBV (On Balance Volume)

volume = df['volume'].values
obv1_now = talib.OBV(close[-self.interval1:], volume[-self.interval1:])[-1]
obv2_now = talib.OBV(close[-self.interval2:], volume[-self.interval2:])[-1]

if pair not in self.previous_obvs1 or pair not in self.previous_obvs2:
    # print('missing previous_obvs, skipping pair: ' + pair)
    self.previous_obvs1[pair] = obv1_now
    self.previous_obvs2[pair] = obv2_now
    continue

obv1_prev = self.previous_obvs1[pair]
obv2_prev = self.previous_obvs2[pair]

obv1_perc_change = ((obv1_now - obv1_prev) * 100) / obv1_prev
obv2_perc_change = ((obv2_now - obv2_prev) * 100) / obv2_prev

if self.verbosity > 0:
    print('obv:')
    print('\tobv1_now:', obv1_now)
    print('\tobv2_now:', obv2_now)
    print('\tobv1_now:', obv1_prev)
    print('\tobv2_now:', obv2_prev)
    print('\tobv1_perc_change:', obv1_perc_change)
    print('\tobv2_perc_change:', obv2_perc_change)

self.previous_obvs1[pair] = obv1_now
self.previous_obvs2[pair] = obv2_now