def test_csv_streamer(): with open('test.csv', 'w+') as csvfile: csv_test = csv.writer(csvfile) for i in range(10): csv_test.writerow([1] * 10) csvstreamer = CSVStreamer(filename='./test.csv') for i in range(10): assert all(csvstreamer.next() == [1] * 10)
def get_generator(gen_type='WavySignal', filename=''): print('applying generator {0}'.format(gen_type)) if gen_type == 'WavySignal': return WavySignal(period_1=25, period_2=50, epsilon=-0.5) if gen_type == 'CSVStreamer': return CSVStreamer(filename=filename) if gen_type == 'CSVTrading': return CSVTrading(filename=filename)
class TestSpreadTrading(object): #data_generator = AR1(a=0.1, ba_spread=0.1) data_generator = CSVStreamer(filename='../../data/AMZN-L1.csv') st = SpreadTrading(data_generator=data_generator, spread_coefficients=[1], trading_fee=0.2, time_fee=0.1, history_length=2) def test_init(self): assert self.st._data_generator == self.data_generator assert self.st._spread_coefficients == [1] assert self.st._first_render assert self.st._trading_fee == 0.2 assert self.st._time_fee == 0.1 assert self.st._episode_length == 1000 assert self.st.n_actions == 3 assert self.st._history_length == 2 assert len(self.st._prices_history) == 2 def test_step(self): # Buy state = self.st.step(np.array([0, 1, 0])) #assert state[0][0] == state[0][1] assert all(state[0][-3:] == np.array([0, 1, 0])) assert self.st._entry_price != 0 assert self.st._exit_price == 0 # Hold state = self.st.step(np.array([1, 0, 0])) assert all(state[0][-3:] == np.array([0, 1, 0])) assert self.st._entry_price != 0 assert self.st._exit_price == 0 # Sell state = self.st.step(np.array([0, 0, 1])) assert all(state[0][-3:] == np.array([1, 0, 0])) assert self.st._entry_price == 0 assert self.st._exit_price != 0 def test_reset(self): return self.st.reset()
max_steps = 1000 explore_start = 1.0 explore_stop = 0.01 decay_rate = 1e-4 _lambda = 0.95 value_coefficient = 0.5 entropy_coefficient = 0.01 max_grad_norm = 0.5 log_interval = 10 hold = np.array([1, 0, 0]) buy = np.array([0, 1, 0]) sell = np.array([0, 0, 1]) possible_actions = [hold, buy, sell] #Classes and variables generator = CSVStreamer(filename='/Users/tawehbeysolow/Downloads/amazon_order_book_data2.csv') #generator = WavySignal(period_1=25, period_2=50, epsilon=-0.5) memory = Memory(max_size=memory_size) generator = WavySignal(period_1=25, period_2=50, epsilon=-0.5) environment = SpreadTrading(spread_coefficients=[1], data_generator=generator, trading_fee=trading_fee, time_fee=time_fee, history_length=history_length) state_size = len(environment.reset())
# action processing action_batch = np.where(action_batch == 1) return state_batch, action_batch, reward_batch, next_state_batch, done_batch # In[105]: import matplotlib.pyplot as plt #import sys #sys.path.append('/Users/matthewdixon/Downloads/Trading-Gym/') #from tgym.envs import SpreadTrading #from tgym.gens.deterministic import WavySignal #from tgym.gens.random import AR1 from tgym.gens.csvstream import CSVStreamer # Instantiating the environmnent generator = CSVStreamer(filename='../data/AMZN-L1.csv') #generator = AR1(a=0.1, ba_spread=0.1) #WavySignal(period_1=25, period_2=50, epsilon=-0.5) episodes = 100 episode_length = 400 trading_fee = .0 time_fee = 0 history_length = 2 environment = SpreadTrading(spread_coefficients=[1], data_generator=generator, trading_fee=trading_fee, time_fee=time_fee, history_length=history_length) # In[102]: state = environment.reset()
if __name__ == "__main__": start = time.time() # Instantiating the environmnent gen_type = 'C' if gen_type == 'W': generator = WavySignal(period_1=25, period_2=50, epsilon=-0.5, ba_spread=0.0001) elif gen_type == 'R': generator = RandomGenerator(spread=0.0001, range_low=1.0, range_high=2.0) elif gen_type == 'C': filename = r'./examples/price_usdeur.csv' generator = CSVStreamer(filename=filename) episodes = 50 episode_length = 2000 trading_fee = .2 time_fee = 0 history_length = 10000 # history_length number of historical states in the observation vector. profit_taken = 10 stop_loss = -5 render_show = False trading_type = 'T' if trading_type == 'T': environment = TickTrading(data_generator=generator, trading_fee=trading_fee,
from __future__ import absolute_import from tgym.envs.trading_spread import SpreadTrading from tgym.envs.trading_tick import TickTrading from tgym.gens.csvstream import CSVStreamer generator = CSVStreamer(filename='./examples/price_2.csv') episode_length = 200 environment = SpreadTrading(spread_coefficients=[2, -1], data_generator=generator, episode_length=episode_length) environment = TickTrading #environment.render() while True: action = input("Action: Buy (b) / Sell (s) / Hold (enter): ") if action == 'b': action = [0, 1, 0] elif action == 's': action = [0, 0, 1] else: action = [1, 0, 0] environment.step(action) environment.render()