-
Notifications
You must be signed in to change notification settings - Fork 56
Indicators
mkarpis edited this page Aug 28, 2017
·
1 revision
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.
Get dataset for your desired pair
df = look_back.loc[look_back['pair'] == pair].sort_values('date')
close = df['close'].values
volume = df['volume'].values
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 = talib.RSI(close[-15:], timeperiod=14)[-1]
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