{"record":{"id":"cef3a70842e0ec20","repo":"freqtrade/freqtrade","slug":"historic-ohlcv-data-not-available-for-self-name","errorCode":null,"errorMessage":"Historic OHLCV data not available for {self.name}. Can't use freqAI.","messagePattern":"Historic OHLCV data not available for (.+?)\\. Can't use freqAI\\.","errorType":"exception","errorClass":"ConfigurationError","httpStatus":null,"severity":"error","filePath":"freqtrade/exchange/exchange.py","lineNumber":869,"sourceCode":"            for k, v in order_time_in_force.items()\n        ):\n            raise ConfigurationError(\n                f\"Time in force policies are not supported for {self.name} yet.\"\n            )\n\n    def validate_orderflow(self, exchange: dict) -> None:\n        if exchange.get(\"use_public_trades\", False) and (\n            not self.exchange_has(\"fetchTrades\") or not self._ft_has[\"trades_has_history\"]\n        ):\n            raise ConfigurationError(\n                f\"Trade data not available for {self.name}. Can't use orderflow feature.\"\n            )\n\n    def validate_freqai(self, config: Config) -> None:\n        freqai_enabled = config.get(\"freqai\", {}).get(\"enabled\", False)\n        override = config.get(\"freqai\", {}).get(\"override_exchange_checks\", False)\n        if not override and freqai_enabled and not self._ft_has[\"ohlcv_has_history\"]:\n            raise ConfigurationError(\n                f\"Historic OHLCV data not available for {self.name}. Can't use freqAI.\"\n            )\n        elif override and freqai_enabled and not self._ft_has[\"ohlcv_has_history\"]:\n            logger.warning(\n                \"Overriding exchange checks for freqAI. Make sure that your exchange supports \"\n                \"fetching historic OHLCV data, otherwise freqAI will not work.\"\n            )\n\n    def validate_demo_trading(self, exchange_conf: dict) -> None:\n        \"\"\"Validate demo trading configuration\n        Prevents accidental configuration with wrong expectations.\n        \"\"\"\n        if exchange_conf.get(\"demo_trading\", False):\n            if not self.get_option(\"supports_demo_trading\"):\n                raise ConfigurationError(f\"Demo trading is not supported for {self.name}.\")\n            else:\n                logger.info(f\"Demo trading enabled for {self.name}\")\n","sourceCodeStart":851,"sourceCodeEnd":887,"githubUrl":"https://github.com/freqtrade/freqtrade/blob/1c8edfe4d1e8d11bd4b40e8fc3237c26c3a60e15/freqtrade/exchange/exchange.py#L851-L887","documentation":"Raised in validate_freqai() when freqai.enabled is true, freqai.override_exchange_checks is false, and the exchange subclass's _ft_has['ohlcv_has_history'] is false. FreqAI training needs substantial historical OHLCV; exchanges that only serve a rolling window (no history) cannot supply it. The override flag exists specifically to bypass this check with a warning.","triggerScenarios":"Enabling the freqai config section on exchanges like some futures feeds where ohlcv_has_history is false (only recent candles available via paginated fetch).","commonSituations":"Users enabling freqAI on exchanges with limited candle history; not realizing their exchange caps OHLCV depth; porting freqAI configs from binance to niche exchanges.","solutions":["Use an exchange with full OHLCV history (e.g. binance, kraken) for freqAI.","If you accept the limitation (live-only training data), set freqai.override_exchange_checks: true — freqtrade then logs a warning instead.","Supply training data via a data file / datadir workflow instead of the live exchange."],"exampleFix":"# config.json - before\n\"freqai\": { \"enabled\": true }\n\n# after\n\"freqai\": { \"enabled\": true, \"override_exchange_checks\": true }","handlingStrategy":"validation","validationCode":"if config.get('freqai', {}).get('enabled'):\n    if not exchange._ft_has['ohlcv_has_history']:\n        if not config['freqai'].get('override_exchange_checks'):\n            raise SystemExit(\"freqAI needs historic OHLCV; override or change exchange\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run freqAI only on exchanges with ohlcv_has_history, or consciously set override_exchange_checks.","Provide freqAI training data from downloaded data files when the live exchange lacks history."],"tags":["freqai","exchange","ohlcv","configuration","startup"],"backgroundTag":null,"analyzedSha":"1c8edfe4d1e8d11bd4b40e8fc3237c26c3a60e15","analyzedAt":"2026-08-15T05:09:08.096Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}