策略解析:StatisticalArbitrageStrategy (统计套利)

源码文件:vnpy_spreadtrading.strategies.statistical_arbitrage_strategy 1. 策略概述 StatisticalArbitrageStrategy 是一个经典的 均值回归 (Mean Reversion) 策略,应用于价差交易。 其核心假设是:两个相关性极高的品种(如豆油/棕榈油,螺纹/热卷),它们的价差会围绕一个均值波动。当价差偏离均值过大(突破布林带上轨/下轨)时,大概率会回归。 基类:SpreadStrategyTemplate 核心指标:Bollinger Bands (布林带) 交易逻辑:逆势交易(高抛低吸) 2. 核心参数 参数名 默认值 含义 boll_window 20 布林带均线周期 boll_dev 2 布林带标准差倍数 max_pos 10 最大持仓量 payup 10 算法执行时的超价跳数 interval 5 算法撤单重发间隔(秒) 3. 策略逻辑详解 3.1 K 线合成与指标计算 策略使用 BarGenerator 合成价差的 K 线(注意:是价差本身的 K 线,不是单腿的)。 在 on_spread_bar 中计算布林带: 1 2 self.boll_mid = self.am.sma(self.boll_window) self.boll_up, self.boll_down = self.am.boll(self.boll_window, self.boll_dev) 3.2 交易信号 策略逻辑非常清晰,分为三种状态: 空仓时 (spread_pos == 0): 做空价差:价差 > 上轨 (boll_up)。预期价差回归下跌。 做多价差:价差 < 下轨 (boll_down)。预期价差回归上涨。 1 2 3 4 if bar.close_price >= self.boll_up: self.start_short_algo(bar.close_price - 10, self.max_pos, ...) elif bar.close_price <= self.boll_down: self.start_long_algo(bar.close_price + 10, self.max_pos, ...) 持有空头 (spread_pos < 0): ...

May 12, 2025 · 1 min

策略解析:BollChannelStrategy (布林带通道突破)

源码文件:vnpy_ctastrategy.strategies.boll_channel_strategy 1. 策略概述 BollChannelStrategy 是一个基于 布林带 (Bollinger Bands) 的通道突破策略。 它不仅仅依赖价格突破布林带上下轨,还引入了 CCI (Commodity Channel Index) 作为趋势过滤器,并使用 ATR (Average True Range) 来计算动态的移动止损位。 基类:CtaTemplate 周期:15分钟 K 线 (通过 BarGenerator 合成) 核心指标:Bollinger Bands, CCI, ATR 风控机制:ATR 倍数移动止损 2. 核心参数与变量 参数名 默认值 含义 boll_window 18 布林带均线周期 boll_dev 3.4 布林带标准差倍数(较宽,意味着只抓大趋势) cci_window 10 CCI 计算周期 atr_window 30 ATR 计算周期 sl_multiplier 5.2 止损距离的 ATR 倍数(非常宽的止损) 3. 策略逻辑详解 3.1 K 线合成 策略在 on_init 中初始化了一个 15 分钟的 K 线生成器: 1 self.bg = BarGenerator(self.on_bar, 15, self.on_15min_bar) 这意味着 on_tick 更新 1 分钟 bar,1 分钟 bar 累积满 15 个后触发 on_15min_bar,核心逻辑都在 on_15min_bar 中执行。 ...

May 4, 2025 · 1 min