initial vault sync
This commit is contained in:
@ -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)。
|
||||
Reference in New Issue
Block a user