Ejemplo n.º 1
0
 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()
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
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)