freqtrade / freqtrade

Free, open source crypto trading bot
https://www.freqtrade.io
GNU General Public License v3.0
28.09k stars 6.02k forks source link

Hyperopt - error using `analyze-per-epoch` and `pandas_ta.cti` #7373

Closed italodamato closed 1 year ago

italodamato commented 2 years ago

Describe your environment

Describe the problem:

getting RuntimeWarning: invalid value encountered in double_scalars in pandas_ta.cti when hyperopting using --analyze-per-epoch

https://github.com/twopirllc/pandas-ta/blob/96555b8752061405733664bb2f61d09cac9b29fd/pandas_ta/momentum/cti.py

Steps to reproduce:

  1. create an indicator using pandas_ta.cti
  2. run hyperopt with --analyze-per-epoch

Observed Results:

Relevant code exceptions or logs

2022-09-07 17:55:17,444 - freqtrade.configuration.load_config - INFO - Using config: /Users/italodamato/Documents/GitHub/freqtrade/user_data/configs/config.json ...
2022-09-07 17:55:17,445 - freqtrade.configuration.load_config - INFO - Using config: /Users/italodamato/Documents/GitHub/freqtrade/user_data/configs/binance-usdt-static.json ...
2022-09-07 17:55:17,445 - freqtrade.loggers - INFO - Verbosity set to 0
2022-09-07 17:55:17,445 - freqtrade.configuration.configuration - INFO - Using additional Strategy lookup path: /Users/italodamato/Documents/GitHub/freqtrade/user_data/strategies
2022-09-07 17:55:17,445 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 999 ...
2022-09-07 17:55:17,445 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20200101- ...
2022-09-07 17:55:17,445 - freqtrade.configuration.configuration - INFO - Using user-data directory: /Users/italodamato/Documents/GitHub/freqtrade/user_data ...
2022-09-07 17:55:17,446 - freqtrade.configuration.configuration - INFO - Using data directory: /Users/italodamato/Documents/GitHub/freqtrade/user_data/data/binance ...
2022-09-07 17:55:17,446 - freqtrade.configuration.configuration - INFO - Parameter --disableparamexport detected: True ...
2022-09-07 17:55:17,446 - freqtrade.configuration.configuration - INFO - Parameter --epochs detected ... Will run Hyperopt with for 2000 epochs ...
2022-09-07 17:55:17,446 - freqtrade.configuration.configuration - INFO - Parameter -s/--spaces detected: ['buy']
2022-09-07 17:55:17,446 - freqtrade.configuration.configuration - INFO - Parameter --analyze-per-epoch detected.
2022-09-07 17:55:17,446 - freqtrade.configuration.configuration - INFO - Parameter --print-all detected ...
2022-09-07 17:55:17,446 - freqtrade.configuration.configuration - INFO - Parameter -j/--job-workers detected: -1
2022-09-07 17:55:17,446 - freqtrade.configuration.configuration - INFO - Parameter --random-state detected: 8567
2022-09-07 17:55:17,446 - freqtrade.configuration.configuration - INFO - Parameter --min-trades detected: 1
2022-09-07 17:55:17,446 - freqtrade.configuration.configuration - INFO - Using Hyperopt loss class name: SortinoMissedProfitHyperOptLoss
2022-09-07 17:55:17,446 - freqtrade.configuration.check_exchange - INFO - Checking exchange...
2022-09-07 17:55:17,452 - freqtrade.configuration.check_exchange - INFO - Exchange "binance" is officially supported by the Freqtrade development team.
2022-09-07 17:55:17,452 - freqtrade.configuration.configuration - INFO - Using pairlist from configuration.
2022-09-07 17:55:17,452 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2022-09-07 17:55:17,455 - freqtrade.commands.optimize_commands - INFO - Starting freqtrade in Hyperopt mode
2022-09-07 17:55:17,455 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled
2022-09-07 17:55:17,455 - freqtrade.exchange.exchange - INFO - Using CCXT 1.92.20
2022-09-07 17:55:17,455 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True}
2022-09-07 17:55:17,460 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'enableRateLimit': True, 'rateLimit': 200}
2022-09-07 17:55:17,466 - freqtrade.exchange.exchange - INFO - Using Exchange "Binance"
2022-09-07 17:55:19,582 - freqtrade.resolvers.exchange_resolver - INFO - Using resolved exchange 'Binance'...
2022-09-07 17:55:19,646 - freqtrade.resolvers.iresolver - INFO - Using resolved strategy Turtle from '/Users/italodamato/Documents/GitHub/freqtrade/user_data/strategies/Turtle.py'...
2022-09-07 17:55:19,646 - freqtrade.strategy.hyper - INFO - Found no parameter file.
2022-09-07 17:55:19,646 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'timeframe' with value in config file: 4h.
2022-09-07 17:55:19,646 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_currency' with value in config file: USDT.
2022-09-07 17:55:19,646 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'stake_amount' with value in config file: unlimited.
2022-09-07 17:55:19,646 - freqtrade.resolvers.strategy_resolver - INFO - Override strategy 'unfilledtimeout' with value in config file: {'entry': 10, 'exit': 30, 'unit': 'minutes', 'exit_timeout_count': 0}.
2022-09-07 17:55:19,646 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using minimal_roi: {'0': 100000}
2022-09-07 17:55:19,646 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using timeframe: 4h
2022-09-07 17:55:19,646 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stoploss: -0.9
2022-09-07 17:55:19,646 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop: False
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_stop_positive_offset: 0.0
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using trailing_only_offset_is_reached: False
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_custom_stoploss: True
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using process_only_new_candles: False
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_types: {'entry': 'limit', 'exit': 'limit', 'emergency_exit': 'market', 'stoploss': 'limit', 'stoploss_on_exchange': True, 'stoploss_on_exchange_interval': 60, 'stoploss_on_exchange_limit_ratio': 0.99}
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using order_time_in_force: {'entry': 'gtc', 'exit': 'gtc'}
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_currency: USDT
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using stake_amount: unlimited
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using protections: []
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using startup_candle_count: 200
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using unfilledtimeout: {'entry': 10, 'exit': 30, 'unit': 'minutes', 'exit_timeout_count': 0}
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using use_exit_signal: True
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_only: False
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_roi_if_entry_signal: False
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using exit_profit_offset: 0.0
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using disable_dataframe_checks: False
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using ignore_buying_expired_candle_after: 0
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using position_adjustment_enable: False
2022-09-07 17:55:19,647 - freqtrade.resolvers.strategy_resolver - INFO - Strategy using max_entry_position_adjustment: -1
2022-09-07 17:55:19,647 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
2022-09-07 17:55:19,652 - freqtrade.resolvers.iresolver - INFO - Using resolved pairlist StaticPairList from '/Users/italodamato/Documents/GitHub/freqtrade-1/freqtrade/plugins/pairlist/StaticPairList.py'...
2022-09-07 17:55:19,846 - freqtrade.strategy.hyper - INFO - No params for protection found, using default values.
2022-09-07 17:55:19,847 - freqtrade.resolvers.iresolver - INFO - Using resolved hyperoptloss SortinoMissedProfitHyperOptLoss from '/Users/italodamato/Documents/GitHub/freqtrade/user_data/hyperopts/SortinoMissedProfitHyperOptLoss.py'...
2022-09-07 17:55:19,847 - freqtrade.optimize.hyperopt - INFO - Removing `/Users/italodamato/Documents/GitHub/freqtrade/user_data/hyperopt_results/hyperopt_tickerdata.pkl`.
2022-09-07 17:55:19,848 - freqtrade.optimize.hyperopt - INFO - Using optimizer random state: 8567
2022-09-07 17:55:19,849 - freqtrade.data.history.history_utils - INFO - Using indicator startup period: 200 ...
2022-09-07 17:55:19,879 - freqtrade.data.history.idatahandler - WARNING - AAVE/USDT, spot, 4h, data starts at 2020-10-15 00:00:00
2022-09-07 17:55:19,894 - freqtrade.data.history.idatahandler - WARNING - ACH/USDT, spot, 4h, data starts at 2022-01-10 08:00:00
2022-09-07 17:55:19,909 - freqtrade.data.history.idatahandler - WARNING - ADA/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:19,924 - freqtrade.data.history.idatahandler - WARNING - AION/USDT, spot, 4h, data starts at 2020-02-19 08:00:00
2022-09-07 17:55:19,939 - freqtrade.data.history.idatahandler - WARNING - ALGO/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:19,953 - freqtrade.data.history.idatahandler - WARNING - ALICE/USDT, spot, 4h, data starts at 2021-03-15 04:00:00
2022-09-07 17:55:19,967 - freqtrade.data.history.idatahandler - WARNING - ALPHA/USDT, spot, 4h, data starts at 2020-10-10 04:00:00
2022-09-07 17:55:19,979 - freqtrade.data.history.idatahandler - WARNING - ANC/USDT, spot, 4h, data starts at 2022-01-25 08:00:00
2022-09-07 17:55:19,994 - freqtrade.data.history.idatahandler - WARNING - ANKR/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,010 - freqtrade.data.history.idatahandler - WARNING - ANT/USDT, spot, 4h, data starts at 2020-08-13 00:00:00
2022-09-07 17:55:20,023 - freqtrade.data.history.idatahandler - WARNING - API3/USDT, spot, 4h, data starts at 2022-01-21 08:00:00
2022-09-07 17:55:20,036 - freqtrade.data.history.idatahandler - WARNING - AR/USDT, spot, 4h, data starts at 2021-05-14 12:00:00
2022-09-07 17:55:20,051 - freqtrade.data.history.idatahandler - WARNING - ATOM/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,065 - freqtrade.data.history.idatahandler - WARNING - AUDIO/USDT, spot, 4h, data starts at 2020-10-23 16:00:00
2022-09-07 17:55:20,079 - freqtrade.data.history.idatahandler - WARNING - AVA/USDT, spot, 4h, data starts at 2020-11-24 12:00:00
2022-09-07 17:55:20,093 - freqtrade.data.history.idatahandler - WARNING - AVAX/USDT, spot, 4h, data starts at 2020-09-22 04:00:00
2022-09-07 17:55:20,109 - freqtrade.data.history.idatahandler - WARNING - AXS/USDT, spot, 4h, data starts at 2020-11-04 12:00:00
2022-09-07 17:55:20,122 - freqtrade.data.history.idatahandler - WARNING - BAKE/USDT, spot, 4h, data starts at 2021-04-30 12:00:00
2022-09-07 17:55:20,137 - freqtrade.data.history.idatahandler - WARNING - BAND/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,153 - freqtrade.data.history.idatahandler - WARNING - BAT/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,168 - freqtrade.data.history.idatahandler - WARNING - BCH/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,181 - freqtrade.data.history.idatahandler - WARNING - BETA/USDT, spot, 4h, data starts at 2021-10-08 12:00:00
2022-09-07 17:55:20,195 - freqtrade.data.history.idatahandler - WARNING - BTC/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,210 - freqtrade.data.history.idatahandler - WARNING - BTCST/USDT, spot, 4h, data starts at 2021-01-13 04:00:00
2022-09-07 17:55:20,224 - freqtrade.data.history.idatahandler - WARNING - BTG/USDT, spot, 4h, data starts at 2021-04-16 04:00:00
2022-09-07 17:55:20,237 - freqtrade.data.history.idatahandler - WARNING - BURGER/USDT, spot, 4h, data starts at 2021-04-30 12:00:00
2022-09-07 17:55:20,251 - freqtrade.data.history.idatahandler - WARNING - CAKE/USDT, spot, 4h, data starts at 2021-02-19 04:00:00
2022-09-07 17:55:20,265 - freqtrade.data.history.idatahandler - WARNING - CELO/USDT, spot, 4h, data starts at 2021-01-05 08:00:00
2022-09-07 17:55:20,280 - freqtrade.data.history.idatahandler - WARNING - CELR/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,296 - freqtrade.data.history.idatahandler - WARNING - CHR/USDT, spot, 4h, data starts at 2020-05-07 12:00:00
2022-09-07 17:55:20,310 - freqtrade.data.history.idatahandler - WARNING - CKB/USDT, spot, 4h, data starts at 2021-01-26 12:00:00
2022-09-07 17:55:20,325 - freqtrade.data.history.idatahandler - WARNING - COMP/USDT, spot, 4h, data starts at 2020-06-25 04:00:00
2022-09-07 17:55:20,340 - freqtrade.data.history.idatahandler - WARNING - COTI/USDT, spot, 4h, data starts at 2020-02-26 12:00:00
2022-09-07 17:55:20,354 - freqtrade.data.history.idatahandler - WARNING - CRV/USDT, spot, 4h, data starts at 2020-08-15 04:00:00
2022-09-07 17:55:20,369 - freqtrade.data.history.idatahandler - WARNING - CTSI/USDT, spot, 4h, data starts at 2020-04-23 00:00:00
2022-09-07 17:55:20,382 - freqtrade.data.history.idatahandler - WARNING - DAR/USDT, spot, 4h, data starts at 2021-11-04 08:00:00
2022-09-07 17:55:20,396 - freqtrade.data.history.idatahandler - WARNING - DASH/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,411 - freqtrade.data.history.idatahandler - WARNING - DATA/USDT, spot, 4h, data starts at 2020-04-07 12:00:00
2022-09-07 17:55:20,426 - freqtrade.data.history.idatahandler - WARNING - DEGO/USDT, spot, 4h, data starts at 2021-03-10 08:00:00
2022-09-07 17:55:20,440 - freqtrade.data.history.idatahandler - WARNING - DENT/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,454 - freqtrade.data.history.idatahandler - WARNING - DGB/USDT, spot, 4h, data starts at 2020-07-20 12:00:00
2022-09-07 17:55:20,468 - freqtrade.data.history.idatahandler - WARNING - DNT/USDT, spot, 4h, data starts at 2020-11-10 04:00:00
2022-09-07 17:55:20,482 - freqtrade.data.history.idatahandler - WARNING - DOCK/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,496 - freqtrade.data.history.idatahandler - WARNING - DODO/USDT, spot, 4h, data starts at 2021-02-19 08:00:00
2022-09-07 17:55:20,511 - freqtrade.data.history.idatahandler - WARNING - DOGE/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,526 - freqtrade.data.history.idatahandler - WARNING - DOT/USDT, spot, 4h, data starts at 2020-08-18 20:00:00
2022-09-07 17:55:20,540 - freqtrade.data.history.idatahandler - WARNING - DUSK/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,554 - freqtrade.data.history.idatahandler - WARNING - DYDX/USDT, spot, 4h, data starts at 2021-09-09 00:00:00
2022-09-07 17:55:20,567 - freqtrade.data.history.idatahandler - WARNING - EGLD/USDT, spot, 4h, data starts at 2020-09-03 00:00:00
2022-09-07 17:55:20,582 - freqtrade.data.history.idatahandler - WARNING - ENJ/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,595 - freqtrade.data.history.idatahandler - WARNING - ENS/USDT, spot, 4h, data starts at 2021-11-10 04:00:00
2022-09-07 17:55:20,610 - freqtrade.data.history.idatahandler - WARNING - EOS/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,625 - freqtrade.data.history.idatahandler - WARNING - ETC/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,640 - freqtrade.data.history.idatahandler - WARNING - ETH/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,653 - freqtrade.data.history.idatahandler - WARNING - FIDA/USDT, spot, 4h, data starts at 2021-09-30 12:00:00
2022-09-07 17:55:20,667 - freqtrade.data.history.idatahandler - WARNING - FIL/USDT, spot, 4h, data starts at 2020-10-15 16:00:00
2022-09-07 17:55:20,681 - freqtrade.data.history.idatahandler - WARNING - FLOW/USDT, spot, 4h, data starts at 2021-07-30 12:00:00
2022-09-07 17:55:20,696 - freqtrade.data.history.idatahandler - WARNING - FTM/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,710 - freqtrade.data.history.idatahandler - WARNING - FTT/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,723 - freqtrade.data.history.idatahandler - WARNING - GALA/USDT, spot, 4h, data starts at 2021-09-13 04:00:00
2022-09-07 17:55:20,736 - freqtrade.data.history.idatahandler - WARNING - GLMR/USDT, spot, 4h, data starts at 2022-01-11 16:00:00
2022-09-07 17:55:20,750 - freqtrade.data.history.idatahandler - WARNING - GRT/USDT, spot, 4h, data starts at 2020-12-17 20:00:00
2022-09-07 17:55:20,765 - freqtrade.data.history.idatahandler - WARNING - GTO/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,779 - freqtrade.data.history.idatahandler - WARNING - HARD/USDT, spot, 4h, data starts at 2020-11-06 04:00:00
2022-09-07 17:55:20,793 - freqtrade.data.history.idatahandler - WARNING - HNT/USDT, spot, 4h, data starts at 2020-09-24 08:00:00
2022-09-07 17:55:20,808 - freqtrade.data.history.idatahandler - WARNING - HOT/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,822 - freqtrade.data.history.idatahandler - WARNING - ICP/USDT, spot, 4h, data starts at 2021-05-11 00:00:00
2022-09-07 17:55:20,835 - freqtrade.data.history.idatahandler - WARNING - IDEX/USDT, spot, 4h, data starts at 2021-09-09 08:00:00
2022-09-07 17:55:20,848 - freqtrade.data.history.idatahandler - WARNING - IMX/USDT, spot, 4h, data starts at 2022-01-10 08:00:00
2022-09-07 17:55:20,862 - freqtrade.data.history.idatahandler - WARNING - INJ/USDT, spot, 4h, data starts at 2020-10-21 04:00:00
2022-09-07 17:55:20,877 - freqtrade.data.history.idatahandler - WARNING - IOST/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,892 - freqtrade.data.history.idatahandler - WARNING - IOTA/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,907 - freqtrade.data.history.idatahandler - WARNING - IOTX/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,921 - freqtrade.data.history.idatahandler - WARNING - JST/USDT, spot, 4h, data starts at 2020-08-11 04:00:00
2022-09-07 17:55:20,936 - freqtrade.data.history.idatahandler - WARNING - KAVA/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:20,950 - freqtrade.data.history.idatahandler - WARNING - KLAY/USDT, spot, 4h, data starts at 2021-06-24 08:00:00
2022-09-07 17:55:20,964 - freqtrade.data.history.idatahandler - WARNING - KNC/USDT, spot, 4h, data starts at 2020-06-12 08:00:00
2022-09-07 17:55:20,978 - freqtrade.data.history.idatahandler - WARNING - KSM/USDT, spot, 4h, data starts at 2020-09-04 08:00:00
2022-09-07 17:55:20,993 - freqtrade.data.history.idatahandler - WARNING - LINK/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,006 - freqtrade.data.history.idatahandler - WARNING - LPT/USDT, spot, 4h, data starts at 2021-05-28 04:00:00
2022-09-07 17:55:21,020 - freqtrade.data.history.idatahandler - WARNING - LRC/USDT, spot, 4h, data starts at 2020-06-12 08:00:00
2022-09-07 17:55:21,037 - freqtrade.data.history.idatahandler - WARNING - LTC/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,056 - freqtrade.data.history.idatahandler - WARNING - LUNA/USDT, spot, 4h, data starts at 2020-08-21 08:00:00
2022-09-07 17:55:21,062 - freqtrade.data.converter - INFO - Missing data fillup for LUNA/USDT: before: 4332 - after: 4440 - 2.49%
2022-09-07 17:55:21,072 - freqtrade.data.history.idatahandler - WARNING - MANA/USDT, spot, 4h, data starts at 2020-08-06 08:00:00
2022-09-07 17:55:21,086 - freqtrade.data.history.idatahandler - WARNING - MASK/USDT, spot, 4h, data starts at 2021-05-25 04:00:00
2022-09-07 17:55:21,103 - freqtrade.data.history.idatahandler - WARNING - MATIC/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,118 - freqtrade.data.history.idatahandler - WARNING - MBL/USDT, spot, 4h, data starts at 2020-02-21 12:00:00
2022-09-07 17:55:21,132 - freqtrade.data.history.idatahandler - WARNING - MBOX/USDT, spot, 4h, data starts at 2021-08-19 08:00:00
2022-09-07 17:55:21,145 - freqtrade.data.history.idatahandler - WARNING - MINA/USDT, spot, 4h, data starts at 2021-08-10 04:00:00
2022-09-07 17:55:21,160 - freqtrade.data.history.idatahandler - WARNING - MKR/USDT, spot, 4h, data starts at 2020-07-23 12:00:00
2022-09-07 17:55:21,176 - freqtrade.data.history.idatahandler - WARNING - MTL/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,191 - freqtrade.data.history.idatahandler - WARNING - NEAR/USDT, spot, 4h, data starts at 2020-10-14 04:00:00
2022-09-07 17:55:21,206 - freqtrade.data.history.idatahandler - WARNING - NEO/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,221 - freqtrade.data.history.idatahandler - WARNING - NKN/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,236 - freqtrade.data.history.idatahandler - WARNING - OM/USDT, spot, 4h, data starts at 2021-03-08 08:00:00
2022-09-07 17:55:21,252 - freqtrade.data.history.idatahandler - WARNING - OMG/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,267 - freqtrade.data.history.idatahandler - WARNING - ONE/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,282 - freqtrade.data.history.idatahandler - WARNING - ONT/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,298 - freqtrade.data.history.idatahandler - WARNING - OOKI/USDT, spot, 4h, data starts at 2021-12-24 04:00:00
2022-09-07 17:55:21,312 - freqtrade.data.history.idatahandler - WARNING - OXT/USDT, spot, 4h, data starts at 2020-09-21 08:00:00
2022-09-07 17:55:21,327 - freqtrade.data.history.idatahandler - WARNING - PERL/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,341 - freqtrade.data.history.idatahandler - WARNING - PERP/USDT, spot, 4h, data starts at 2021-03-19 08:00:00
2022-09-07 17:55:21,355 - freqtrade.data.history.idatahandler - WARNING - PNT/USDT, spot, 4h, data starts at 2020-06-22 04:00:00
2022-09-07 17:55:21,369 - freqtrade.data.history.idatahandler - WARNING - POLS/USDT, spot, 4h, data starts at 2021-05-19 04:00:00
2022-09-07 17:55:21,383 - freqtrade.data.history.idatahandler - WARNING - POND/USDT, spot, 4h, data starts at 2021-03-09 08:00:00
2022-09-07 17:55:21,396 - freqtrade.data.history.idatahandler - WARNING - PYR/USDT, spot, 4h, data starts at 2021-11-26 08:00:00
2022-09-07 17:55:21,410 - freqtrade.data.history.idatahandler - WARNING - QTUM/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,423 - freqtrade.data.history.idatahandler - WARNING - RAD/USDT, spot, 4h, data starts at 2021-10-07 04:00:00
2022-09-07 17:55:21,437 - freqtrade.data.history.idatahandler - WARNING - REEF/USDT, spot, 4h, data starts at 2020-12-29 04:00:00
2022-09-07 17:55:21,452 - freqtrade.data.history.idatahandler - WARNING - RLC/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,466 - freqtrade.data.history.idatahandler - WARNING - ROSE/USDT, spot, 4h, data starts at 2020-11-19 08:00:00
2022-09-07 17:55:21,480 - freqtrade.data.history.idatahandler - WARNING - RUNE/USDT, spot, 4h, data starts at 2020-09-04 04:00:00
2022-09-07 17:55:21,495 - freqtrade.data.history.idatahandler - WARNING - RVN/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,509 - freqtrade.data.history.idatahandler - WARNING - SAND/USDT, spot, 4h, data starts at 2020-08-14 12:00:00
2022-09-07 17:55:21,523 - freqtrade.data.history.idatahandler - WARNING - SC/USDT, spot, 4h, data starts at 2020-07-06 04:00:00
2022-09-07 17:55:21,537 - freqtrade.data.history.idatahandler - WARNING - SKL/USDT, spot, 4h, data starts at 2020-12-01 00:00:00
2022-09-07 17:55:21,551 - freqtrade.data.history.idatahandler - WARNING - SNX/USDT, spot, 4h, data starts at 2020-07-09 12:00:00
2022-09-07 17:55:21,566 - freqtrade.data.history.idatahandler - WARNING - SOL/USDT, spot, 4h, data starts at 2020-08-11 04:00:00
2022-09-07 17:55:21,580 - freqtrade.data.history.idatahandler - WARNING - STMX/USDT, spot, 4h, data starts at 2020-06-11 00:00:00
2022-09-07 17:55:21,594 - freqtrade.data.history.idatahandler - WARNING - STPT/USDT, spot, 4h, data starts at 2020-03-25 12:00:00
2022-09-07 17:55:21,609 - freqtrade.data.history.idatahandler - WARNING - STRAX/USDT, spot, 4h, data starts at 2020-11-18 00:00:00
2022-09-07 17:55:21,623 - freqtrade.data.history.idatahandler - WARNING - STX/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,636 - freqtrade.data.history.idatahandler - WARNING - SUPER/USDT, spot, 4h, data starts at 2021-03-25 08:00:00
2022-09-07 17:55:21,651 - freqtrade.data.history.idatahandler - WARNING - SUSHI/USDT, spot, 4h, data starts at 2020-09-01 08:00:00
2022-09-07 17:55:21,666 - freqtrade.data.history.idatahandler - WARNING - SXP/USDT, spot, 4h, data starts at 2020-07-20 12:00:00
2022-09-07 17:55:21,679 - freqtrade.data.history.idatahandler - WARNING - SYS/USDT, spot, 4h, data starts at 2021-09-24 08:00:00
2022-09-07 17:55:21,697 - freqtrade.data.history.idatahandler - WARNING - TFUEL/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,715 - freqtrade.data.history.idatahandler - WARNING - THETA/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,731 - freqtrade.data.history.idatahandler - WARNING - TKO/USDT, spot, 4h, data starts at 2021-04-07 12:00:00
2022-09-07 17:55:21,744 - freqtrade.data.history.idatahandler - WARNING - TLM/USDT, spot, 4h, data starts at 2021-04-13 04:00:00
2022-09-07 17:55:21,759 - freqtrade.data.history.idatahandler - WARNING - TRX/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,772 - freqtrade.data.history.idatahandler - WARNING - TWT/USDT, spot, 4h, data starts at 2021-01-27 08:00:00
2022-09-07 17:55:21,786 - freqtrade.data.history.idatahandler - WARNING - UNI/USDT, spot, 4h, data starts at 2020-09-17 00:00:00
2022-09-07 17:55:21,801 - freqtrade.data.history.idatahandler - WARNING - VET/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,816 - freqtrade.data.history.idatahandler - WARNING - WAVES/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,831 - freqtrade.data.history.idatahandler - WARNING - WIN/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,845 - freqtrade.data.history.idatahandler - WARNING - WING/USDT, spot, 4h, data starts at 2020-09-16 00:00:00
2022-09-07 17:55:21,860 - freqtrade.data.history.idatahandler - WARNING - WRX/USDT, spot, 4h, data starts at 2020-02-05 00:00:00
2022-09-07 17:55:21,874 - freqtrade.data.history.idatahandler - WARNING - XEM/USDT, spot, 4h, data starts at 2020-11-24 12:00:00
2022-09-07 17:55:21,888 - freqtrade.data.history.idatahandler - WARNING - XLM/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,904 - freqtrade.data.history.idatahandler - WARNING - XMR/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,919 - freqtrade.data.history.idatahandler - WARNING - XRP/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,934 - freqtrade.data.history.idatahandler - WARNING - XTZ/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,948 - freqtrade.data.history.idatahandler - WARNING - YFI/USDT, spot, 4h, data starts at 2020-08-10 12:00:00
2022-09-07 17:55:21,963 - freqtrade.data.history.idatahandler - WARNING - ZEC/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:21,977 - freqtrade.data.history.idatahandler - WARNING - ZEN/USDT, spot, 4h, data starts at 2020-07-06 04:00:00
2022-09-07 17:55:21,992 - freqtrade.data.history.idatahandler - WARNING - ZIL/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:22,006 - freqtrade.data.history.idatahandler - WARNING - ZRX/USDT, spot, 4h, data starts at 2020-01-01 00:00:00
2022-09-07 17:55:22,021 - freqtrade.optimize.backtesting - INFO - Loading data from 2020-01-01 00:00:00 up to 2022-08-31 04:00:00 (973 days).
2022-09-07 17:55:22,021 - freqtrade.configuration.timerange - WARNING - Moving start-date by 200 candles to account for startup time.
2022-09-07 17:55:22,022 - freqtrade.optimize.hyperopt - INFO - Dataload complete. Calculating indicators
2022-09-07 17:55:22,064 - freqtrade.exchange.exchange - INFO - Closing async ccxt session.
2022-09-07 17:55:22,071 - freqtrade.optimize.hyperopt - INFO - Found 10 CPU cores. Let's make them scream!
2022-09-07 17:55:22,072 - freqtrade.optimize.hyperopt - INFO - Number of parallel jobs set as: -1
2022-09-07 17:55:22,072 - freqtrade.optimize.hyperopt - INFO - Using estimator ExtraTreesRegressor(min_samples_leaf=5).
2022-09-07 17:55:22,080 - freqtrade.optimize.hyperopt - INFO - Effective number of parallel workers used: 10
/Users/italodamato/Documents/GitHub/freqtrade-1/.env/lib/python3.10/site-packages/pandas_ta/overlap/linreg.py:52: RuntimeWarning: invalid value encountered in double_scalars
  rd = (divisor * (length * y2_sum - y_sum * y_sum)) ** 0.5
/Users/italodamato/Documents/GitHub/freqtrade-1/.env/lib/python3.10/site-packages/pandas_ta/overlap/linreg.py:52: RuntimeWarning: invalid value encountered in double_scalars
  rd = (divisor * (length * y2_sum - y_sum * y_sum)) ** 0.5
/Users/italodamato/Documents/GitHub/freqtrade-1/.env/lib/python3.10/site-packages/pandas_ta/overlap/linreg.py:53: RuntimeWarning: invalid value encountered in double_scalars
  return rn / rd
/Users/italodamato/Documents/GitHub/freqtrade-1/.env/lib/python3.10/site-packages/pandas_ta/overlap/linreg.py:52: RuntimeWarning: invalid value encountered in double_scalars
  rd = (divisor * (length * y2_sum - y_sum * y_sum)) ** 0.5
/Users/italodamato/Documents/GitHub/freqtrade-1/.env/lib/python3.10/site-packages/pandas_ta/overlap/linreg.py:52: RuntimeWarning: invalid value encountered in double_scalars
  rd = (divisor * (length * y2_sum - y_sum * y_sum)) ** 0.5
/Users/italodamato/Documents/GitHub/freqtrade-1/.env/lib/python3.10/site-packages/pandas_ta/overlap/linreg.py:52: RuntimeWarning: invalid value encountered in double_scalars
  rd = (divisor * (length * y2_sum - y_sum * y_sum)) ** 0.5
/Users/italodamato/Documents/GitHub/freqtrade-1/.env/lib/python3.10/site-packages/pandas_ta/overlap/linreg.py:52: RuntimeWarning: invalid value encountered in double_scalars
  rd = (divisor * (length * y2_sum - y_sum * y_sum)) ** 0.5
/Users/italodamato/Documents/GitHub/freqtrade-1/.env/lib/python3.10/site-packages/pandas_ta/overlap/linreg.py:52: RuntimeWarning: invalid value encountered in double_scalars
  rd = (divisor * (length * y2_sum - y_sum * y_sum)) ** 0.5
/Users/italodamato/Documents/GitHub/freqtrade-1/.env/lib/python3.10/site-packages/pandas_ta/overlap/linreg.py:52: RuntimeWarning: invalid value encountered in double_scalars
  rd = (divisor * (length * y2_sum - y_sum * y_sum)) ** 0.5
^C
User interrupted..
xmatthias commented 2 years ago

we'll definitely need some code you're using (what the parameters are you call that function with).

Also - what's the result if you run backtesting on the same strategy/code?

italodamato commented 2 years ago

I'm investigating further. I've found that the pair where the error happens is LUNA/USDT on Binance. I wonder if the huge crash is causing this. I'm not why this happens only on with --analyze-per-epoch enabled though.

Backtesting and normal hyperopt works fine

italodamato commented 2 years ago

I'm not sure why but the error doesn't happen if you call qtpylib before pandas_ta.cti - do you have any ideas? You can also write it like this and it fixes it:

def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
  qtpylib
  pandas_ta.cti(dataframe.close, 100)
xmatthias commented 2 years ago

well not having seen your original call - no?

italodamato commented 2 years ago

you can literally use the SampleStrategy file below. If you comment out import freqtrade.vendor.qtpylib.indicators as qtpylib, you will get the warning on LUNA 4h.

# pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement
# flake8: noqa: F401
# isort: skip_file
# --- Do not remove these libs ---
import numpy as np  # noqa
import pandas as pd  # noqa
from pandas import DataFrame

from freqtrade.strategy import (BooleanParameter, CategoricalParameter, DecimalParameter,
                                IStrategy, IntParameter)

# --------------------------------
# Add your lib to import here
import talib.abstract as ta
import freqtrade.vendor.qtpylib.indicators as qtpylib
import pandas_ta as pta

# This class is a sample. Feel free to customize it.
class SampleStrategy(IStrategy):
    """
    This is a sample strategy to inspire you.
    More information in https://www.freqtrade.io/en/latest/strategy-customization/

    You can:
        :return: a Dataframe with all mandatory indicators for the strategies
    - Rename the class name (Do not forget to update class_name)
    - Add any methods you want to build your strategy
    - Add any lib you need to build your strategy

    You must keep:
    - the lib in the section "Do not remove these libs"
    - the methods: populate_indicators, populate_entry_trend, populate_exit_trend
    You should keep:
    - timeframe, minimal_roi, stoploss, trailing_*
    """
    # Strategy interface version - allow new iterations of the strategy interface.
    # Check the documentation or the Sample strategy to get the latest version.
    INTERFACE_VERSION = 3

    # Can this strategy go short?
    can_short: bool = False

    # Minimal ROI designed for the strategy.
    # This attribute will be overridden if the config file contains "minimal_roi".
    minimal_roi = {
        "60": 0.01,
        "30": 0.02,
        "0": 0.04
    }

    # Optimal stoploss designed for the strategy.
    # This attribute will be overridden if the config file contains "stoploss".
    stoploss = -0.10

    # Trailing stoploss
    trailing_stop = False
    # trailing_only_offset_is_reached = False
    # trailing_stop_positive = 0.01
    # trailing_stop_positive_offset = 0.0  # Disabled / not configured

    # Optimal timeframe for the strategy.
    timeframe = '4h'

    # Run "populate_indicators()" only for new candle.
    process_only_new_candles = False

    # These values can be overridden in the config.
    use_exit_signal = True
    exit_profit_only = False
    ignore_roi_if_entry_signal = False

    # Hyperoptable parameters
    buy_rsi = IntParameter(low=1, high=50, default=30, space='buy', optimize=True, load=True)
    sell_rsi = IntParameter(low=50, high=100, default=70, space='sell', optimize=True, load=True)
    short_rsi = IntParameter(low=51, high=100, default=70, space='sell', optimize=True, load=True)
    exit_short_rsi = IntParameter(low=1, high=50, default=30, space='buy', optimize=True, load=True)

    # Number of candles the strategy requires before producing valid signals
    startup_candle_count: int = 30

    # Optional order type mapping.
    order_types = {
        'entry': 'limit',
        'exit': 'limit',
        'stoploss': 'market',
        'stoploss_on_exchange': False
    }

    # Optional order time in force.
    order_time_in_force = {
        'entry': 'gtc',
        'exit': 'gtc'
    }

    plot_config = {
        'main_plot': {
            'tema': {},
            'sar': {'color': 'white'},
        },
        'subplots': {
            "MACD": {
                'macd': {'color': 'blue'},
                'macdsignal': {'color': 'orange'},
            },
            "RSI": {
                'rsi': {'color': 'red'},
            }
        }
    }

    def informative_pairs(self):
        """
        Define additional, informative pair/interval combinations to be cached from the exchange.
        These pair/interval combinations are non-tradeable, unless they are part
        of the whitelist as well.
        For more information, please consult the documentation
        :return: List of tuples in the format (pair, interval)
            Sample: return [("ETH/USDT", "5m"),
                            ("BTC/USDT", "15m"),
                            ]
        """
        return []

    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        """
        Adds several different TA indicators to the given DataFrame

        Performance Note: For the best performance be frugal on the number of indicators
        you are using. Let uncomment only the indicator you are using in your strategies
        or your hyperopt configuration, otherwise you will waste your memory and CPU usage.
        :param dataframe: Dataframe with data from the exchange
        :param metadata: Additional information, like the currently traded pair
        :return: a Dataframe with all mandatory indicators for the strategies
        """

        # Momentum Indicators
        # ------------------------------------

        # ADX
        dataframe['adx'] = ta.ADX(dataframe)

        # # Plus Directional Indicator / Movement
        # dataframe['plus_dm'] = ta.PLUS_DM(dataframe)
        # dataframe['plus_di'] = ta.PLUS_DI(dataframe)

        # # Minus Directional Indicator / Movement
        # dataframe['minus_dm'] = ta.MINUS_DM(dataframe)
        # dataframe['minus_di'] = ta.MINUS_DI(dataframe)

        # # Aroon, Aroon Oscillator
        # aroon = ta.AROON(dataframe)
        # dataframe['aroonup'] = aroon['aroonup']
        # dataframe['aroondown'] = aroon['aroondown']
        # dataframe['aroonosc'] = ta.AROONOSC(dataframe)

        # # Awesome Oscillator
        # dataframe['ao'] = qtpylib.awesome_oscillator(dataframe)

        # # Keltner Channel
        # keltner = qtpylib.keltner_channel(dataframe)
        # dataframe["kc_upperband"] = keltner["upper"]
        # dataframe["kc_lowerband"] = keltner["lower"]
        # dataframe["kc_middleband"] = keltner["mid"]
        # dataframe["kc_percent"] = (
        #     (dataframe["close"] - dataframe["kc_lowerband"]) /
        #     (dataframe["kc_upperband"] - dataframe["kc_lowerband"])
        # )
        # dataframe["kc_width"] = (
        #     (dataframe["kc_upperband"] - dataframe["kc_lowerband"]) / dataframe["kc_middleband"]
        # )

        # # Ultimate Oscillator
        # dataframe['uo'] = ta.ULTOSC(dataframe)

        # # Commodity Channel Index: values [Oversold:-100, Overbought:100]
        # dataframe['cci'] = ta.CCI(dataframe)

        # RSI
        dataframe['rsi'] = ta.RSI(dataframe)

        # # Inverse Fisher transform on RSI: values [-1.0, 1.0] (https://goo.gl/2JGGoy)
        # rsi = 0.1 * (dataframe['rsi'] - 50)
        # dataframe['fisher_rsi'] = (np.exp(2 * rsi) - 1) / (np.exp(2 * rsi) + 1)

        # # Inverse Fisher transform on RSI normalized: values [0.0, 100.0] (https://goo.gl/2JGGoy)
        # dataframe['fisher_rsi_norma'] = 50 * (dataframe['fisher_rsi'] + 1)

        # # Stochastic Slow
        # stoch = ta.STOCH(dataframe)
        # dataframe['slowd'] = stoch['slowd']
        # dataframe['slowk'] = stoch['slowk']

        # Stochastic Fast
        stoch_fast = ta.STOCHF(dataframe)
        dataframe['fastd'] = stoch_fast['fastd']
        dataframe['fastk'] = stoch_fast['fastk']

        # # Stochastic RSI
        # Please read https://github.com/freqtrade/freqtrade/issues/2961 before using this.
        # STOCHRSI is NOT aligned with tradingview, which may result in non-expected results.
        # stoch_rsi = ta.STOCHRSI(dataframe)
        # dataframe['fastd_rsi'] = stoch_rsi['fastd']
        # dataframe['fastk_rsi'] = stoch_rsi['fastk']

        # MACD
        macd = ta.MACD(dataframe)
        dataframe['macd'] = macd['macd']
        dataframe['macdsignal'] = macd['macdsignal']
        dataframe['macdhist'] = macd['macdhist']

        # MFI
        dataframe['mfi'] = ta.MFI(dataframe)

        # # ROC
        # dataframe['roc'] = ta.ROC(dataframe)

        # Overlap Studies
        # ------------------------------------

        # Bollinger Bands
        # bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2)
        # dataframe['bb_lowerband'] = bollinger['lower']
        # dataframe['bb_middleband'] = bollinger['mid']
        # dataframe['bb_upperband'] = bollinger['upper']
        # dataframe["bb_percent"] = (
        #     (dataframe["close"] - dataframe["bb_lowerband"]) /
        #     (dataframe["bb_upperband"] - dataframe["bb_lowerband"])
        # )
        # dataframe["bb_width"] = (
        #     (dataframe["bb_upperband"] - dataframe["bb_lowerband"]) / dataframe["bb_middleband"]
        # )

        # Bollinger Bands - Weighted (EMA based instead of SMA)
        # weighted_bollinger = qtpylib.weighted_bollinger_bands(
        #     qtpylib.typical_price(dataframe), window=20, stds=2
        # )
        # dataframe["wbb_upperband"] = weighted_bollinger["upper"]
        # dataframe["wbb_lowerband"] = weighted_bollinger["lower"]
        # dataframe["wbb_middleband"] = weighted_bollinger["mid"]
        # dataframe["wbb_percent"] = (
        #     (dataframe["close"] - dataframe["wbb_lowerband"]) /
        #     (dataframe["wbb_upperband"] - dataframe["wbb_lowerband"])
        # )
        # dataframe["wbb_width"] = (
        #     (dataframe["wbb_upperband"] - dataframe["wbb_lowerband"]) /
        #     dataframe["wbb_middleband"]
        # )

        # # EMA - Exponential Moving Average
        # dataframe['ema3'] = ta.EMA(dataframe, timeperiod=3)
        # dataframe['ema5'] = ta.EMA(dataframe, timeperiod=5)
        # dataframe['ema10'] = ta.EMA(dataframe, timeperiod=10)
        # dataframe['ema21'] = ta.EMA(dataframe, timeperiod=21)
        # dataframe['ema50'] = ta.EMA(dataframe, timeperiod=50)
        # dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100)

        # # SMA - Simple Moving Average
        # dataframe['sma3'] = ta.SMA(dataframe, timeperiod=3)
        # dataframe['sma5'] = ta.SMA(dataframe, timeperiod=5)
        # dataframe['sma10'] = ta.SMA(dataframe, timeperiod=10)
        # dataframe['sma21'] = ta.SMA(dataframe, timeperiod=21)
        # dataframe['sma50'] = ta.SMA(dataframe, timeperiod=50)
        # dataframe['sma100'] = ta.SMA(dataframe, timeperiod=100)

        # Parabolic SAR
        dataframe['sar'] = ta.SAR(dataframe)

        # TEMA - Triple Exponential Moving Average
        dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9)

        # Cycle Indicator
        # ------------------------------------
        # Hilbert Transform Indicator - SineWave
        hilbert = ta.HT_SINE(dataframe)
        dataframe['htsine'] = hilbert['sine']
        dataframe['htleadsine'] = hilbert['leadsine']
        pta.cti(dataframe.close, 100)

        # Pattern Recognition - Bullish candlestick patterns
        # ------------------------------------
        # # Hammer: values [0, 100]
        # dataframe['CDLHAMMER'] = ta.CDLHAMMER(dataframe)
        # # Inverted Hammer: values [0, 100]
        # dataframe['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER(dataframe)
        # # Dragonfly Doji: values [0, 100]
        # dataframe['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(dataframe)
        # # Piercing Line: values [0, 100]
        # dataframe['CDLPIERCING'] = ta.CDLPIERCING(dataframe) # values [0, 100]
        # # Morningstar: values [0, 100]
        # dataframe['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(dataframe) # values [0, 100]
        # # Three White Soldiers: values [0, 100]
        # dataframe['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS(dataframe) # values [0, 100]

        # Pattern Recognition - Bearish candlestick patterns
        # ------------------------------------
        # # Hanging Man: values [0, 100]
        # dataframe['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(dataframe)
        # # Shooting Star: values [0, 100]
        # dataframe['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR(dataframe)
        # # Gravestone Doji: values [0, 100]
        # dataframe['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI(dataframe)
        # # Dark Cloud Cover: values [0, 100]
        # dataframe['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(dataframe)
        # # Evening Doji Star: values [0, 100]
        # dataframe['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(dataframe)
        # # Evening Star: values [0, 100]
        # dataframe['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(dataframe)

        # Pattern Recognition - Bullish/Bearish candlestick patterns
        # ------------------------------------
        # # Three Line Strike: values [0, -100, 100]
        # dataframe['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE(dataframe)
        # # Spinning Top: values [0, -100, 100]
        # dataframe['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP(dataframe) # values [0, -100, 100]
        # # Engulfing: values [0, -100, 100]
        # dataframe['CDLENGULFING'] = ta.CDLENGULFING(dataframe) # values [0, -100, 100]
        # # Harami: values [0, -100, 100]
        # dataframe['CDLHARAMI'] = ta.CDLHARAMI(dataframe) # values [0, -100, 100]
        # # Three Outside Up/Down: values [0, -100, 100]
        # dataframe['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(dataframe) # values [0, -100, 100]
        # # Three Inside Up/Down: values [0, -100, 100]
        # dataframe['CDL3INSIDE'] = ta.CDL3INSIDE(dataframe) # values [0, -100, 100]

        # # Chart type
        # # ------------------------------------
        # # Heikin Ashi Strategy
        # heikinashi = qtpylib.heikinashi(dataframe)
        # dataframe['ha_open'] = heikinashi['open']
        # dataframe['ha_close'] = heikinashi['close']
        # dataframe['ha_high'] = heikinashi['high']
        # dataframe['ha_low'] = heikinashi['low']

        # Retrieve best bid and best ask from the orderbook
        # ------------------------------------
        """
        # first check if dataprovider is available
        if self.dp:
            if self.dp.runmode.value in ('live', 'dry_run'):
                ob = self.dp.orderbook(metadata['pair'], 1)
                dataframe['best_bid'] = ob['bids'][0][0]
                dataframe['best_ask'] = ob['asks'][0][0]
        """

        return dataframe

    def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        """
        Based on TA indicators, populates the entry signal for the given dataframe
        :param dataframe: DataFrame
        :param metadata: Additional information, like the currently traded pair
        :return: DataFrame with entry columns populated
        """
        dataframe.loc[
            (
                # Signal: RSI crosses above 30
                # (qtpylib.crossed_above(dataframe['rsi'], self.buy_rsi.value)) &
                # (dataframe['tema'] <= dataframe['bb_middleband']) &  # Guard: tema below BB middle
                (dataframe['tema'] > dataframe['tema'].shift(1)) &  # Guard: tema is raising
                (dataframe['volume'] > 0)  # Make sure Volume is not 0
            ),
            'enter_long'] = 1

        dataframe.loc[
            (
                # Signal: RSI crosses above 70
                # (qtpylib.crossed_above(dataframe['rsi'], self.short_rsi.value)) &
                # (dataframe['tema'] > dataframe['bb_middleband']) &  # Guard: tema above BB middle
                (dataframe['tema'] < dataframe['tema'].shift(1)) &  # Guard: tema is falling
                (dataframe['volume'] > 0)  # Make sure Volume is not 0
            ),
            'enter_short'] = 1

        return dataframe

    def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        """
        Based on TA indicators, populates the exit signal for the given dataframe
        :param dataframe: DataFrame
        :param metadata: Additional information, like the currently traded pair
        :return: DataFrame with exit columns populated
        """
        dataframe.loc[
            (
                # Signal: RSI crosses above 70
                (qtpylib.crossed_above(dataframe['rsi'], self.sell_rsi.value)) &
                # (dataframe['tema'] > dataframe['bb_middleband']) &  # Guard: tema above BB middle
                (dataframe['tema'] < dataframe['tema'].shift(1)) &  # Guard: tema is falling
                (dataframe['volume'] > 0)  # Make sure Volume is not 0
            ),

            'exit_long'] = 1

        dataframe.loc[
            (
                # Signal: RSI crosses above 30
                (qtpylib.crossed_above(dataframe['rsi'], self.exit_short_rsi.value)) &
                # Guard: tema below BB middle
                # (dataframe['tema'] <= dataframe['bb_middleband']) &
                (dataframe['tema'] > dataframe['tema'].shift(1)) &  # Guard: tema is raising
                (dataframe['volume'] > 0)  # Make sure Volume is not 0
            ),
            'exit_short'] = 1

        return dataframe
xmatthias commented 2 years ago

well indicators disables some warnings (warnings.simplefilter(action="ignore", category=RuntimeWarning)) ...

so the most likely reason is that the warnings are always there - just hyperopt is not disabling these warnings in some areas.

italodamato commented 2 years ago

yep, that's what I was worried about...

xmatthias commented 2 years ago

I think your best bet for this will be to report this to pandas_ta - maybe they have some suggestions or reasons as to why this happens.

You'll probably have to strip it from freqtrade code - but we do provide methods to load the data directly (maybe into a notebook) - so this can be tested and shown detached from freqtrade code.

xmatthias commented 2 years ago

Any news on this? knowing you a bit i'm sure you've investigated this further - so i'm curious as to what the outcome was.

i do think that the warning is always there (independent of hyperopt / the hyperopt mode) - but qtpylib is hiding it in most instances (not in hyperopt - but that's easily possible due to the way hyperopt works).

italodamato commented 2 years ago

I haven't asked them but, from a quick check, it happens on LUNA-USDT-4h when the length is set to 1 and it happens only the first time I run it (I guess the warning gets disabled if I try again).

The point is that I wasn't using length=1 as a parameter in my strategy so it's either something that gets used under the hood (maybe for some checks?) or there's something else happening when using analyze-per-epoch

xmatthias commented 2 years ago

the error comes from linreg - which is used by several other indicators.

wasn't luna suspended for a time? maybe it's the missing candles (near or at 0) that cause problems?

xmatthias commented 1 year ago

Unfortunately, this is not something we will be able to fix here.

Errors are surpressed when importing qtpylib.indicators - but the error itself is coming from pandas_ta - so this is best investigated with them.