def test_strategy(self, indicator, params=None, data=None): # DATA if data is None: stock = pd.read_csv('../Data/bitcoin_histo.csv', sep=';') pxlast_csv_str = stock['PX_LAST'] pxlast = pd.to_numeric(pxlast_csv_str) dates_csv_str = stock['Date'] dates = pd.to_datetime(dates_csv_str, dayfirst=True) else: # dates = pd.Series(data[0].values) pxlast = data # pd.Series(data[1].values) # COMPUTATIONS if indicator == 'macd': ss = params[0] ls = params[1] sf = params[2] macd, macd_ema9 = Indicators.macd(pxlast, short_span=ss, long_span=ls, smoothing_factor=sf) returns = pxlast.pct_change(1) invested = Helpers.indicators_to_investment(indicator_name='macd', data=(macd, macd_ema9)) elif indicator == 'ema': ema_difference = Indicators.ema_diff(pxlast, long_span=26, short_span=12) returns = pxlast.pct_change(1) invested = Helpers.indicators_to_investment( indicator_name='ema_diff', data=ema_difference) elif indicator == 'macd_rsi': macd, macd_ema9 = Indicators.macd(pxlast, long_span=26, short_span=12, smoothing_factor=9) rsi = Indicators.RSI(pxlast, period=14) invested = Helpers.indicators_to_investment( indicator_name='macd_rsi', data=(macd, macd_ema9, rsi)) # PROFITABILITY total_profit, strat_profit = self.profitability(returns, invested) # return strat_profit.iloc[-1].values[0] # PLOT data_plot = pd.concat([total_profit, strat_profit], axis=1) data_plot.plot() plt.show()