# create the training, val set, trend_set, status_dicts train_set, val_set, extra_set = data.read_bundle_csv( path="../data/14", sep='\t', filter_data=True, fix_open_price=False, percentage=0.8, extra_indicator=True, trend_names=['bollinger_bands', 'MACD', 'RSI'], status_names=[]) env = environ.StocksEnv(train_set, extra_set, bars_count=BARS_COUNT, reset_on_close=True, random_ofs_on_reset=True, volumes=False, train_mode=True) env = wrappers.TimeLimit(env, max_episode_steps=1000) env_val = environ.StocksEnv(val_set, extra_set, bars_count=BARS_COUNT, reset_on_close=True, random_ofs_on_reset=True, volumes=False, train_mode=False) # env_val = wrappers.TimeLimit(env_val, max_episode_steps=1000) # create neural network net = models.DoubleLSTM(price_input_size=env.price_size,
help="Name to use in output images") parser.add_argument("--commission", type=float, default=0.1, help="Commission size in percent, default=0.1") parser.add_argument("--conv", default=False, action="store_true", help="Use convolution model instead of FF") args = parser.parse_args() prices = data.load_relative(args.data) env = environ.StocksEnv({"TEST": prices}, bars_count=args.bars, reset_on_close=False, commission=args.commission, state_1d=args.conv, random_ofs_on_reset=False, reward_on_close=False, volumes=False) if args.conv: net = models.DQNConv1D(env.observation_space.shape, env.action_space.n) else: net = models.SimpleFFDQN(env.observation_space.shape[0], env.action_space.n) net.load_state_dict( torch.load(args.model, map_location=lambda storage, loc: storage)) obs = env.reset() start_price = env._state._cur_close()
DEFAULT_VAL_STOCKS) parser.add_argument("-r", "--run", required=True, help="Run name") args = parser.parse_args() device = torch.device("cuda" if args.cuda else "cpu") saves_path = os.path.join("saves", args.run) os.makedirs(saves_path, exist_ok=True) if args.year is not None or os.path.isfile(args.data): if args.year is not None: stock_data = data.load_year_data(args.year) else: stock_data = {"YNDX": data.load_relative(args.data)} env = environ.StocksEnv(stock_data, bars_count=BARS_COUNT, reset_on_close=True, state_1d=False, volumes=False) env_tst = environ.StocksEnv(stock_data, bars_count=BARS_COUNT, reset_on_close=True, state_1d=False) elif os.path.isdir(args.data): env = environ.StocksEnv.from_dir(args.data, bars_count=BARS_COUNT, reset_on_close=True, state_1d=False) env_tst = environ.StocksEnv.from_dir(args.data, bars_count=BARS_COUNT, reset_on_close=True, state_1d=False)
args = parser.parse_args() device = torch.device("cuda" if args.cuda else "cpu") saves_path = SAVES_DIR / f"conv-{args.run}" saves_path.mkdir(parents=True, exist_ok=True) data_path = pathlib.Path(args.data) val_path = pathlib.Path(args.val) if args.year is not None or data_path.is_file(): if args.year is not None: stock_data = data.load_year_data(args.year) else: stock_data = {"YNDX": data.load_relative(data_path)} env = environ.StocksEnv(stock_data, bars_count=BARS_COUNT, state_1d=True) env_tst = environ.StocksEnv(stock_data, bars_count=BARS_COUNT, state_1d=True) elif data_path.is_dir(): env = environ.StocksEnv.from_dir(data_path, bars_count=BARS_COUNT, state_1d=True) env_tst = environ.StocksEnv.from_dir(data_path, bars_count=BARS_COUNT, state_1d=True) else: raise RuntimeError("No data to train on") env = gym.wrappers.TimeLimit(env, max_episode_steps=1000)