import utility
import numpy as np
import matplotlib.pyplot as plt
from sklearn import model_selection
def runner(model_fit=None, close_prices_vecs=None, stock_name_time_stamps=None, rsi_vecs=None, mfi_vecs=None,
ema_vecs=None, so_vecs=None, macd_vecs=None, sl_vecs=None, scaler=None):
for i in range(0, len(close_prices_vecs)):
close_len = len(close_prices_vecs[i])
date_len = len(stock_name_time_stamps[i][1])
rsi_len = len(rsi_vecs[i])
mfi_len = len(mfi_vecs[i])
ema_len = len(ema_vecs[i])
so_len = len(so_vecs[i])
macd_len = len(macd_vecs[i])
sl_len = len(sl_vecs[i])
shared_data_len = min(close_len, rsi_len, mfi_len, ema_len, so_len, macd_len, sl_len)
x = np.column_stack((rsi_vecs[i][rsi_len - shared_data_len:], mfi_vecs[i][mfi_len - shared_data_len:],
ema_vecs[i][ema_len - shared_data_len:], so_vecs[i][so_len - shared_data_len:],
macd_vecs[i][macd_len - shared_data_len:], sl_vecs[i][sl_len - shared_data_len:]))
y = close_prices_vecs[i][close_len - shared_data_len:]
print("Analysis for: " + stock_name_time_stamps[i][0])
x_len = len(x)
y_len = len(y)
x_train, x_test, y_train, y_test = x[:int(x_len*0.75)], x[int(x_len*0.75):], y[:int(y_len*0.75)], y[int(y_len*0.75):]
x_train = scaler.fit_transform(x_train)
x_test = scaler.fit_transform(x_test)
y_pred = utility.test_regression(x_train, y_train, x_test, y_test, model_fit)
y_test_len, y_pred_len = len(y_test), len(y_pred)
shared_data_len = min(date_len, y_test_len, y_pred_len)
plt.figure(figsize=(20, 5))
plt.title(stock_name_time_stamps[i][0])
plt.xlabel("date")
plt.ylabel("close_price")
plt.plot(stock_name_time_stamps[i][1][date_len - shared_data_len:], y_test, 'ro')
plt.plot(stock_name_time_stamps[i][1][date_len - shared_data_len:], y_pred)
plt.show()
print("Done for: " + stock_name_time_stamps[i][0])
print("====================================================================")
print("All analysis done")
print()
if __name__ == '__main__':
runner()