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

6.2 KiB
Raw Permalink Blame History

#交易 #量化交易 #策略研究 #freqtrade #DeepSeek

以下是为你在Freqtrade中复现经典策略整理的学习路径与策略清单涵盖趋势跟踪、均值回归、套利等主流策略类型。每个策略均提供核心逻辑、实现要点及Freqtrade模块应用建议助你系统性提升策略编码能力。


📈 一、趋势跟踪类策略(适用单边行情)​

  1. 双均线交叉策略 (MA Crossover)

    • 核心逻辑
      • 当短期均线如5周期上穿长期均线如20周期时买入下穿时卖出2,7
      • 经典趋势跟随,捕捉中期趋势启动点。
    • Freqtrade实现要点
      • populate_indicators():计算fast_mae.g., ta.SMA(dataframe, timeperiod=5))和slow_mae.g., ta.SMA(dataframe, timeperiod=20)2
      • populate_entry_trend():触发条件 dataframe['fast_ma'] > dataframe['slow_ma'] 且前一根K线为 fast_ma <= slow_ma(避免信号闪烁)。
      • 优化方向测试不同周期组合如10/30添加成交量过滤e.g., dataframe['volume'] > 01
  2. 通道突破策略 (Channel Breakout)

    • 核心逻辑
      • 价格突破N日最高点时买入跌破N日最低点时卖出典型参数N=207
    • 实现要点
      • 计算 dataframe['high_n'] = dataframe['high'].rolling(window=20).max(),类似计算最低点。
      • 入场:(dataframe['close'] > dataframe['high_n'].shift(1))(突破前一日高点)。
      • 关键风控结合ATR动态止损e.g., stoploss = -2 * dataframe['atr']6

🔄 二、均值回归类策略(适用震荡行情)​

  1. RSI超买超卖策略

    • 经典逻辑
      • RSI < 30时买入超卖反弹RSI > 70时卖出超买回调1,3
    • Freqtrade实现
      • populate_indicators():添加 dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14)
      • 入场:(dataframe['rsi'] < 30) & (dataframe['volume'] > 0)1
      • 进阶改进增加二次确认如价格站上5日均线或RSI背离检测。
  2. 布林带收口策略 (Bollinger Bands Reversion)

    • 核心逻辑
      • 价格触及布林带下轨且收口(带宽缩小)时买入,触及上轨时卖出6
    • 实现要点
      • 计算布林带:ta.BBANDS(dataframe, timeperiod=20) 生成上轨、中轨、下轨。
      • 入场条件:(dataframe['close'] < dataframe['lower_band']) & (dataframe['bandwidth'] < threshold)(带宽=上轨-下轨)。

⚖️ 三、套利与市场中性策略

  1. 配对交易策略 (Pairs Trading)

    • 核心逻辑
      • 选择强相关交易对如ETH/BTC当价差Spread偏离均值时做多弱势方、做空强势方价差回归时平仓6,7
    • Freqtrade实现
      • 需自定义价差计算:spread = dataframe['pair1_close'] - beta * dataframe['pair2_close']
      • 入场:z_score = (spread - spread.mean()) / spread.std(),当 z_score > 2 时做空价差卖pair1/买pair2
      • 关键点​:需在配置中启用多交易对并动态管理仓位6
  2. 三角套利策略 (Triangular Arbitrage)

    • 核心逻辑
      • 利用三种货币间汇率短暂失衡(如 BTC→ETH→USDT→BTC路径的最终BTC数量 > 初始值)进行瞬时套利3
    • 实现挑战
      • 需高频数据秒级和极低延迟下单Freqtrade需结合WebSocket实时行情。
      • 核心代码需在 populate_entry_trend 中监控价差并调用交易所API快速执行3

🧩 四、多因子组合策略

  1. 动量+波动率过滤策略

    • 逻辑融合

      • 动量方向N日涨幅 > 阈值e.g., dataframe['close'].pct_change(10) > 0.05)。
      • 波动过滤ATR低于均值低波动环境入场6,7
    • 实现示例

      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
    • 实现要点
      • 计算MACDmacd = ta.MACD(dataframe),关注 macd['macd'] - macd['signal'](柱状图)。
      • 入场:(dataframe['rsi'] < 30) & (dataframe['macd_hist'] > 0) & (dataframe['macd_hist'].shift(1) <= 0)

⚙️ 五、策略复现实操建议

  1. 分步骤实现
    • 先完成单一指标策略如纯RSI再逐步叠加过滤条件成交量、波动率1,3
  2. 回测验证要点
    • 使用 freqtrade backtest 命令时,指定 --timerange 测试不同市场环境(如熊市/牛市)2
    • 分析 max_drawdown(最大回撤)和 profit_factor(盈利因子),避免过拟合2,5
  3. 可视化调试
    • 用 freqtrade plot-dataframe 绘制买卖点与指标曲线,验证逻辑是否符合预期1,3

📚 学习资源与下一步

  • 官方示例库​:参考 Freqtrade 策略示例 中的代码结构。
  • 经典策略拓展
    • 海龟交易法则ATR通道突破 + 动态仓位)
    • 肯特纳通道策略(均线+ATR通道
    • MACD柱状图能量策略结合成交量放大信号

实践时建议从单均线策略开始,逐步过渡到RSI+均线组合,最后挑战配对交易。每完成一个策略,尝试用不同参数测试其稳健性,并输出回测报告分析优缺点2,6