6.8 KiB
date | tags | title | from | |||||
---|---|---|---|---|---|---|---|---|
|
|
https://x.com/i/grok?conversation=1909584053176877095 |
😯: 实现机器学习, Freqtrade需要某个币对多久的历史数据,放到本地机器,以何种形式落盘?
在 Freqtrade 中实现机器学习(特别是通过其 FreqAI 模块进行自适应预测建模)时,对历史数据的需求和存储方式取决于你的具体策略、模型训练需求以及回测或实时交易的时间范围。以下是对你的问题的详细解答:
- 需要某个币对多久的历史数据?
Freqtrade 的机器学习功能(FreqAI)并没有固定的历史数据时长要求,而是由以下因素决定:
a. 策略和模型的需求
-
指标计算:你的策略中使用的指标(如移动平均线、RSI 等)需要一定数量的初始数据(即 startup_candle_count)。比如,如果你用的是 100 周期的 EMA(指数移动平均线),至少需要 400 根K线(根据 Freqtrade 文档建议,4倍周期以确保指标稳定)。
-
训练窗口:FreqAI 需要足够的数据来训练机器学习模型。训练窗口的大小由你在配置文件中定义的参数 train_period_days 或 live_retrain_hours 决定。例如,如果你设置 train_period_days = 30,就需要至少 30 天的数据。
-
特征工程:如果你启用了复杂的特征工程(如 FreqAI 的自动特征生成,可能生成数千个特征),可能需要更多数据来确保模型不过拟合。
b. 回测或实时交易的需求
-
回测:回测时需要覆盖整个测试时间段的数据,外加 startup_candle_count 的预热数据。例如,如果你想回测 2024 年 1 月 1 日到 4 月 1 日的 3 个月,使用 5 分钟K线,且 startup_candle_count = 400,那么需要从 2023 年 12 月中旬开始的数据(约额外 2 天)。
-
实时交易:实时模式下,FreqAI 会定期重新训练模型(例如每小时或每天),需要下载足够的历史数据来支持初始训练和后续更新。通常建议至少准备数周到数月的数据,具体取决于你的 train_period_days 设置。
c. 交易所限制
- 不同交易所提供的历史数据量有限。例如,Binance 通常提供较长的 OHLCV 数据历史,而 Kraken 只提供 720 根K线(需要用 --dl-trades 下载更多)。你需要确保下载的数据量满足策略和模型的最低要求。
典型建议
-
短期策略:至少 1-3 个月的数据(5 分钟或 1 小时K线)。
-
长期策略:6 个月到 1 年甚至更长时间的数据。
-
FreqAI 默认示例:文档中常建议从 30 天到 90 天开始,具体取决于你的目标(如预测短期价格波动还是长期趋势)。
- 如何放到本地机器?
Freqtrade 提供了一个命令行工具 freqtrade download-data 来下载历史数据并存储到本地。以下是实现步骤:
a. 下载数据的命令
假设你想为某个币对(如 BTC/USDT)下载数据:
bash
freqtrade download-data --exchange binance --pairs BTC/USDT --timeframes 5m --days 90
-
--exchange:指定交易所(如 binance、kraken 等)。
-
--pairs:指定币对,可以用正则表达式(如 ".*/USDT" 下载所有 USDT 交易对)。
-
--timeframes:指定K线时间框架(如 1m、5m、1h,默认是 1m 和 5m)。
-
--days:指定下载的天数(如 90 天)。
-
--timerange:可选,指定具体时间范围(如 20240101-20240401)。
b. 增量更新
Freqtrade 支持增量下载。如果你已经下载了数据,可以定期运行类似以下命令更新:
bash
freqtrade download-data --exchange binance --pairs BTC/USDT --timeframes 5m --days 7
这会下载最近 7 天的数据并追加到已有数据中。
c. 数据存储位置
下载的数据默认存储在用户数据目录下的 user_data/data/ 文件夹中,例如:
~/.freqtrade/user_data/data/binance/
- 以何种形式落盘?
Freqtrade 默认使用高效的 Feather 文件格式(基于 Apache Arrow)存储历史数据。这种格式具有以下特点:
-
高效性:相比 CSV 或 JSON,Feather 文件读写速度更快,适合大数据处理。
-
压缩性:文件大小较小,节省磁盘空间。
-
兼容性:与 Python 的 Pandas 库无缝集成,方便数据分析。
文件命名约定
-
OHLCV 数据(开盘、高点、低点、收盘、成交量)存储为:
<pair>-<timeframe>.feather
例如:BTC_USDT-5m.feather
-
如果下载了交易数据(trades),则存储为:
<pair>-trades.feather
例如:BTC_USDT-trades.feather
可选格式
-
如果你需要其他格式,可以用 freqtrade convert-data 将数据转换为 JSON 或 Parquet。例如:
bash
freqtrade convert-data --format-from feather --format-to json
-
对于某些特殊交易所(如 Kraken),可能需要先下载 trades 数据并转换为 OHLCV 数据:
bash
freqtrade trades-to-ohlcv --exchange kraken --pairs BTC/USD --timeframes 5m
- 实际操作示例
假设你想为 BTC/USDT 下载 90 天的 5 分钟K线数据,并用于 FreqAI:
-
下载数据:
bash
freqtrade download-data --exchange binance --pairs BTC/USDT --timeframes 5m --days 90
-
检查文件: 数据会存储在 ~/.freqtrade/user_data/data/binance/BTC_USDT-5m.feather。
-
配置 FreqAI: 在 config.json 中设置:
json
"freqai": { "enabled": true, "train_period_days": 60, "identifier": "my_model", "feature_parameters": { "include_timeframes": ["5m"] } }
-
运行回测或实时交易:
bash
freqtrade backtesting --strategy MyStrategy --freqai
- 注意事项
-
磁盘空间:5 分钟K线数据每币对每天约产生 288 根K线,90 天约为 26,000 根K线,一个 Feather 文件大小通常在几 MB 到几十 MB 之间。准备足够的存储空间。
-
数据完整性:运行 freqtrade list-data 检查下载的数据是否完整。
-
交易所限制:某些交易所可能需要额外的 API 调用或特殊配置,详见 Freqtrade 文档的“Exchange-specific Notes”部分。
总结
-
时长:通常需要 1-12 个月的历史数据,具体取决于策略和训练窗口(建议从 30-90 天开始)。
-
下载方式:使用 freqtrade download-data 命令,存储到本地 user_data/data/ 目录。
-
存储格式:默认使用 Feather 文件格式,高效且适合机器学习处理。
如果你有更具体的策略或币对需求,可以告诉我,我可以帮你进一步细化!