def test_runs_with__external_feed_only(portfolio): df = pd.read_csv("tests/data/input/coinbase_(BTC,ETH)USD_d.csv").tail(100) df = df.rename({"Unnamed: 0": "date"}, axis=1) df = df.set_index("date") coinbase_btc = df.loc[:, [name.startswith("BTC") for name in df.columns]] coinbase_eth = df.loc[:, [name.startswith("ETH") for name in df.columns]] ta.add_all_ta_features( coinbase_btc, colprefix="BTC:", **{k: "BTC:" + k for k in ['open', 'high', 'low', 'close', 'volume']} ) ta.add_all_ta_features( coinbase_eth, colprefix="ETH:", **{k: "ETH:" + k for k in ['open', 'high', 'low', 'close', 'volume']} ) nodes = [] with Module("coinbase") as coinbase: for name in coinbase_btc.columns: nodes += [Stream(name, list(coinbase_btc[name]))] for name in coinbase_eth.columns: nodes += [Stream(name, list(coinbase_eth[name]))] feed = DataFeed()(coinbase) action_scheme = ManagedRiskOrders() reward_scheme = SimpleProfit() env = TradingEnvironment( portfolio=portfolio, action_scheme=action_scheme, reward_scheme=reward_scheme, feed=feed, window_size=50, use_internal=False, enable_logger=False ) done = False obs = env.reset() while not done: action = env.action_space.sample() obs, reward, done, info = env.step(action) n_features = coinbase_btc.shape[1] + coinbase_eth.shape[1] assert obs.shape == (50, n_features)
def test_init_multiple_exchanges(portfolio): action_scheme = ManagedRiskOrders() reward_scheme = SimpleProfit() env = TradingEnvironment(portfolio=portfolio, action_scheme=action_scheme, reward_scheme=reward_scheme, window_size=50, enable_logger=False) obs = env.reset() assert obs.shape == (50, 32) assert env.observation_space.shape == (50, 32)
def test_runs_with_only_internal_data_feed(portfolio): action_scheme = ManagedRiskOrders() reward_scheme = SimpleProfit() env = TradingEnvironment(portfolio=portfolio, action_scheme=action_scheme, reward_scheme=reward_scheme, window_size=50, enable_logger=False) done = False obs = env.reset() while not done: action = env.action_space.sample() obs, reward, done, info = env.step(action) assert obs.shape == (50, 32)
sys.path.append(os.path.dirname(os.path.abspath(''))) from tensortrade.environments import TradingEnvironment from tensortrade.exchanges.simulated import FBMExchange from tensortrade.actions import DiscreteActionStrategy from tensortrade.rewards import SimpleProfitStrategy exchange = FBMExchange() action_strategy = DiscreteActionStrategy() reward_strategy = SimpleProfitStrategy() env = TradingEnvironment(exchange=exchange, action_strategy=action_strategy, reward_strategy=reward_strategy) obs = env.reset() sell_price = 1e9 stop_price = -1 print('Initial portfolio: ', exchange.portfolio) for i in range(1000): action = 0 if obs['close'] < sell_price else 18 action = 19 if obs['close'] < stop_price else action if i == 0 or portfolio['BTC'] == 0: action = 16 sell_price = obs['close'] + (obs['close'] / 50) stop_price = obs['close'] - (obs['close'] / 50) obs, reward, done, info = env.step(action)