{"record":{"id":"3a3509fd529301ba","repo":"freqtrade/freqtrade","slug":"the-edge-module-has-been-deprecated-in-2023-9-and","errorCode":null,"errorMessage":"The Edge module has been deprecated in 2023.9 and removed in 2025.6. All functionalities of edge have been removed.","messagePattern":"The Edge module has been deprecated in 2023\\.9 and removed in 2025\\.6\\. All functionalities of edge have been removed\\.","errorType":"exception","errorClass":"ConfigurationError","httpStatus":null,"severity":"error","filePath":"freqtrade/commands/optimize_commands.py","lineNumber":132,"sourceCode":"        logger.info(\"Another running instance of freqtrade Hyperopt detected.\")\n        logger.info(\n            \"Simultaneous execution of multiple Hyperopt commands is not supported. \"\n            \"Hyperopt module is resource hungry. Please run your Hyperopt sequentially \"\n            \"or on separate machines.\"\n        )\n        logger.info(\"Quitting now.\")\n        # TODO: return False here in order to help freqtrade to exit\n        # with non-zero exit code...\n        # Same in Edge and Backtesting start() functions.\n\n\ndef start_edge(args: dict[str, Any]) -> None:\n    \"\"\"\n    Start Edge script\n    :param args: Cli args from Arguments()\n    :return: None\n    \"\"\"\n    raise ConfigurationError(\n        \"The Edge module has been deprecated in 2023.9 and removed in 2025.6. \"\n        \"All functionalities of edge have been removed.\"\n    )\n\n\ndef start_lookahead_analysis(args: dict[str, Any]) -> None:\n    \"\"\"\n    Start the backtest bias tester script\n    :param args: Cli args from Arguments()\n    :return: None\n    \"\"\"\n    from freqtrade.configuration import setup_utils_configuration\n    from freqtrade.optimize.analysis.lookahead_helpers import LookaheadAnalysisSubFunctions\n\n    config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)\n    LookaheadAnalysisSubFunctions.start(config)\n\n","sourceCodeStart":114,"sourceCodeEnd":150,"githubUrl":"https://github.com/freqtrade/freqtrade/blob/1c8edfe4d1e8d11bd4b40e8fc3237c26c3a60e15/freqtrade/commands/optimize_commands.py#L114-L150","documentation":"Fifth check of _force_entry_validations: the pair's quote currency must equal the configured stake_currency (e.g. stake USDT but pair ETH/BTC) — otherwise the entry cannot be funded from the stake wallet. The error interpolates the allowed stake currency: \"Wrong pair selected. Only pairs with stake-currency {stake_currency} allowed.\"","triggerScenarios":"Config stake_currency=USDT, forceenter ETH/BTC; stake_currency=BTC and pair X/USDT; misreading which side is quote (BASE/QUOTE convention).","commonSituations":"Operators seeing a good signal on a BTC-quoted pair while running USDT stakes; configs migrated between exchanges with different dominant quotes (USD vs USDT); typo in stake_currency itself ('usdt' case must match exactly).","solutions":["Enter only pairs quoted in your stake currency: for USDT stake use */USDT pairs.","Or change stake_currency in config to the desired quote (and fund that wallet).","Verify with exchange.get_pair_quote_currency(pair) == config['stake_currency'] before calling."],"exampleFix":"# before: stake_currency = USDT\nclient.post('/api/v1/forceenter', json={'pair': 'ETH/BTC'})  # wrong quote\n\n# after\nclient.post('/api/v1/forceenter', json={'pair': 'ETH/USDT'})","handlingStrategy":"validation","validationCode":"stake = config['stake_currency']\nquote = exchange.get_pair_quote_currency(pair)\nif quote != stake:\n    raise ValueError(f'{pair} quoted in {quote}; need */{stake} pair')","typeGuard":"def pair_matches_stake(pair: str, stake_currency: str) -> bool:\n    return pair.split('/')[-1] == stake_currency if '/' in pair else False","tryCatchPattern":"from freqtrade.rpc import RPCException\ntry:\n    rpc._rpc_force_entry(pair, None)\nexcept RPCException as e:\n    if 'Wrong pair selected' in str(e):\n        pair = pair.split('/')[0] + '/' + config['stake_currency']\n        rpc._rpc_force_entry(pair, None)\n    else:\n        raise","preventionTips":["Mentor the BASE/QUOTE convention: quote side must equal stake_currency.","Filter candidate pairs by suffix match with stake_currency before offering them in UIs.","Double-check stake_currency spelling/case when migrating configs."],"tags":["freqtrade","forceentry","stake-currency","pair","config"],"backgroundTag":null,"analyzedSha":"1c8edfe4d1e8d11bd4b40e8fc3237c26c3a60e15","analyzedAt":"2026-08-15T05:09:08.096Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}