def update(self): """ """ wl = self.portfolio.watch_list for ticker, val in wl.items(): if ticker in ma_short and ticker in ma_long: ma_short[TIME.timestamp].append(mean(DATA.get_data_interval(ticker, TIME.timestamp, TIME.timestamp + timedelta(days=20), 'close', config.DAY_INTERVAL))) ma_long[TIME.timestamp].append(mean(DATA.get_data_interval(ticker, TIME.timestamp, TIME.timestamp + timedelta(days=150), 'close', config.DAY_INTERVAL))) else: ma_short[TIME.timestamp] = mean(DATA.get_data_interval(ticker, TIME.timestamp, TIME.timestamp + timedelta(days=20), 'close', config.DAY_INTERVAL)) ma_long[TIME.timestamp] = mean(DATA.get_data_interval(ticker, TIME.timestamp, TIME.timestamp + timedelta(days=150), 'close', config.DAY_INTERVAL))
def __init__(self, name, portfolio, shortterm, longterm): """ :param name: Name of Algorithm """ self.name = name self.portfolio = portfolio self.ma_short = {} self.ma_long = {} self.shortterm = shortterm self.longterm = longterm wl = self.portfolio.watch_list for ticker, val in wl.items(): ma_short[ticker] = {} ma_long[ticker] = {} ma_short[ticker][TIME.timestamp] = mean(DATA.get_data_interval(ticker, TIME.timestamp, TIME.timestamp + timedelta(days=self.shortterm), 'close', config.DAY_INTERVAL)) ma_long[ticker][TIME.timestamp] = mean(DATA.get_data_interval(ticker, TIME.timestamp, TIME.timestamp + timedelta(days=self.longterm), 'close', config.DAY_INTERVAL))
def update_special(self): dividend = DATA.get_data(self.ticker, TIME.date, 'dividend_amount') split = DATA.get_data(self.ticker, TIME.date, 'split_coefficient') if dividend is not None and split is not None: self.dividend = dividend self.split = split else: self.dividend = 0 self.split = 1
def get_quote(self, ticker, timestamp=None): if timestamp is None: timestamp = self.curr_time quote = {} quote['open'] = DATA.get_data(ticker, timestamp, 'open') quote['high'] = DATA.get_data(ticker, timestamp, 'high') quote['low'] = DATA.get_data(ticker, timestamp, 'low') quote['close'] = DATA.get_data(ticker, timestamp, 'close') quote['volume'] = DATA.get_data(ticker, timestamp, 'volume') return quote
def get_quote(self, ticker, timestamp=None, daily=False): if timestamp is None: timestamp = self.curr_time if timestamp > self.curr_time: print('Request of future data\n') quote = {} quote['open'] = DATA.get_data(ticker, timestamp, 'open', daily) quote['high'] = DATA.get_data(ticker, timestamp, 'high', daily) quote['low'] = DATA.get_data(ticker, timestamp, 'low', daily) quote['close'] = DATA.get_data(ticker, timestamp, 'close', daily) quote['volume'] = DATA.get_data(ticker, timestamp, 'volume', daily) return quote
def update_data(self): for ticker, val in self.portfolio.watch_list.items(): self.dataset[ticker] = DATA.get_data_interval(ticker, TIME.timestamp - timedelta(days=self.num_days), TIME.timestamp, 'close', INTERVAL) self.train_set, self.test_set = dataproc.process_data(self.dataset)
def preprocess(self): tickers = {} wl = self.portfolio.watch_list for ticker, val in wl.items(): tickers[ticker] = [] data = DATA.get_data_interval(ticker, TIME.timestamp - timedelta(days=50), TIME.timestamp, 'close', INTERVAL) train_split = len(data) * 0.9 test_split = len(data) * 0.1 train = data[train_split:] test = data[:test_split] for i, val in enumerate(data): window = data[:5]
def set_quote(self): quote = DATA.get_data(self.ticker, TIME.timestamp, 'close') if quote is not None: self.cur_quote = quote return True return False