def initialize_cache(currency_pair: str, tick_rate: str) -> None: with Cache.configure(currency_pair, DATA_CACHE_GROUP): cache = Cache.get() source_mod_time = get_latest_source_modification(currency_pair) if cache.cache_exists( ) and cache.get_data_mod_time() < source_mod_time: print('Cache invalid. Clearing cache.') cache.clear_all_keys()
def preprocess_signals(data: pd.DataFrame, args: Namespace) -> pd.DataFrame: with Cache.configure(args.currency_pair, args.tick_rate): signal_strategy = SignalStrategyFactory.get( 'ma', **signal_strat_argument_parser(args)) stopping_strat_argument_parser(args) stop_strategy = StoppingStrategyFactory.get( args.stopping_strat, **stopping_strat_argument_parser(args)) preprocessor = Preprocessor(signal_strategy, stop_strategy) if args.no_cache: return preprocessor.find_signals(data) else: return preprocessor.get_signals(data)
def simulate(data: pd.Series, signals: pd.DataFrame, args: Namespace) -> (pd.DataFrame, dict): with Cache.configure(args.currency_pair, args.tick_rate): resolver = SignalResolver(data[args.quote], args.reverse) if args.no_cache: resolved_signals = resolver.resolve_signals( signals, args.start, args.stop) else: resolved_signals = resolver.get_resolve_signals( signals, args.start, args.stop) analyzer = SignalAnalyzer(resolved_signals) stats = analyzer.get_stats(args.start, args.stop) return resolved_signals, stats
def load_data(currency_pair: str, tick_rate: str, no_cache: bool) -> pd.DataFrame: source_reader = HistDataReader() loader = DataLoader(source_reader, tick_rate) if no_cache: print('Cache disabled.') data, resampled_data = loader.load_from_sources(currency_pair) else: with Cache.configure(currency_pair, DATA_CACHE_GROUP): data, resampled_data = loader.load(currency_pair) if resampled_data is not None: print_data_summary(resampled_data) return data, resampled_data else: raise RuntimeError('Unable to load data')