114 lines
6.2 KiB
Markdown
114 lines
6.2 KiB
Markdown
#交易 #量化交易 #策略研究 #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)。 |