diff --git a/freqtrade/commands/arguments.py b/freqtrade/commands/arguments.py index a639d1f87..c42e46711 100755 --- a/freqtrade/commands/arguments.py +++ b/freqtrade/commands/arguments.py @@ -45,7 +45,8 @@ ARGS_COMMON_OPTIMIZE = [ "pairs", ] -ARGS_BACKTEST = ARGS_COMMON_OPTIMIZE + [ +ARGS_BACKTEST = [ + *ARGS_COMMON_OPTIMIZE, "position_stacking", "enable_protections", "dry_run_wallet", @@ -58,7 +59,8 @@ ARGS_BACKTEST = ARGS_COMMON_OPTIMIZE + [ "freqai_backtest_live_models", ] -ARGS_HYPEROPT = ARGS_COMMON_OPTIMIZE + [ +ARGS_HYPEROPT = [ + *ARGS_COMMON_OPTIMIZE, "hyperopt", "hyperopt_path", "position_stacking", @@ -78,7 +80,7 @@ ARGS_HYPEROPT = ARGS_COMMON_OPTIMIZE + [ "analyze_per_epoch", ] -ARGS_EDGE = ARGS_COMMON_OPTIMIZE + ["stoploss_range"] +ARGS_EDGE = [*ARGS_COMMON_OPTIMIZE, "stoploss_range"] ARGS_LIST_STRATEGIES = [ "strategy_path", @@ -127,7 +129,7 @@ ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy", "strategy_path", "template"] ARGS_CONVERT_DATA_TRADES = ["pairs", "format_from_trades", "format_to", "erase", "exchange"] ARGS_CONVERT_DATA = ["pairs", "format_from", "format_to", "erase", "exchange"] -ARGS_CONVERT_DATA_OHLCV = ARGS_CONVERT_DATA + ["timeframes", "trading_mode", "candle_types"] +ARGS_CONVERT_DATA_OHLCV = [*ARGS_CONVERT_DATA, "timeframes", "trading_mode", "candle_types"] ARGS_CONVERT_TRADES = [ "pairs", diff --git a/freqtrade/commands/cli_options.py b/freqtrade/commands/cli_options.py index a98444f73..9620be7ab 100755 --- a/freqtrade/commands/cli_options.py +++ b/freqtrade/commands/cli_options.py @@ -463,7 +463,7 @@ AVAILABLE_CLI_OPTIONS = { "format_from_trades": Arg( "--format-from", help="Source format for data conversion.", - choices=constants.AVAILABLE_DATAHANDLERS + ["kraken_csv"], + choices=[*constants.AVAILABLE_DATAHANDLERS, "kraken_csv"], required=True, ), "format_from": Arg( diff --git a/freqtrade/config_schema/config_schema.py b/freqtrade/config_schema/config_schema.py index 64c661568..8b88e655a 100644 --- a/freqtrade/config_schema/config_schema.py +++ b/freqtrade/config_schema/config_schema.py @@ -1346,7 +1346,8 @@ SCHEMA_BACKTEST_REQUIRED = [ "dataformat_ohlcv", "dataformat_trades", ] -SCHEMA_BACKTEST_REQUIRED_FINAL = SCHEMA_BACKTEST_REQUIRED + [ +SCHEMA_BACKTEST_REQUIRED_FINAL = [ + *SCHEMA_BACKTEST_REQUIRED, "stoploss", "minimal_roi", "max_open_trades", @@ -1358,6 +1359,4 @@ SCHEMA_MINIMAL_REQUIRED = [ "dataformat_ohlcv", "dataformat_trades", ] -SCHEMA_MINIMAL_WEBSERVER = SCHEMA_MINIMAL_REQUIRED + [ - "api_server", -] +SCHEMA_MINIMAL_WEBSERVER = [*SCHEMA_MINIMAL_REQUIRED, "api_server"] diff --git a/freqtrade/configuration/config_validation.py b/freqtrade/configuration/config_validation.py index e481f663e..07a109bd7 100644 --- a/freqtrade/configuration/config_validation.py +++ b/freqtrade/configuration/config_validation.py @@ -361,7 +361,7 @@ def _validate_freqai_include_timeframes(conf: dict[str, Any], preliminary: bool) # Ensure that the base timeframe is included in the include_timeframes list if not preliminary and main_tf not in freqai_include_timeframes: feature_parameters = conf.get("freqai", {}).get("feature_parameters", {}) - include_timeframes = [main_tf] + freqai_include_timeframes + include_timeframes = [main_tf, *freqai_include_timeframes] conf.get("freqai", {}).get("feature_parameters", {}).update( {**feature_parameters, "include_timeframes": include_timeframes} ) diff --git a/freqtrade/constants.py b/freqtrade/constants.py index 1b99dd6ec..fb1c3a4c0 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -99,7 +99,7 @@ DL_DATA_TIMEFRAMES = ["1m", "5m"] ENV_VAR_PREFIX = "FREQTRADE__" CANCELED_EXCHANGE_STATES = ("cancelled", "canceled", "expired", "rejected") -NON_OPEN_EXCHANGE_STATES = CANCELED_EXCHANGE_STATES + ("closed",) +NON_OPEN_EXCHANGE_STATES = (*CANCELED_EXCHANGE_STATES, "closed") # Define decimals per coin for outputs # Only used for outputs. diff --git a/freqtrade/data/entryexitanalysis.py b/freqtrade/data/entryexitanalysis.py index 0c49b775c..2bea8a5db 100644 --- a/freqtrade/data/entryexitanalysis.py +++ b/freqtrade/data/entryexitanalysis.py @@ -281,7 +281,7 @@ def _merge_dfs( ): merge_on = ["pair", "open_date"] signal_wide_indicators = list(set(available_inds) - set(BT_DATA_COLUMNS)) - columns_to_keep = merge_on + ["enter_reason", "exit_reason"] + columns_to_keep = [*merge_on, "enter_reason", "exit_reason"] if exit_df is None or exit_df.empty or entry_only is True: return entry_df[columns_to_keep + available_inds] diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py index 00cd19591..b78d98b99 100644 --- a/freqtrade/exchange/exchange.py +++ b/freqtrade/exchange/exchange.py @@ -2798,7 +2798,7 @@ class Exchange: pair, timeframe, candle_type = pairwt since_ms = None new_ticks: list = [] - all_stored_ticks_df = DataFrame(columns=DEFAULT_TRADES_COLUMNS + ["date"]) + all_stored_ticks_df = DataFrame(columns=[*DEFAULT_TRADES_COLUMNS, "date"]) first_candle_ms = self.needed_candle_for_trades_ms(timeframe, candle_type) # refresh, if # a. not in _trades @@ -2843,7 +2843,7 @@ class Exchange: else: # Skip cache, it's too old all_stored_ticks_df = DataFrame( - columns=DEFAULT_TRADES_COLUMNS + ["date"] + columns=[*DEFAULT_TRADES_COLUMNS, "date"] ) # from_id overrules with exchange set to id paginate diff --git a/freqtrade/plot/plotting.py b/freqtrade/plot/plotting.py index 4f486d8a1..6419ab0c2 100644 --- a/freqtrade/plot/plotting.py +++ b/freqtrade/plot/plotting.py @@ -460,7 +460,7 @@ def generate_candlestick_graph( rows=rows, cols=1, shared_xaxes=True, - row_width=row_widths + [1, 4], + row_width=[*row_widths, 1, 4], vertical_spacing=0.0001, ) fig["layout"].update(title=pair) diff --git a/freqtrade/vendor/qtpylib/indicators.py b/freqtrade/vendor/qtpylib/indicators.py index 5b56b2aa6..7c1aec5a4 100644 --- a/freqtrade/vendor/qtpylib/indicators.py +++ b/freqtrade/vendor/qtpylib/indicators.py @@ -32,7 +32,7 @@ warnings.simplefilter(action="ignore", category=RuntimeWarning) def numpy_rolling_window(data, window): shape = data.shape[:-1] + (data.shape[-1] - window + 1, window) - strides = data.strides + (data.strides[-1],) + strides = (*data.strides, data.strides[-1]) return np.lib.stride_tricks.as_strided(data, shape=shape, strides=strides)