def template__parse_params_and_execute_algorithm__exception( self, execute_algorithm, argv_params, exception, exception_test): sys_argv = self.create_sys_argv(argv_params) with patch.object(sys, 'argv', sys_argv): with self.assertRaises(exception) as e: parse_params_and_execute_algorithm(TestAlgo) self.assertEqual(str(e.exception), exception_test) execute_algorithm.assert_not_called()
def _main(): if len(sys.argv) < 2: print('File to load needs to be first parameter') sys.exit(1) argv_mod = sys.argv.copy() filepath = argv_mod[1] sys.path.append(os.path.abspath(os.path.dirname(filepath))) AlgorithmClass = _load_algorithm_from_file(filepath) del argv_mod[1] with patch.object(sys, 'argv', argv_mod): parse_params_and_execute_algorithm(AlgorithmClass)
def test__parse_params_and_execute_algorithm__live(self): time_params = LiveTestAlgo.get_test_time_parameters() sys_argv = self.create_sys_argv({ '--start-date': None, '--end-date': str(time_params['pd_end_date']), '--algo-bool': True, '--live': True, '--exchanges': 'kraken', '--some-string': 'testSTR', '--config-directory': 'tests/integration/run/config_dir', '--data-directory': '/', '--auth-aliases': '{"kraken": "kraken_5"}', '--interval': '{}s'.format(int(time_params['pd_interval'].total_seconds())) }) with patch.object(sys, 'argv', sys_argv): with self.assertLogs(): result = parse_params_and_execute_algorithm(LiveTestAlgo) assert_test_live_algo_result(self, result, time_params, True)
def test__parse_params_and_execute_algorithm(self): sys_argv = self.create_sys_argv({ '--start-balances': '{"okex": {"ETH": 3},' ' "kraken": {"USD": 100}}', '--exchanges': 'kraken,okex', '--symbols': '', '--start-date': '2019-10-01 10:10', '--end-date': '2019-10-01 10:16', '--algo-bool': True, '--some-string': 'testSTR', '--interval': '2m' }) with patch.object(sys, 'argv', sys_argv): with self.assertLogs(): result = parse_params_and_execute_algorithm(TestAlgo) assert_test_algo_result(self, result) self.assertEqual(result.args.algo_bool, True) self.assertEqual(result.args.some_string, 'testSTR') self.assertEqual(result.args.live, False)
def test__parse_params_and_execute_algorithm(self, kraken_currencies, kraken_markets, okex_markets): okex_markets.side_effect = fetch_markets_return([ETH_BTC_MARKET]) kraken_markets.side_effect = fetch_markets_return([BTC_USD_MARKET]) kraken_currencies.return_value = [] sys_argv = self.create_sys_argv({ '--start-balances': '{"okex": {"ETH": 3},' ' "kraken": {"USD": 100}}', '--exchanges': 'kraken,okex', '--symbols': '', '--start-date': '2019-10-01 10:10', '--end-date': '2019-10-01 10:16', '--algo-bool': True, '--some-string': 'testSTR', '--interval': '2m' }) with patch.object(sys, 'argv', sys_argv): with self.assertLogs(): result = parse_params_and_execute_algorithm(TestAlgo) assert_test_algo_result(self, result) self.assertEqual(result.args.algo_bool, True) self.assertEqual(result.args.some_string, 'testSTR') self.assertEqual(result.args.live, False)
def template__parse_params_and_execute_algorithm__check_call( self, execute_algorithm, argv_params, check_params): sys_argv = self.create_sys_argv(argv_params) execute_algorithm.side_effect = execute_algorithm_return_args with patch.object(sys, 'argv', sys_argv): args = parse_params_and_execute_algorithm(TestAlgo) params = { 'AlgorithmClass': TestAlgo, 'args': args, 'data_dir': data_dir, 'conf_dir': config_dir, 'exchange_names': ['kraken'], 'pd_end_date': pd_ts('2009-01-01 00:00:00+0000'), 'pd_start_date': pd_ts('2001-01-01 00:00:00+0000'), 'pd_interval': pandas.Timedelta('0 days 00:01:00'), 'start_balances': {}, 'live': False, 'auth_aliases': {}, 'symbols': ['BTC/USD'], } params.update(check_params) execute_algorithm.assert_called_once_with(**params)
def run_test(self, Algo): sys_argv = self.create_sys_argv({ '--start-balances': '{"okex": {"ETH": 3},' ' "kraken": {"USD": 100}}', '--exchanges': 'kraken,okex', '--symbols': '', '--start-date': '2019-10-01 10:10', '--end-date': '2019-10-01 10:16', '--algo-bool': True, '--some-string': 'testSTR', '--interval': '2m' }) with patch.object(sys, 'argv', sys_argv): with self.assertLogs(): return parse_params_and_execute_algorithm(Algo)
import pandas from btrccts.algorithm import AlgorithmBase from btrccts.run import parse_params_and_execute_algorithm class Algorithm(AlgorithmBase): @staticmethod def configure_argparser(argparser): pass def __init__(self, context, args): self._context = context def next_iteration(self): print('context date', self._context.date()) print('date', pandas.Timestamp.now(tz='UTC')) print('') def exit(self, reason): print("Done", reason) parse_params_and_execute_algorithm(Algorithm)