From 9c5b94adf506f2e726b2e497655a424c2cc6f4f5 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Dec 2019 13:46:25 +0100 Subject: [PATCH] Pass data_format to methods --- docs/configuration.md | 2 ++ freqtrade/configuration/arguments.py | 2 +- freqtrade/configuration/cli_options.py | 12 ++++++++++++ freqtrade/configuration/configuration.py | 7 +++++++ freqtrade/constants.py | 14 +++++++------- freqtrade/data/history.py | 10 ++++++---- freqtrade/utils.py | 12 +++++++++--- 7 files changed, 44 insertions(+), 15 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 90f0aa791..002e3ab5d 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -106,6 +106,8 @@ Mandatory parameters are marked as **Required**, which means that they are requi | `internals.sd_notify` | Enables use of the sd_notify protocol to tell systemd service manager about changes in the bot state and issue keep-alive pings. See [here](installation.md#7-optional-configure-freqtrade-as-a-systemd-service) for more details.
***Datatype:*** *Boolean* | `logfile` | Specifies logfile name. Uses a rolling strategy for log file rotation for 10 files with the 1MB limit per file.
***Datatype:*** *String* | `user_data_dir` | Directory containing user data.
*Defaults to `./user_data/`*.
***Datatype:*** *String* +| `dataformat_ohlcv` | Data format to use to store OHLCV historic data.
*Defaults to `json`*.
***Datatype:*** *String* +| `dataformat_trades` | Data format to use to store trades historic data.
*Defaults to `jsongz`*.
***Datatype:*** *String* ### Parameters in the strategy diff --git a/freqtrade/configuration/arguments.py b/freqtrade/configuration/arguments.py index cefa86927..121bd23b4 100644 --- a/freqtrade/configuration/arguments.py +++ b/freqtrade/configuration/arguments.py @@ -51,7 +51,7 @@ ARGS_CONVERT_DATA = ["pairs", "format_from", "format_to"] ARGS_CONVERT_DATA_OHLCV = ARGS_CONVERT_DATA + ["timeframes"] ARGS_DOWNLOAD_DATA = ["pairs", "pairs_file", "days", "download_trades", "exchange", - "timeframes", "erase"] + "timeframes", "erase", "dataformat_ohlcv", "dataformat_trades"] ARGS_PLOT_DATAFRAME = ["pairs", "indicators1", "indicators2", "plot_limit", "db_url", "trade_source", "export", "exportfilename", diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py index ffaf9ea66..c80bea393 100644 --- a/freqtrade/configuration/cli_options.py +++ b/freqtrade/configuration/cli_options.py @@ -344,6 +344,18 @@ AVAILABLE_CLI_OPTIONS = { choices=constants.AVAILABLE_DATAHANDLERS, required=True, ), + "dataformat_ohlcv": Arg( + '--data-format', + help='Storage format for downloaded ohlcv data. (default: `%(default)s`).', + choices=constants.AVAILABLE_DATAHANDLERS, + default='json' + ), + "dataformat_trades": Arg( + '--data-format-trades', + help='Storage format for downloaded trades data. (default: `%(default)s`).', + choices=constants.AVAILABLE_DATAHANDLERS, + default='jsongz' + ), "exchange": Arg( '--exchange', help=f'Exchange name (default: `{constants.DEFAULT_EXCHANGE}`). ' diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index f73b52c10..aa453a392 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -339,9 +339,16 @@ class Configuration: self._args_to_config(config, argname='days', logstring='Detected --days: {}') + self._args_to_config(config, argname='download_trades', logstring='Detected --dl-trades: {}') + self._args_to_config(config, argname='dataformat_ohlcv', + logstring='Using "{}" to store OHLCV data.') + + self._args_to_config(config, argname='dataformat_trade', + logstring='Using "{}" to store trades data.') + def _process_runmode(self, config: Dict[str, Any]) -> None: if not self.runmode: diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 8d9cde98b..95ec71552 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -216,17 +216,17 @@ CONF_SCHEMA = { 'process_throttle_secs': {'type': 'integer'}, 'interval': {'type': 'integer'}, 'sd_notify': {'type': 'boolean'}, - 'dataformat_ohlcv': { - 'type': 'string', + } + }, + 'dataformat_ohlcv': { + 'type': 'string', 'enum': AVAILABLE_DATAHANDLERS, 'default': 'json' - }, - 'dataformat_trades': { - 'type': 'string', + }, + 'dataformat_trades': { + 'type': 'string', 'enum': AVAILABLE_DATAHANDLERS, 'default': 'jsongz' - } - } } }, 'definitions': { diff --git a/freqtrade/data/history.py b/freqtrade/data/history.py index 9dad90864..c06b14b4a 100644 --- a/freqtrade/data/history.py +++ b/freqtrade/data/history.py @@ -178,7 +178,7 @@ def _download_pair_history(datadir: Path, :param timerange: range of time to download :return: bool with success state """ - data_handler = get_datahandler(datadir) + data_handler = get_datahandler(datadir, data_handler=data_handler) try: logger.info( @@ -327,12 +327,14 @@ def refresh_backtest_trades_data(exchange: Exchange, pairs: List[str], datadir: def convert_trades_to_ohlcv(pairs: List[str], timeframes: List[str], - datadir: Path, timerange: TimeRange, erase=False) -> None: + datadir: Path, timerange: TimeRange, erase=False, + data_format_ohlcv: str = 'json', + data_format_trades: str = 'jsongz') -> None: """ Convert stored trades data to ohlcv data """ - data_handler_trades = get_datahandler(datadir, data_format='jsongz') - data_handler_ohlcv = get_datahandler(datadir, data_format='json') + data_handler_trades = get_datahandler(datadir, data_format=data_format_trades) + data_handler_ohlcv = get_datahandler(datadir, data_format=data_format_ohlcv) for pair in pairs: trades = data_handler_trades.trades_load(pair) diff --git a/freqtrade/utils.py b/freqtrade/utils.py index 5f646cc7a..81d41f28a 100644 --- a/freqtrade/utils.py +++ b/freqtrade/utils.py @@ -204,16 +204,22 @@ def start_download_data(args: Dict[str, Any]) -> None: if config.get('download_trades'): pairs_not_available = refresh_backtest_trades_data( exchange, pairs=config["pairs"], datadir=config['datadir'], - timerange=timerange, erase=config.get("erase")) + timerange=timerange, erase=config.get("erase"), + data_format=config['dataformat_trades']) # Convert downloaded trade data to different timeframes convert_trades_to_ohlcv( pairs=config["pairs"], timeframes=config["timeframes"], - datadir=config['datadir'], timerange=timerange, erase=config.get("erase")) + datadir=config['datadir'], timerange=timerange, erase=config.get("erase"), + data_format_ohlcv=config['dataformat_ohlcv'], + data_format_trades=config['dataformat_trades'], + ) + else: pairs_not_available = refresh_backtest_ohlcv_data( exchange, pairs=config["pairs"], timeframes=config["timeframes"], - datadir=config['datadir'], timerange=timerange, erase=config.get("erase")) + datadir=config['datadir'], timerange=timerange, erase=config.get("erase"), + data_format=config['dataformat_ohlcv']) except KeyboardInterrupt: sys.exit("SIGINT received, aborting ...")