yahoo_data.open(os.path.join(os.path.dirname(__file__), 'data/' + symbol + '.csv')) training_set = np.array([n for n in yahoo_data.data if n['date'] >= date(2007, 1, 1) and n['date'] <= date(2013, 12, 31)]) test_set = np.array([n for n in yahoo_data.data if n['date'] >= date(2014, 1, 1) and n['date'] <= date(2015, 12, 31)]) rsi = yahoo_data.relative_strength(n=14) (sma13, sma7, macd) = yahoo_data.moving_average_convergence(7, 13) # 7 days and 13 days moving average and MACD test_label = [] training_label = [n['date'] for n in training_set] training_list = np.array([n['adj_close'] for n in training_set]) training_target = np.zeros(len(training_list)) test_list = np.array([n['adj_close'] for n in test_set]) test_target = np.zeros(len(test_list)) test_target[list(argrelextrema(test_list, np.greater)[0])] = 1 test_target[list(argrelextrema(test_list, np.less)[0])] = -1 training_target[list(argrelextrema(training_list, np.greater)[0])] = 1 training_target[list(argrelextrema(training_list, np.less)[0])] = -1 (tmax50, tmin50) = yahoo_data.trading_range_breakout(50) (tmax100, tmin100) = yahoo_data.trading_range_breakout(100) (tmax200, tmin200) = yahoo_data.trading_range_breakout(200) (training_list, tmean, tstd) = normalize([[n['open'], n['high'], n['low'], n['adj_close']] for n in training_set]) (test_list, tmean, tstd) = normalize([[n['open'], n['high'], n['low'], n['adj_close']] for n in test_set], tmean, tstd) (tmax50, tmean, tstd) = normalize(tmax50, tmean, tstd) (tmin50, tmean, tstd) = normalize(tmin50, tmean, tstd) (tmax100, tmean, tstd) = normalize(tmax100, tmean, tstd) (tmin100, tmean, tstd) = normalize(tmin100, tmean, tstd) (tmax200, tmean, tstd) = normalize(tmax200, tmean, tstd) (tmin200, tmean, tstd) = normalize(tmin200, tmean, tstd) (sma7, s20mean, s20std) = normalize(sma7, tmean, tstd) (sma13, s100mean, s100std) = normalize(sma13, tmean, tstd) (macd, macdmean, macdstd) = normalize(macd) (rsi, rsimean, rsistd) = normalize(rsi) dlen = len(training_list)
std = np.std(data) x = (data - mean) / std return x, mean, std # prepare date symbol = '^HSI' yahoo_data = YahooHistorical(data_from=date(2014, 1, 1), data_to=date(2015, 12, 31)) yahoo_data.open(os.path.join(os.path.dirname(__file__), 'data/' + symbol + '.csv')) training_set = yahoo_data.get() test_set = training_set[200:] rsi = yahoo_data.relative_strength(n=14) (sma13, sma7, macd) = yahoo_data.moving_average_convergence(7, 13) # 7 days and 13 days moving average label = np.array([n['date'] for n in test_set]) (training_prices, m, s) = normalize(np.array([n['adj_close'] for n in training_set])) (prices, m, s) = normalize(np.array([n['adj_close'] for n in test_set])) (tmax, tmin) = yahoo_data.trading_range_breakout(50) (sma13, m, s) = normalize(sma13, m, s) (sma7, m, s) = normalize(sma7, m, s) (tmax, m, s) = normalize(tmax, m, s) (tmin, m, s) = normalize(tmin, m, s) (macd, m, s) = normalize(macd) (rsi, m, s) = normalize(rsi) emax = list(argrelextrema(prices, np.greater)[0]) emin = list(argrelextrema(prices, np.less)[0]) plt.grid(True) plt.plot(label, prices, color="blue", label=symbol) plt.fill_between(label, prices, np.min(prices), color="blue", alpha=.15) plt.plot(label, sma7[-len(prices):], color="green", label='SMA(7)') plt.plot(label, sma13[-len(prices):], color="red", label='SMA(13)') plt.plot(label, macd[-len(prices):], color="cyan", linestyle="--", label='MACD')