121 lines
4.2 KiB
Markdown
121 lines
4.2 KiB
Markdown
#freqtrade #软件配置
|
||
|
||
在已有本地数据时,如果想要下载更早的数据,直接使用下载命令是不行的
|
||
会导致程序有如下的报错:
|
||
|
||
```bash
|
||
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.
|
||
|
||
```bash
|
||
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](@ref)。
|
||
|
||
**注意事项**:
|
||
|
||
- 数据按时间顺序合并,确保无重复。
|
||
- 适合长期维护数据完整性的场景。
|
||
|
||
---
|
||
|
||
### ⚡ **2. 使用 `--erase` 重新下载全部数据**
|
||
|
||
**适用场景**:清空本地旧数据,重新下载完整时间范围(2023-01-01 至今)。
|
||
**命令示例**:
|
||
|
||
```
|
||
freqtrade download-data --exchange binance --pairs BTC/USDT --timeframe 1d --timerange 20230101- --erase
|
||
```
|
||
|
||
- `--erase`:删除本地存储的该交易对数据,重新下载[7](@ref)。
|
||
|
||
**适用情况**:
|
||
|
||
- 怀疑现有数据质量问题(如缺失K线、错误价格)。
|
||
- 更换数据源或需要全新数据集。
|
||
|
||
---
|
||
|
||
### 📊 **参数对比与选择建议**
|
||
|
||
|**参数**|**行为**|**适用场景**|**耗时**|
|
||
|---|---|---|---|
|
||
|`--prepend`|仅补充缺失数据,保留现有数据|需增量更新历史数据|较短|
|
||
|`--erase`|删除全部数据后重新下载|数据损坏或需全新数据集|较长|
|
||
|无参数|仅下载最新数据|本地数据已完整覆盖请求时间范围|最短|
|
||
|
||
> 💡 **操作建议**:
|
||
>
|
||
> - 若现有数据可靠 → 选 `--prepend` 高效追加[7](@ref)。
|
||
> - 若需彻底刷新数据 → 选 `--erase` 确保一致性。
|
||
|
||
---
|
||
|
||
### ⚠️ **注意事项**
|
||
|
||
1. **时间范围格式**:
|
||
|
||
- 起始日期格式必须为 `YYYYMMDD`(如 `20230101`)。
|
||
- 结束日期可省略(`20230101-` 表示从 2023 年至今)[7](@ref)。
|
||
2. **数据存储位置**:
|
||
|
||
- 下载的数据默认保存在 `user_data/data/<交易所名>` 目录。
|
||
- Docker 用户需挂载卷确保持久化:
|
||
|
||
```
|
||
docker run -v $(pwd)/user_data:/freqtrade/user_data ...
|
||
```
|
||
|
||
3. **多时间框架支持**:
|
||
同时下载多个时间框架(如 `1d` 和 `4h`):
|
||
|
||
```
|
||
freqtrade download-data --timeframes 1d,4h --pairs BTC/USDT --timerange 20230101- --prepend
|
||
```
|
||
|
||
|
||
---
|
||
|
||
### 💎 **总结**
|
||
|
||
- **增量更新** → `--prepend` + `--timerange <起始日期>-`
|
||
- **全量重载** → `--erase` + `--timerange <起始日期>-`
|
||
- **验证数据**:下载后检查 `user_data/data` 目录的文件日期范围[7](@ref)。
|
||
|
||
> 执行后可通过回测试验数据完整性:
|
||
>
|
||
> ```
|
||
> freqtrade backtest --strategy MyStrategy --timerange 20230101-20250705
|
||
> ``` |