4.2 KiB
4.2 KiB
#freqtrade #软件配置
在已有本地数据时,如果想要下载更早的数据,直接使用下载命令是不行的 会导致程序有如下的报错:
Requested start date 2023-01-01 00:00:00 earlier than local data start date 2025-06-05 08:00:00. Use `--prepend` to download data prior to 2025-06-05 08:00:00, or `--erase` to redownload all data.
为了解决这个问题,需要使用prepend 或 erase命令。
我使用prepend成功将下载数据的时间从2025-6更新到2021-01.
freqtrade download-data --exchange binance --pairs BTC/USDT:USDT --timeframe 5m --timerange 20210101- --prepend
之后,本地数据(BTC/USDT:USDT 5m)的起始时间就更新到20210101。 这个问题以后可能在数据下载和回测中会很常见,因此做记录和说明。
你在使用 Freqtrade 下载数据时遇到的错误提示,表明你请求的起始时间(2023-01-01)早于本地已存在的数据起始时间(2025-06-05)。Freqtrade 为防止意外覆盖或数据冗余,默认不会自动补充缺失的历史数据。以下是具体解决方案:
🔧 问题原因与解决方案
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 请求时间早于本地数据起始时间 | 本地数据从 2025-06-05 开始,无法覆盖 2023-01-01 的数据 | 使用 --prepend 或 --erase 参数调整下载行为 |
⚙️ 1. 使用 --prepend 补充缺失数据
适用场景:仅下载本地缺失的早期数据(2023-01-01 至 2025-06-05),不删除现有数据。
命令示例:
freqtrade download-data --exchange binance --pairs BTC/USDT --timeframe 1d --timerange 20230101- --prepend
--timerange 20230101-:下载从 2023 年 1 月 1 日至今的所有数据。--prepend:在现有数据前追加缺失的历史数据7。
注意事项:
- 数据按时间顺序合并,确保无重复。
- 适合长期维护数据完整性的场景。
⚡ 2. 使用 --erase 重新下载全部数据
适用场景:清空本地旧数据,重新下载完整时间范围(2023-01-01 至今)。
命令示例:
freqtrade download-data --exchange binance --pairs BTC/USDT --timeframe 1d --timerange 20230101- --erase
--erase:删除本地存储的该交易对数据,重新下载7。
适用情况:
- 怀疑现有数据质量问题(如缺失K线、错误价格)。
- 更换数据源或需要全新数据集。
📊 参数对比与选择建议
| 参数 | 行为 | 适用场景 | 耗时 |
|---|---|---|---|
--prepend |
仅补充缺失数据,保留现有数据 | 需增量更新历史数据 | 较短 |
--erase |
删除全部数据后重新下载 | 数据损坏或需全新数据集 | 较长 |
| 无参数 | 仅下载最新数据 | 本地数据已完整覆盖请求时间范围 | 最短 |
💡 操作建议:
- 若现有数据可靠 → 选
--prepend高效追加7。- 若需彻底刷新数据 → 选
--erase确保一致性。
⚠️ 注意事项
-
时间范围格式:
- 起始日期格式必须为
YYYYMMDD(如20230101)。 - 结束日期可省略(
20230101-表示从 2023 年至今)7。
- 起始日期格式必须为
-
数据存储位置:
-
下载的数据默认保存在
user_data/data/<交易所名>目录。 -
Docker 用户需挂载卷确保持久化:
docker run -v $(pwd)/user_data:/freqtrade/user_data ...
-
-
多时间框架支持:
同时下载多个时间框架(如1d和4h):freqtrade download-data --timeframes 1d,4h --pairs BTC/USDT --timerange 20230101- --prepend
💎 总结
- 增量更新 →
--prepend+--timerange <起始日期>- - 全量重载 →
--erase+--timerange <起始日期>- - 验证数据:下载后检查
user_data/data目录的文件日期范围7。
执行后可通过回测试验数据完整性:
freqtrade backtest --strategy MyStrategy --timerange 20230101-20250705