尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

FreqAI 快速上手:Freqtrade 机器学习预测模型的完整工作原理(附配置与特征示例)

FreqAI 快速上手:Freqtrade 机器学习预测模型的完整工作原理(附配置与特征示例) FreqAI 快速上手Freqtrade 机器学习预测模型的完整工作原理附配置与特征示例【免费下载链接】freqtradeFree, open source crypto trading bot项目地址: https://gitcode.com/GitHub_Trending/fr/freqtrade想在 Freqtrade 里用轻量模型预测未来几根 K 线的走势却被特征工程、归一化、重训练这些词劝退FreqAI 就是为这种情况设计的模块它把 Freqtrade 策略里的原始 K 线自动加工成机器学习可用的预测模型并支持回测与 Dry Run 全流程。这篇文章按安装 → 跑通 → 数据流 → 参数 → 特征 → 进阶 → 排障的顺序讲清楚整个链路所有命令和配置均来自仓库内现成文件可以直接对照执行。从 0 跑通FreqAI 快速上手先花 10 秒了解 FreqAI 是什么FreqAI 是 Freqtrade开源加密交易机器人框架内置的自适应机器学习模块。它解决的问题很具体你提供特征比如 RSI、布林带宽度和标签比如未来 20 根 K 线的平均收益它负责数据清洗、归一化、周期性重训练、模型缓存和预测输出这一整套脏活。适合两类人会写 Python、想给现有 Freqtrade 策略加上预测能力的交易者以及想找一个贴近真实行情的环境来练习机器学习的开发者。注意它是工具不是印钞机——回测漂亮不代表实盘赚钱这一点后文会专门展开。安装依赖方式一交互式安装脚本遇到 FreqAI 依赖提示时选 yesgit clone https://gitcode.com/GitHub_Trending/fr/freqtrade cd freqtrade ./setup.sh方式二手动补装依赖pip install -r requirements-freqai.txt如果你用 Docker把镜像 tag 换成freqtradeorg/freqtrade:stable_freqai即可需要 PyTorch 或强化学习时再换stable_freqaitorch/stable_freqairl。第一次 Dry Run用仓库自带的示例配置和示例策略一条命令启动freqtrade trade \ --config config_examples/config_freqai.example.json \ --strategy FreqaiExampleStrategy \ --freqaimodel LightGBMRegressor \ --strategy-path freqtrade/templates三个关键入口文件后续都围绕它们展开配置config_examples/config_freqai.example.json示例策略freqtrade/templates/FreqaiExampleStrategy.py预测模型freqtrade/freqai/prediction_models/LightGBMRegressor.py跑起来后你实际会看到什么按时间顺序日志里依次会出现四段内容数据下载FreqAI 根据训练周期反推出需要的时间范围自动拉取历史 K 线含相关交易对。模型训练对每个交易对独立训练一个模型首次启动最耗时。预测输出每根新 K 线出现后策略的populate_indicators里调用self.freqai.start(...)dataframe 里会多出-s_close预测值、do_predict本次预测是否可采纳等列。交易执行示例策略的入场逻辑只有一句话——预测收益 1% 且预测可采纳时做多 -1% 时做空。官方文档明确提醒示例策略是为了展示功能、能在小电脑上跑通而设计的基准件不是给你直接上实盘用的。详见 docs/freqai.md。数据怎么流过模型FreqAI 预测管线官方架构图把整条流水线讲得很完整先看图再按正向顺序走一遍第 1 步原始 K 线 → 基础特征。你在策略里写少量基础特征基础时间框架下的 RSI、EMA 等。第 2 步特征工程自动扩展。FreqAI 按配置把单个基础特征批量复制成几千个变体换时间框架3m/15m/1h、换指标周期10/20 根、叠加滞后 K 线、替换为相关交易对。示例配置里只写了 10 来个基础特征最终喂给模型的是一万多维的特征向量。第 3 步清洗与归一化。自动截断 NaN、用 SVM 或密度检测剔除异常值、统计安全地做归一化可选 PCA 降维。第 4 步训练与重训练。右侧绿色区域在独立线程里持续工作构建/更新历史数据、训练模型、把模型和元数据存盘。模型训练不阻塞预测与交易这是自适应的关键——行情变了模型按周期重新学习。第 5 步预测与后处理。推理完成后做反归一化、计算预测置信度把开头的预测列写回 dataframe 交给你的入场/出场逻辑。第 6 步模型清理。超过purge_old_models保留数量的旧模型自动删除长期运行不会撑爆磁盘。重训练的节奏由滑动窗口控制——用固定长度的历史窗口滚动前进窗口长度即train_period_days把参数拧到你要的样子FreqAI 配置分组解读配置全部集中在顶层的freqai对象里。按功能分成四组看① 训练周期组——决定模型看多远、学多快train_period_days一次训练用多少天历史数据backtest_period_days回测时每次重训练间隔多少天live_retrain_hours实盘/Dry Run 下每隔几小时重训0表示每根新 K 线都重训吃算力purge_old_models最多保留几个历史模型文件② 特征扩展组feature_parameters——决定特征规模include_timeframes参与扩展的时间框架include_corr_pairlist纳入的相关交易对例如用 BTC/USDT 的数据辅助预测 ETH/USDTlabel_period_candles标签向前看几根 K 线indicator_periods_candles指标周期列表每个基础特征会按列表长度翻倍include_shifted_candles引入滞后 K 线数量③ 数据质量组同在feature_parameters下use_SVM_to_remove_outliersSVM 异常值剔除开关DI_threshold/weight_factor数据离群指数阈值与时间加权因子用来决定哪些样本值得学principal_component_analysis是否做 PCA 降维④ 模型组data_split_parameters控制训练/测试集切分model_training_parameters原样透传给你所选预测模型的超参数。下面这段取自仓库示例配置可以直接当起点freqai: { enabled: true, purge_old_models: 2, train_period_days: 15, backtest_period_days: 7, identifier: my-unique-id, feature_parameters: { include_timeframes: [3m, 15m, 1h], include_corr_pairlist: [BTC/USDT, ETH/USDT], label_period_candles: 20, indicator_periods_candles: [10, 20], DI_threshold: 0.9, weight_factor: 0.9, use_SVM_to_remove_outliers: true } }identifier建议每次改完特征或参数就换一个新值避免新模型覆盖旧模型导致对比失效。全部参数含义见 docs/freqai-parameter-table.md配置总览见 docs/freqai-configuration.md。特征怎么写%、、%% 三个命名约定FreqAI 策略里真正需要写特征的地方只有两类方法都在示例策略里能找到对应实现。约定一列名前缀就是身份。规则只有三条记牢即可%开头模型输入特征开头预测目标标签%%开头不进模型原样保留在 dataframe 里供画图或做交易逻辑用约定二三种特征工程方法扩展力度递减。def feature_engineering_expand_all(self, dataframe, period, metadata, **kwargs): # 单行代码会被复制成 时间框架 × 指标周期 × 滞后K线 × 相关交易对 个特征 dataframe[%-rsi-period] ta.RSI(dataframe, timeperiodperiod) return dataframe def feature_engineering_expand_basic(self, dataframe, metadata, **kwargs): # 不做指标周期展开适合 200 周期 EMA 这类只该有一个值的指标 dataframe[%-ema-200] ta.EMA(dataframe, timeperiod200) return dataframe def feature_engineering_standard(self, dataframe, metadata, **kwargs): # 只在基础时间框架上执行一次适合星期几、小时数这类离散特征 dataframe[%-hour_of_day] dataframe[date].dt.hour return dataframe约定三标签在set_freqai_targets里定义。示例策略的标签是未来 20 根 K 线收盘价相对当前价的平均偏离def set_freqai_targets(self, dataframe, metadata, **kwargs): candles self.freqai_info[feature_parameters][label_period_candles] dataframe[-s_close] ( dataframe[close].shift(-candles).rolling(candles).mean() / dataframe[close] - 1 ) return dataframe标签刻意向前看因为那就是你要模型学会预测的东西。预测出来后populate_entry_trend里直接读-s_close配合do_predict写入场条件即可。特征工程的完整写法见 docs/freqai-feature-engineering.md。进阶两条路线深度学习与强化学习路线一PyTorch 深度学习。FreqAI 内置了 MLP 回归/分类和 Transformer 模型PyTorchMLPRegressor、PyTorchTransformerRegressor等架构示意如下用法和 LightGBM 完全一致只需换--freqaimodel参数依赖装requirements-freqai.txt或 RL 依赖即可。有 GPU 时训练明显更快但注意特征超过上千维时先用principal_component_analysis降维再上网络收敛更稳。路线二强化学习RL。换一套思路不再设标签而是定义奖励函数calculate_reward()让 AI 在与历史行情反复交互中自己摸索策略。仓库提供Base3ActionRLEnv/Base4ActionRLEnv等基础环境和ReinforcementLearner模型类freqtrade trade --config config_examples/config_freqai.example.json \ --strategy FreqaiExampleRLStrategy --freqaimodel ReinforcementLearner \ --strategy-path freqtrade/templates自建 RL 模型类放在user_data/freqaimodels下即可被识别。两条路线的详细文档分别是 docs/freqai-configuration.md 和 docs/freqai-reinforcement-learning.md。跑得不够快、不够准一份合并排查清单性能和过拟合看起来是两件事排查路径其实重叠——都指向数据规模和模型容量这两个变量。按下面顺序过一遍先定位瓶颈在训练还是推理训练慢 → 特征量 指标数 × 时间框架 × 指标周期 × 滞后数 × 相关交易对乘起来很容易到万级。砍indicator_periods_candles的项数、减少include_corr_pairlist是最立竿见影的回测慢 → 回测时save_backtest_models: true会缓存模型重跑同一区间不必重复训练实盘重训拖慢交易 →live_retrain_hours从 0 改成一个正数让重训练降频训练本来就在独立线程卡住的是整体资源时再考虑降频再处理回测赚钱、实盘掉链子的过拟合信号拉长train_period_days30 天起小样本下复杂模型必然背答案打开use_SVM_to_remove_outliers噪声样本会诱导模型学出假规律降低模型容量减少特征数量或换更简单的模型如 RF 分类器用plot_feature_importances看特征重要性分布如果重要性集中在少数几个奇怪特征上大概率是数据泄漏或噪声被放大了检查特征是否偷看未来shift方向、指标计算窗口都要只包含历史数据最后兜底多交易对部署时可用 producer-consumer 模式让一个节点专职训练、其余节点只消费信号配置参考 docs/producer-consumer.md。⚠️ 重要提醒无论排查多细致Dry Run 表现都不等于实盘收益。加密市场波动剧烈模型预测存在系统性失效的可能实盘前务必小额、限仓、设好止损并接受可能亏光测试资金这一现实。FreqAI 上手清单与延伸阅读今天就能做的五步按上文命令跑通 Dry Run确认日志出现数据下载 → 训练 → 预测三段复制一份 config_freqai.example.json只改identifier和train_period_days打开 FreqaiExampleStrategy.py把%-rsi-period换成你自己想验证的指标跑一次freqtrade backtesting对比新旧特征的效果回测会自动模拟周期性重训练对照排查清单调一轮参数记录每次identifier对应的回测结果延伸阅读总览与快速开始docs/freqai.md配置参数总表docs/freqai-parameter-table.md特征工程写法docs/freqai-feature-engineering.md强化学习专题docs/freqai-reinforcement-learning.md开发者视角自定义模型docs/freqai-developers.md多节点部署docs/producer-consumer.mdFreqAI 的价值不在某一个神奇模型而在把重训练、数据清洗、模型管理这套持续运转的机制做成了配置项。你的工作收敛到两件事定义有信息量的特征和标签然后用回测诚实地区分哪些想法有效。【免费下载链接】freqtradeFree, open source crypto trading bot项目地址: https://gitcode.com/GitHub_Trending/fr/freqtrade创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表