{"record":{"id":"4ad8377dabe25020","repo":"freqtrade/freqtrade","slug":"you-are-trying-to-use-a-freqai-strategy-with-proce","errorCode":null,"errorMessage":"You are trying to use a FreqAI strategy with process_only_new_candles = False. This is not supported by FreqAI, and it is therefore aborting.","messagePattern":"You are trying to use a FreqAI strategy with process_only_new_candles = False\\. This is not supported by FreqAI, and it is therefore aborting\\.","errorType":"exception","errorClass":"OperationalException","httpStatus":null,"severity":"error","filePath":"freqtrade/freqai/freqai_interface.py","lineNumber":447,"sourceCode":"        dk.append_predictions(append_df)\n        dk.save_backtesting_prediction(append_df)\n\n    def start_live(\n        self, dataframe: DataFrame, metadata: dict, strategy: IStrategy, dk: FreqaiDataKitchen\n    ) -> FreqaiDataKitchen:\n        \"\"\"\n        The main broad execution for dry/live. This function will check if a retraining should be\n        performed, and if so, retrain and reset the model.\n        :param dataframe: DataFrame = strategy passed dataframe\n        :param metadata: Dict = pair metadata\n        :param strategy: IStrategy = currently employed strategy\n        dk: FreqaiDataKitchen = Data management/analysis tool associated to present pair only\n        :returns:\n        dk: FreqaiDataKitchen = Data management/analysis tool associated to present pair only\n        \"\"\"\n\n        if not strategy.process_only_new_candles:\n            raise OperationalException(\n                \"You are trying to use a FreqAI strategy with \"\n                \"process_only_new_candles = False. This is not supported \"\n                \"by FreqAI, and it is therefore aborting.\"\n            )\n\n        # get the model metadata associated with the current pair\n        (_, trained_timestamp) = self.dd.get_pair_dict_info(metadata[\"pair\"])\n\n        # append the historic data once per round\n        if self.dd.historic_data:\n            self.dd.update_historic_data(strategy, dk)\n            logger.debug(f\"Updating historic data on pair {metadata['pair']}\")\n            self.track_current_candle()\n\n        (_, new_trained_timerange, data_load_timerange) = dk.check_if_new_training_required(\n            trained_timestamp\n        )\n        dk.set_paths(metadata[\"pair\"], new_trained_timerange.stopts)","sourceCodeStart":429,"sourceCodeEnd":465,"githubUrl":"https://github.com/freqtrade/freqtrade/blob/1c8edfe4d1e8d11bd4b40e8fc3237c26c3a60e15/freqtrade/freqai/freqai_interface.py#L429-L465","documentation":"FreqAI's dry/live execution path (FreqAI.extract_data_and_train_model / update_scheduled_model) requires strategy.process_only_new_candles = True. FreqAI trains on a fixed candle snapshot, and processing every throttle iteration would retrain/repeat work inconsistently, so a False value aborts with OperationalException.","triggerScenarios":"Starting dry-run or live trading ('freqtrade trade') with a FreqAI-enabled strategy and config where process_only_new_candles is set to False (in strategy attribute or config 'process_only_new_candles': false).","commonSituations":"User starts from a scalping strategy template that sets process_only_new_candles = False for faster reaction; config overrides the strategy attribute with 'process_only_new_candles': false.","solutions":["Set process_only_new_candles = True in the FreqAI strategy class","Remove or set 'process_only_new_candles': true in the config JSON","Use the FreqaiExampleStrategy template, which ships with the correct value"],"exampleFix":"# before\nclass MyFreqaiStrategy(IStrategy):\n    process_only_new_candles = False\n\n# after\nclass MyFreqaiStrategy(IStrategy):\n    process_only_new_candles = True","handlingStrategy":"validation","validationCode":"# Guard before 'freqtrade trade'\nprocess_only_new = config.get('process_only_new_candles',\n                               getattr(strategy, 'process_only_new_candles', True))\nassert process_only_new is True, 'FreqAI requires process_only_new_candles = True'","typeGuard":"def freqai_strategy_ready(strategy) -> bool:\n    return bool(getattr(strategy, 'process_only_new_candles', False)) is True","tryCatchPattern":null,"preventionTips":["Set process_only_new_candles = True in every FreqAI strategy","Make sure the config does not override the strategy attribute to false"],"tags":["freqai","strategy","dry-run","live-trading","config"],"backgroundTag":null,"analyzedSha":"1c8edfe4d1e8d11bd4b40e8fc3237c26c3a60e15","analyzedAt":"2026-08-15T05:09:08.096Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}