判断市场风向指标组合策略

核心指标组合 1. ATR(平均真实波幅) 定义:衡量市场波动性的指标,计算一定周期内的平均真实波幅。 计算方法:TR(True Range)是以下三者的最大值: 当日最高价 - 当日最低价 |当日最高价 - 昨日收盘价| |当日最低价 - 昨日收盘价| ATR对TR取指数移动平均(EMA)。 作用:衡量市场波动率,ATR值越大说明趋势越强,ATR值小且稳定说明处于震荡 用法:当ATR持续处于低位(如低于近期均值的30%),可判断为震荡市;当ATR快速放大,可能趋势启动 2. 布林带(Bollinger Bands) 作用:识别价格运行区间和突破信号 震荡市特征:价格在布林带上下轨之间来回震荡,布林带收窄 趋势市特征:价格沿布林带上轨或下轨运行,布林带开口扩张 用法: 震荡市:在布林带上轨卖出,下轨买入 趋势市:价格突破布林带后顺势跟进 布林带收窄+价格突破:趋势启动信号 布林带开口+价格沿上轨/下轨运行:趋势延续 布林带收窄+价格在通道内震荡:高抛低吸 3. ADX(平均方向指数) 定义:衡量趋势强度的指标,数值范围0-100; 不判断方向,指衡量强弱。 作用:量化趋势强度 用法: ADX < 20:市场处于震荡或无趋势状态,适合高抛低吸策略 ADX > 25:趋势确立,市场进入单边行情 ADX > 40:强势趋势,可能接近趋势尾声 ADX > 50:极端趋势,需警惕反转风险 4. RSI(相对强弱指标) 定义:通过比较一定周期内上涨幅度和下跌幅度的相对强度来反映市场超买超卖状态,反应多空的动能。 计算方法: $$ RSI = 100 - \frac{100}{1 + RS} $$ 其中,$RS$ 是平均上涨点数与平均下跌点数的比值。 作用:识别超买超卖区域 震荡市用法:在RSI 30-70区间内高抛低吸;突破70或跌破30可能预示趋势转换 实战组合策略 震荡市识别条件: ATR处于近期低位 ADX<20 布林带收窄,价格在上下轨间震荡 RSI在30-70区间运行 趋势市识别条件: ...

November 20, 2025 · 1 min · lexxu

策略解析:MultiTimeframeStrategy (多周期共振)

源码文件:vnpy_ctastrategy.strategies.multi_timeframe_strategy 1. 策略概述 MultiTimeframeStrategy 展示了如何在 CTA 策略中同时处理两个不同频率的时间序列。 通常策略只关注单一 K 线周期(如 15 分钟),但本策略同时订阅并合成: 15 分钟 K 线:用于判断大趋势(Trend)。 5 分钟 K 线:用于寻找具体的入场点(Timing)。 这种“大周期定方向,小周期找买点”的方法是手工交易中非常经典的多周期共振思路。 基类:CtaTemplate 核心机制:双 BarGenerator (5m + 15m) 核心指标:MA (趋势), RSI (择时) 2. 核心参数 参数名 默认值 含义 rsi_window 14 RSI 计算周期 (基于 5 分钟) rsi_signal 20 RSI 阈值偏移 (50 ± 20) fast_window 5 快线周期 (基于 15 分钟) slow_window 20 慢线周期 (基于 15 分钟) 3. 策略逻辑详解 3.1 双周期 K 线合成 策略在 on_init 中初始化了两个 K 线生成器: ...

May 8, 2025 · 2 min

策略解析:AtrRsiStrategy (ATR波动率结合RSI)

源码文件:vnpy_ctastrategy.strategies.atr_rsi_strategy 1. 策略概述 AtrRsiStrategy 是一个结合了 波动率 (ATR) 和 动量 (RSI) 的趋势突破策略。 它的核心思想是:只有在市场波动率足够大(ATR 处于高位)时,才去交易 RSI 的突破信号。这是一种典型的“过滤器”思想,旨在减少 RSI 在低波动震荡市中的假突破磨损。 基类:CtaTemplate 核心指标:ATR (Average True Range), RSI (Relative Strength Index) 风控机制:百分比移动止损 (Trailing Stop) 2. 核心参数与变量 参数名 默认值 含义 atr_length 22 计算 ATR 的窗口周期 atr_ma_length 10 计算 ATR 均线的窗口周期 rsi_length 5 计算 RSI 的窗口周期(非常灵敏) rsi_entry 16 RSI 入场阈值偏移量 (50 ± 16) trailing_percent 0.8 移动止损百分比 (0.8%) 3. 策略逻辑详解 3.1 过滤器:ATR 波动率判断 策略首先计算 ATR 值及其移动平均线 (MA)。 1 2 3 atr_array = am.atr(self.atr_length, array=True) self.atr_value = atr_array[-1] self.atr_ma = atr_array[-self.atr_ma_length:].mean() 入场前提:self.atr_value > self.atr_ma ...

May 3, 2025 · 2 min

策略解析: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