策略解析:MultiSignalStrategy (多信号组合)

源码文件:vnpy_ctastrategy.strategies.multi_signal_strategy 1. 策略概述 MultiSignalStrategy 是一个典型的“投票型”策略。它不依赖单一指标,而是同时计算 RSI、CCI 和 MA 三个指标的信号,将它们的建议仓位叠加,最终得出目标仓位。 基类:TargetPosTemplate (目标仓位模板) 适用场景:趋势跟踪与震荡过滤结合 核心逻辑:Target Pos = Signal_RSI + Signal_CCI + Signal_MA 2. 指标逻辑拆解 策略内部定义了三个子信号类(Signal),分别处理不同逻辑: 2.1 RSI 信号 (相对强弱指标) 逻辑: RSI > 阈值(如 70):超买区,可能看多或看空(视策略定义,通常趋势策略会认为突破向上)。 RSI < 阈值(如 30):超卖区。 代码片段: 1 self.signal_pos["rsi"] = self.rsi_signal.get_signal_pos() 2.2 CCI 信号 (顺势指标) 逻辑:CCI 用于捕捉趋势爆发。 代码片段: 1 self.signal_pos["cci"] = self.cci_signal.get_signal_pos() 2.3 MA 信号 (移动平均线) 逻辑:通常使用双均线(快线/慢线)交叉判断趋势。 快线 > 慢线:金叉,看多。 快线 < 慢线:死叉,看空。 3. 核心执行逻辑:calculate_target_pos 这是该策略最精彩的部分。它没有复杂的 if-else 嵌套,而是简单的算术叠加。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 def calculate_target_pos(self) -> None: """""" # 1. 获取各个子信号的建议仓位 self.signal_pos["rsi"] = self.rsi_signal.get_signal_pos() self.signal_pos["cci"] = self.cci_signal.get_signal_pos() self.signal_pos["ma"] = self.ma_signal.get_signal_pos() # 2. 累加计算总目标仓位 target_pos = 0 for v in self.signal_pos.values(): target_pos += v # 3. 调用模板接口执行 self.set_target_pos(target_pos) 逻辑图解 假设我们设置每个信号满仓为 1 手: ...

May 2, 2025 · 1 min