initial vault sync

This commit is contained in:
冯先生
2026-06-23 00:24:32 +08:00
commit 8e7723c17a
795 changed files with 157458 additions and 0 deletions

View File

@ -0,0 +1,134 @@
#交易 #量化交易 #策略研究 #freqtrade #DeepSeek
在 Freqtrade 中启动实盘交易时,系统**会自动加载启动时间点前的历史数据**,确保策略的指标计算和信号生成具有连续性。以下是具体机制和配置方法:
---
### ⚙️ 一、Freqtrade 的实盘数据加载机制
1. **启动预热Warm-up机制**
- **核心参数**`startup_candle_count`
该参数定义策略初始化时需加载的历史K线数量确保指标如 RSI、均线能正确计算[6,7](@ref)。
_示例_:若策略需要 100 根K线计算移动平均线则需在配置中设置
```
# strategy.py 中定义
startup_candle_count = 100
```
- **运行逻辑**
- 实盘启动时Freqtrade 会从交易所API拉取最新 `startup_candle_count` 根K线
- 在生成第一个实时信号前,先用这些历史数据计算指标值[6](@ref)。
2. **多时间框架支持**
若策略使用多周期指标(如 5分钟主周期 + 1小时辅助指标需在 `startup_candle_count` 中指定**最大周期需求**
```
# 需覆盖1小时指标的200根K线假设1小时指标周期更长
startup_candle_count = max(100, 200) # 取较大值
```
---
### 🔧 二、实盘配置步骤
1. **修改策略文件**
在自定义策略类中明确定义需预加载的K线数量
```
class MyStrategy(IStrategy):
# 预加载200根K线覆盖策略所需最大周期
startup_candle_count = 200
timeframe = '5m'
# 其他策略逻辑...
```
2. **配置文件调整**
在 `config.json` 中确保数据获取参数正确:
```
{
"exchange": {
"name": "binance",
"pair_whitelist": ["BTC/USDT"]
},
"data": {
"max_open_trades": 3,
"ticker_interval": "5m"
}
}
```
3. **启动实盘命令**
通过以下命令启动实盘,系统会自动加载历史数据:
```
freqtrade trade --strategy MyStrategy --config config.json
```
---
### ⚠️ 三、注意事项与常见问题
1. **交易所数据限制**
- 部分交易所API限制历史数据获取如最多返回500根K线
- 若 `startup_candle_count` 超过限制Freqtrade 会加载最大可用数据并输出警告[3](@ref)。
2. **指标计算一致性**
- 回测与实盘的 `startup_candle_count` 必须一致,否则会导致指标值偏差;
- 可通过日志验证加载数量:
```
INFO - Using startup_candle_count: 200 (策略所需最小周期)
```
3. **极端场景处理**
- **网络中断**​:实盘运行时若断网,重连后会重新拉取缺失时段的数据;
- **数据异常**​:通过 `process_only_new_candles=True` 避免重复处理已计算的K线[7](@ref)。
---
### 💎 四、最佳实践建议
1. **参数计算原则**
`startup_candle_count` 应覆盖策略中**所有指标的最长周期**。例如:
|指标类型|计算周期|所需最小K线数|
|---|---|---|
|EMA快线|周期 12|12 × 3 = 36|
|EMA慢线|周期 50|50 × 3 = 150|
|→ 最终取值:`startup_candle_count = 150`|||
2. **实盘前验证**
通过模拟盘Dry Run测试数据加载完整性
```
freqtrade trade --strategy MyStrategy --config config.json --dry-run
```
3. **动态调整(高级)​**
若策略含自适应指标(如波动率窗口),可通过代码动态设置:
```
def bot_loop_start(self, **kwargs):
# 根据实时波动率调整预加载数量
self.startup_candle_count = max(100, current_volatility_window)
```
---
### 📊 五、不同场景下的数据加载对比
|**场景**|历史数据加载方式|信号连续性保障|
|---|---|---|
|**实盘启动**|自动加载 `startup_candle_count` 根K线|✅ 指标计算完整|
|**回测**|全量加载指定时段数据|✅ 与实盘逻辑一致|
|**模拟盘Dry Run**|同实盘机制|✅ 完全模拟实盘环境|
|**网络中断恢复**|自动补拉缺失数据|✅ 无缝衔接实时行情|
> 通过合理配置 `startup_candle_count`,你的策略在实盘启动瞬间即可生成与回测一致的信号,避免“冷启动”问题[6,7](@ref)。