示例#1
0
    # 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,
示例#2
0
                        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()
示例#3
0
                        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)