
freqtrade list-freqaimodels 命令详解FreqAI 模型清单、参数说明与源码级查找机制【免费下载链接】freqtradeFree, open source crypto trading bot项目地址: https://gitcode.com/GitHub_Trending/fr/freqtrade在 Freqtrade 的 FreqAI 机器学习体系中模型Model是策略的核心组件但 FreqAI 模型不像策略那样在文档中被频繁展示。freqtrade list-freqaimodels正是用来盘点当前环境中所有可用 FreqAI 模型的命令行工具它会扫描内置模型目录、用户模型目录以及--freqaimodel-path指定的附加路径按名称输出每个模型的类名、来源文件与加载状态。读完本文你将掌握该命令的完整参数用法、两种输出模式的区别、模型搜索路径的优先级机制以及它与--freqaimodel配置项和 REST API/freqaimodels端点之间的调用关系。命令概述与完整帮助输出list-freqaimodels是 Freqtrade CLI 的内置子命令之一在 命令注册代码 中注册帮助文本为 Print available freqAI models.。它的命令行选项来自参数组ARGS_LIST_FREQAIMODELS即freqaimodel_path与print_one_column两项定义于 arguments.py再加上所有list-*命令共用的 Common arguments 父解析器。官方文档 docs/commands/list-freqaimodels.md 由构建脚本 build_helpers/create_command_partials.py 自动从 argparse 解析器抓取生成该脚本要求 Python 3.13 运行以保证输出格式一致其完整内容如下usage: freqtrade list-freqaimodels [-h] [-v] [--no-color] [--logfile FILE] [-V] [-c PATH] [-d PATH] [--userdir PATH] [--freqaimodel-path PATH] [-1] options: -h, --help show this help message and exit --freqaimodel-path PATH Specify additional lookup path for freqaimodels. -1, --one-column Print output in one column. Common arguments: -v, --verbose Verbose mode (-vv for more, -vvv to get all messages). --no-color Disable colorization of hyperopt results. May be useful if you are redirecting output to a file. --logfile, --log-file FILE Log to the file specified. Special values are: syslog, journald. See the documentation for more details. -V, --version show programs version number and exit -c, --config PATH Specify configuration file (default: userdir/config.json or config.json whichever exists). Multiple --config options may be used. Can be set to - to read config from stdin. -d, --datadir, --data-dir PATH Path to the base directory of the exchange with historical backtesting data. To see futures data, use trading-mode additionally. --userdir, --user-data-dir PATH Path to userdata directory.命令专属选项选项源码定义位置作用说明--freqaimodel-path PATHcli_options.py指定一个附加的 FreqAI 模型查找路径。从源码结构看该值会进入config[freqaimodel_path]并在解析器构建搜索路径时被插入到搜索列表的最前面因此其优先级高于内置模型目录与user_data/freqaimodels-1, --one-columnarguments.py单列输出模式每行仅打印一个模型类名便于脚本/管道处理如配合grep、xargs公共选项Common arguments以下选项继承自所有子命令共用的父解析器在 arguments.py 中统一定义选项说明-h, --help显示帮助信息并退出-v, --verbose详细日志模式-vv更多-vvv输出全部消息--no-color禁用输出着色适合将输出重定向到文件--logfile, --log-file FILE日志写入指定文件特殊值syslog、journald可写到系统日志-V, --version显示程序版本号并退出-c, --config PATH指定配置文件默认为userdir/config.json或config.json取存在者可多次使用以叠加配置设为-时从 stdin 读取-d, --datadir, --data-dir PATH历史回测数据根目录配合trading-mode可查看合约数据。注意该命令本身并不读取历史数据此项仅为公共参数统一注入--userdir, --user-data-dir PATH指定 userdata 目录直接决定模型搜索路径中的用户模型目录位置命令入口实现从 CLI 参数到模型清单list-freqaimodels的执行入口是 start_list_freqAI_models其执行链路非常清晰调用setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)完成配置加载与校验。这里使用RunMode.UTIL_NO_EXCHANGE说明该命令不需要连接交易所、可以完全离线运行适合在纯开发环境中盘点模型调用FreqaiModelResolver.search_all_objects(config, not args[print_one_column])扫描所有搜索路径。第二个参数enum_failed的取值与输出模式绑定表格模式下为True导入失败的模块会被标记出来单列模式下为False导入失败的模块直接跳过按模型名sorted(..., keylambda x: x[name])字母序排序根据print_one_column决定输出方式单列模式逐行print类名表格模式交给共用的_print_objs_tabular函数渲染 Rich 表格。单元测试 test_start_list_freqAI_models 验证了两种模式的行为-1模式下输出仅包含LightGBMClassifier、LightGBMRegressor、XGBoostRegressor等类名而不含builtin/...位置信息默认表格模式则同时输出名称与位置列。模型从哪里被找到FreqaiModelResolver 的搜索路径机制这是理解list-freqaimodels输出的关键。FreqaiModelResolver 继承自通用的 IResolver通过四个类属性声明自己的解析规则属性值含义object_typeIFreqaiModel只识别 IFreqaiModel 接口的子类object_type_strFreqaiModel报错信息中使用的对象类型名user_subdirUSERPATH_FREQAIMODELS用户模型目录名即user_data/freqaimodels常量定义见 constants.pyinitial_search_pathfreqtrade/freqai/prediction_models内置模型目录对应仓库中的 freqtrade/freqai/prediction_modelsextra_pathfreqaimodel_path从config[freqaimodel_path]即--freqaimodel-path读取的附加路径结合 IResolver.build_search_paths 的插入逻辑extra_path与用户目录均以insert(0, ...)插到列表头部最终搜索顺序为--freqaimodel-path/freqaimodel_path若设置——最高优先级user_data/freqaimodels/——用户自定义模型目录freqtrade/freqai/prediction_models/——内置模型目录输出中位置列带builtin/前缀由 _build_rel_location 生成。内置模型目录当前包含 LightGBM 系列LightGBMClassifier、LightGBMClassifierMultiTarget、LightGBMRegressor、LightGBMRegressorMultiTarget、XGBoost 系列XGBoostClassifier、XGBoostRFClassifier、XGBoostRFRegressor、XGBoostRegressor、XGBoostRegressorMultiTarget、PyTorch 系列PyTorchMLPClassifier、PyTorchMLPRegressor、PyTorchTransformerRegressor、sklearn 分类器SKLearnRandomForestClassifier以及强化学习模型ReinforcementLearner、ReinforcementLearner_multiproc。注意这些模型依赖requirements-freqai.txt/requirements-freqai-rl.txt中的第三方库若依赖未安装对应模块在表格模式中会呈现为加载失败状态。模型识别规则由 _get_valid_object 决定只有在目标 .py 文件内部定义obj.__module__ module_name且不是IFreqaiModel本身的类才算有效模型导入时捕获ModuleNotFoundError、ImportError等异常并记录 warning。两个对实际使用有影响的行为表格模式enum_failedTrue下导入失败的文件仍会列出状态列显示LOAD FAILED红色加粗类名重复时显示DUPLICATE NAME黄色加载成功且唯一时显示OK绿色。这些状态逻辑在共用的 _print_objs_tabular 中实现因此表头与list-strategies相同Strategy name / Location / Status单列模式enum_failedFalse下导入失败的模块被直接跳过输出中不会出现。从源码结构看search_all_objects的recursive参数对 FreqAI 模型固定为False该命令没有类似list-strategies的--recursive-strategy-search选项即模型文件必须位于上述三个目录的顶层子目录中的模型文件不会被枚举。与 FreqAI 主流程的关系list-freqaimodels是只读盘点命令而真正加载模型供 FreqAI 策略使用走的是 FreqaiModelResolver.load_freqaimodel。两者共用同一套搜索路径但加载逻辑有两点差异值得注意加载时读取的是config[freqaimodel]即 FreqAI 策略配置中的freqaimodel字段未设置时抛出OperationalException提示使用--freqaimodel存在一个禁止名单disallowed_models [BaseRegressionModel]基类不允许被直接指定为运行模型必须选择其具体子类或自行继承。除了 CLIWebserver 的 REST API 也复用同一个解析器api_webserver.py 中的GET /freqaimodels端点同样调用FreqaiModelResolver.search_all_objects但固定enum_failedFalse且只返回排序后的模型名列表{freqaimodels: [...]}。因此 FreqUI 或 API 客户端中看到的模型清单与freqtrade list-freqaimodels -1的结果来源完全一致。实战使用示例与常见问题基本用法——列出所有模型表格输出含位置与状态freqtrade list-freqaimodels脚本化用法——单列输出配合 grep 检查某个模型是否可用freqtrade list-freqaimodels -1 | grep PyTorchTransformerRegressor扫描私有模型仓库——将团队共享的模型目录加入查找路径freqtrade list-freqaimodels --freqaimodel-path /path/to/shared/models由于extra_path被插入搜索路径最前该目录中的同名模型会在搜索中先于user_data/freqaimodels与内置目录命中。同样的值也可以写入配置文件的freqaimodel_path字段解析器通过config.get(cls.extra_path)读取效果等价。常见问题排查模型文件存在但列表中没有确认文件位于user_data/freqaimodels/、--freqaimodel-path指定目录或内置目录的顶层不支持递归子目录且文件中定义的是IFreqaiModel的子类并在文件内直接定义不是从别处导入后再暴露表格中出现 LOAD FAILED通常是第三方依赖缺失如未安装 FreqAI 的 requirements可结合-vv查看详细 warning日志中会输出 Could not import 文件 due to 原因切换 userdata 目录用--userdir指向不同的 userdata 根目录模型搜索的用户目录部分会随之变化与list-strategies的区别两者共享表格渲染与解析框架但 FreqAI 模型命令没有--recursive-strategy-search选项且只识别IFreqaiModel子类而非策略类。小结list-freqaimodels是 FreqAI 工作流中低门槛的模型库存查询入口它不需要交易所连接默认扫描内置freqtrade/freqai/prediction_models、用户user_data/freqaimodels与--freqaimodel-path三类路径并以带状态的 Rich 表格或纯类名两种形式输出。理解它背后的 IResolver 搜索路径优先级与 FreqaiModelResolver 的加载规则能让你在自定义 FreqAI 模型、排查模型未加载问题以及对接 REST API/freqaimodels端点时都有据可依。【免费下载链接】freqtradeFree, open source crypto trading bot项目地址: https://gitcode.com/GitHub_Trending/fr/freqtrade创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考