Files
obsidian-vault/05 投资交易/freqtrade来复现经典策略,巩固前一个阶段的学习。.md
2026-06-23 00:24:32 +08:00

114 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#交易 #量化交易 #策略研究 #freqtrade #DeepSeek
以下是为你在Freqtrade中复现经典策略整理的学习路径与策略清单涵盖趋势跟踪、均值回归、套利等主流策略类型。每个策略均提供核心逻辑、实现要点及Freqtrade模块应用建议助你系统性提升策略编码能力。
---
### 📈 **一、趋势跟踪类策略(适用单边行情)​**
1. **双均线交叉策略 (MA Crossover)**
- **核心逻辑**
- 当短期均线如5周期上穿长期均线如20周期时买入下穿时卖出[2,7](@ref)。
- 经典趋势跟随,捕捉中期趋势启动点。
- **Freqtrade实现要点**
- `populate_indicators()`:计算`fast_ma`e.g., `ta.SMA(dataframe, timeperiod=5)`)和`slow_ma`e.g., `ta.SMA(dataframe, timeperiod=20)`[2](@ref)。
- `populate_entry_trend()`:触发条件 `dataframe['fast_ma'] > dataframe['slow_ma']` 且前一根K线为 `fast_ma <= slow_ma`(避免信号闪烁)。
- **优化方向**测试不同周期组合如10/30添加成交量过滤e.g., `dataframe['volume'] > 0`[1](@ref)。
2. **通道突破策略 (Channel Breakout)**
- **核心逻辑**
- 价格突破N日最高点时买入跌破N日最低点时卖出典型参数N=20[7](@ref)。
- **实现要点**
- 计算 `dataframe['high_n'] = dataframe['high'].rolling(window=20).max()`,类似计算最低点。
- 入场:`(dataframe['close'] > dataframe['high_n'].shift(1))`(突破前一日高点)。
- **关键风控**结合ATR动态止损e.g., `stoploss = -2 * dataframe['atr']`[6](@ref)。
---
### 🔄 **二、均值回归类策略(适用震荡行情)​**
1. **RSI超买超卖策略**
- **经典逻辑**
- RSI < 30时买入超卖反弹RSI > 70时卖出超买回调[1,3](@ref)。
- **Freqtrade实现**
- `populate_indicators()`:添加 `dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14)`
- 入场:`(dataframe['rsi'] < 30) & (dataframe['volume'] > 0)`[1](@ref)。
- **进阶改进**增加二次确认如价格站上5日均线或RSI背离检测。
2. **布林带收口策略 (Bollinger Bands Reversion)**
- **核心逻辑**
- 价格触及布林带下轨且收口(带宽缩小)时买入,触及上轨时卖出[6](@ref)。
- **实现要点**
- 计算布林带:`ta.BBANDS(dataframe, timeperiod=20)` 生成上轨、中轨、下轨。
- 入场条件:`(dataframe['close'] < dataframe['lower_band']) & (dataframe['bandwidth'] < threshold)`(带宽=上轨-下轨)。
---
### ⚖️ **三、套利与市场中性策略**
1. **配对交易策略 (Pairs Trading)**
- **核心逻辑**
- 选择强相关交易对如ETH/BTC当价差Spread偏离均值时做多弱势方、做空强势方价差回归时平仓[6,7](@ref)。
- **Freqtrade实现**
- 需自定义价差计算:`spread = dataframe['pair1_close'] - beta * dataframe['pair2_close']`
- 入场:`z_score = (spread - spread.mean()) / spread.std()`,当 `z_score > 2` 时做空价差卖pair1/买pair2
- **关键点**​:需在配置中启用多交易对并动态管理仓位[6](@ref)。
2. **三角套利策略 (Triangular Arbitrage)**
- **核心逻辑**
- 利用三种货币间汇率短暂失衡(如 BTC→ETH→USDT→BTC路径的最终BTC数量 > 初始值)进行瞬时套利[3](@ref)。
- **实现挑战**
- 需高频数据秒级和极低延迟下单Freqtrade需结合WebSocket实时行情。
- 核心代码需在 `populate_entry_trend` 中监控价差并调用交易所API快速执行[3](@ref)。
---
### 🧩 **四、多因子组合策略**
1. **动量+波动率过滤策略**
- **逻辑融合**
- 动量方向N日涨幅 > 阈值e.g., `dataframe['close'].pct_change(10) > 0.05`)。
- 波动过滤ATR低于均值低波动环境入场[6,7](@ref)。
- **实现示例**
```
dataframe['momentum'] = dataframe['close'].pct_change(10)
dataframe['atr_ratio'] = dataframe['atr'] / dataframe['atr'].rolling(50).mean()
entry_signal = (dataframe['momentum'] > 0.05) & (dataframe['atr_ratio'] < 0.8)
```
2. **RSI+MACD双指标策略**
- **组合逻辑**
- RSI < 30超卖且MACD柱状图由负转正动量反转时买入[1,3](@ref)。
- **实现要点**
- 计算MACD`macd = ta.MACD(dataframe)`,关注 `macd['macd'] - macd['signal']`(柱状图)。
- 入场:`(dataframe['rsi'] < 30) & (dataframe['macd_hist'] > 0) & (dataframe['macd_hist'].shift(1) <= 0)`。
---
### ⚙️ **五、策略复现实操建议**
1. **分步骤实现**
- 先完成单一指标策略如纯RSI再逐步叠加过滤条件成交量、波动率[1,3](@ref)。
2. **回测验证要点**
- 使用 `freqtrade backtest` 命令时,指定 `--timerange` 测试不同市场环境(如熊市/牛市)[2](@ref)。
- 分析 `max_drawdown`(最大回撤)和 `profit_factor`(盈利因子),避免过拟合[2,5](@ref)。
3. **可视化调试**
- 用 `freqtrade plot-dataframe` 绘制买卖点与指标曲线,验证逻辑是否符合预期[1,3](@ref)。
---
### 📚 学习资源与下一步
- **官方示例库**​:参考 [Freqtrade 策略示例](https://github.com/freqtrade/freqtrade-strategies) 中的代码结构。
- **经典策略拓展**
- 海龟交易法则ATR通道突破 + 动态仓位)
- 肯特纳通道策略(均线+ATR通道
- MACD柱状图能量策略结合成交量放大信号
> 实践时建议从**单均线策略**开始,逐步过渡到**RSI+均线组合**,最后挑战**配对交易**。每完成一个策略,尝试用不同参数测试其稳健性,并输出回测报告分析优缺点[2,6](@ref)。