コード例 #1
0
ファイル: test_csvstream.py プロジェクト: ma-da/CryptoTGYM
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)
コード例 #2
0
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)
コード例 #3
0
ファイル: test_trading.py プロジェクト: zeta1999/dq-MM
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()
コード例 #4
0
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())
コード例 #5
0
ファイル: DQNAgent.py プロジェクト: zeta1999/dq-MM
        # 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()
コード例 #6
0
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,
コード例 #7
0
ファイル: csv_streamer.py プロジェクト: ma-da/CryptoTGYM
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()