diff --git a/docs/backtesting.md b/docs/backtesting.md index d1cd61057..41498fb00 100644 --- a/docs/backtesting.md +++ b/docs/backtesting.md @@ -31,9 +31,9 @@ optional arguments: Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`). --timerange TIMERANGE Specify what timerange of data to use. - --data-format-ohlcv {json,jsongz,hdf5} + --data-format-ohlcv {json,jsongz,hdf5,feather,parquet} Storage format for downloaded candle (OHLCV) data. - (default: `json`). + (default: `feather`). --max-open-trades INT Override the value of the `max_open_trades` configuration setting. diff --git a/docs/recursive-analysis.md b/docs/recursive-analysis.md index 512b79f8f..07ef2121c 100644 --- a/docs/recursive-analysis.md +++ b/docs/recursive-analysis.md @@ -40,11 +40,41 @@ usage: freqtrade recursive-analysis [-h] [-v] [--logfile FILE] [-V] [-c PATH] [--startup-candle STARTUP_CANDLES [STARTUP_CANDLES ...]] optional arguments: --p PAIR, --pairs PAIR + -h, --help show this help message and exit + -i TIMEFRAME, --timeframe TIMEFRAME + Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`). + --data-format-ohlcv {json,jsongz,hdf5,feather,parquet} + Storage format for downloaded candle (OHLCV) data. + (default: `feather`). + -p PAIR, --pairs PAIR Limit command to this pair. ---startup-candle STARTUP_CANDLE [STARTUP_CANDLE ...] + --startup-candle STARTUP_CANDLE [STARTUP_CANDLE ...] Provide a space-separated list of startup_candle_count to be checked. Default : `199 399 499 999 1999`. + +Common arguments: + -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). + --logfile FILE Log to the file specified. Special values are: + 'syslog', 'journald'. See the documentation for more + details. + -V, --version show program's version number and exit + -c PATH, --config PATH + Specify configuration file (default: + `userdir/config.json` or `config.json` whichever + exists). Multiple --config options may be used. Can be + set to `-` to read config from stdin. + -d PATH, --datadir PATH + Path to directory with historical backtesting data. + --userdir PATH, --user-data-dir PATH + Path to userdata directory. + +Strategy arguments: + -s NAME, --strategy NAME + Specify strategy class name which will be used by the + bot. + --strategy-path PATH Specify additional strategy lookup path. + --timerange TIMERANGE + Specify what timerange of data to use. ``` ### Why are odd-numbered default startup candles used? diff --git a/freqtrade/optimize/analysis/recursive.py b/freqtrade/optimize/analysis/recursive.py index 47dfc6b1a..5a41f8795 100644 --- a/freqtrade/optimize/analysis/recursive.py +++ b/freqtrade/optimize/analysis/recursive.py @@ -64,7 +64,7 @@ class RecursiveAnalysis(BaseAnalysis): self.dict_recursive[indicator][part.startup_candle] = f"{diff:.3f}%" else: - logger.info("No difference found. Stop the process.") + logger.info("No variance on indicator(s) found due to recursive formula.") break # For lookahead bias check @@ -100,7 +100,7 @@ class RecursiveAnalysis(BaseAnalysis): # logger.info("part value {:.5f}".format(values_diff_other)) else: - logger.info("No lookahead bias on indicators found. Stop the process.") + logger.info("No lookahead bias on indicators found.") def prepare_data(self, varholder: VarHolder, pairs_to_load: List[DataFrame]): diff --git a/freqtrade/optimize/analysis/recursive_helpers.py b/freqtrade/optimize/analysis/recursive_helpers.py index 58983b245..463f6acdc 100644 --- a/freqtrade/optimize/analysis/recursive_helpers.py +++ b/freqtrade/optimize/analysis/recursive_helpers.py @@ -31,10 +31,13 @@ class RecursiveAnalysisSubFunctions: temp_data.append(values.get(int(candle), '-')) data.append(temp_data) - from tabulate import tabulate - table = tabulate(data, headers=headers, tablefmt="orgtbl") - print(table) - return table, headers, data + if len(data) > 0: + from tabulate import tabulate + table = tabulate(data, headers=headers, tablefmt="orgtbl") + print(table) + return table, headers, data + + return None @staticmethod def calculate_config_overrides(config: Config): @@ -81,8 +84,7 @@ class RecursiveAnalysisSubFunctions: if not (strategy_list := config.get('strategy_list', [])): if config.get('strategy') is None: raise OperationalException( - "No Strategy specified. Please specify a strategy via --strategy or " - "--strategy-list" + "No Strategy specified. Please specify a strategy via --strategy" ) strategy_list = [config['strategy']] @@ -101,6 +103,5 @@ class RecursiveAnalysisSubFunctions: RecursiveAnalysis_instances) else: logger.error("There were no strategies specified neither through " - "--strategy nor through " - "--strategy-list " + "--strategy " "or timeframe was not specified.")