选股公式中过滤除权股:彻底解决技术形态失真难题
为什么选股公式必须过滤除权股?
在股票技术分析中,除权(XR)和除息(XD)是导致K线图表出现“跳空缺口”的主要原因。当上市公司实施分红送转后,股价会根据除权除息比例进行向下调整。这种调整并非市场供需关系变化所致,而是会计上的价值重估。然而,大多数基于价格、成交量和均线系统的选股公式无法自动识别这种非市场行为,从而产生大量的“假信号”。
例如,一个经典的“突破60日均线”选股策略,如果在除权日前买入,除权日当天股价可能直接跌破均线,触发卖出信号;或者在除权后,股价虽然实际上涨,但由于复权处理不当,看起来像是在突破前期高点,导致投资者误判趋势。因此,在编写和应用选股公式时,过滤除权股是确保策略逻辑严谨性的关键步骤。
本文将从底层逻辑、代码实现、多软件适配及深度分析四个维度,全面解析如何在通达信、同花顺、大智慧等主流软件中实现选股公式中过滤除权股的功能。
⚡ 除权导致的形态失真
未处理除权时,K线出现巨大缺口,均线系统紊乱,MACD等指标出现背离,导致选股公式误判趋势反转。
⚙️ 复权处理的必要性
前复权保持当前价格不变,适合短线交易和选股公式回测;后复权保持历史价格不变,适合长线价值分析。
📊 信号过滤的核心逻辑
通过判断当前K线是否为除权股,或强制使用复权数据,消除非交易因素对技术指标的干扰,提高选股公式的胜率。
主流软件选股公式中过滤除权股代码实现
不同股票软件提供的函数库略有差异,但核心思路一致:要么直接使用复权数据,要么通过函数判断并剔除当日发生除权的股票。以下是针对通达信、同花顺和大智慧的具体代码实现。
通达信 (TDX) - 使用 BACKUP 函数或除权判断
通达信提供了专门的除权判断函数 `DYNAINFO` 和 `BACKUP`。以下是一个示例公式,用于在选股时剔除当日除权的股票:
// 通达信选股公式:过滤当日除权股
// 参数说明:DYNAINFO(4) 为当日开盘价,DYNAINFO(5) 为当日收盘价
// 核心逻辑:判断当日是否为除权日,若是则返回0(不选股),否则返回1
XRCOUNT := COUNT(DYNAINFO(4)=0 AND DYNAINFO(5)=0, 1) = 0; // 简化逻辑示意
// 更精确的方法:使用 BACKUP 函数获取复权数据,或在选股范围中排除
// 方法一:直接剔除当日除权股票
IS_XR_DAY := DYNAINFO(4)=0 OR DYNAINFO(5)=0; // 某些版本中除权日开盘或收盘为0,需根据软件版本调整
// 注意:通达信新版本中,除权日价格不为0,而是大幅变动。因此更推荐使用方法二。
// 方法二:使用复权数据(推荐)
// 在公式管理器中,勾选“前复权”或“后复权”,则所有计算均基于复权价格,自动过滤除权影响。
// 若必须在代码中硬过滤:
XR := REF(C, 1) / REF(C, 1) 1000000; // 此处仅为示意,实际需结合具体除权因子
// 最终选股输出
FILTER_XR := IF(IS_XR_DAY, 0, 1);
RESULT := FILTER_XR AND YOUR_STRATEGY_SIGNAL; // YOUR_STRATEGY_SIGNAL 替换为你的策略信号
RESULT;注意:在通达信中,最简单且有效的方法是在公式设置中勾选“前复权”或“后复权”。如果必须通过代码过滤,可以使用 `DYNAINFO(23)` 获取除权系数,但计算较为复杂。对于大多数用户,建议使用 `BACKUP` 函数或直接在软件界面设置复权。
同花顺 (THS) - 使用 `XG` 和复权设置
同花顺的公式语言与通达信类似,但函数名称略有不同。同花顺同样推荐在公式编辑界面设置复权,但也可以通过函数实现。
// 同花顺选股公式:过滤除权股
// 同花顺中,可以使用 `XG` 函数进行选股
// 判断是否为除权日
IS_XR := DYNAINFO(4)=0; // 部分版本中,除权日开盘价为0,需验证
// 更通用的方法:比较前一日收盘价与当日开盘价的差异比例
PRICE_GAP := (OPEN - REF(CLOSE, 1)) / REF(CLOSE, 1);
// 如果价格缺口超过一定阈值(如5%),则视为除权
FILTER_XR := ABS(PRICE_GAP) < 0.05; // 缺口小于5%,非除权
// 结合策略信号
STRATEGY_SIGNAL := C > MA(C, 60); // 示例:股价站上60日均线
// 输出选股结果
XG: FILTER_XR AND STRATEGY_SIGNAL;在同花顺中,`DYNAINFO(4)` 在除权日开盘时可能为0,这是一个重要的过滤标志。此外,同花顺的“条件选股”功能中,可以直接选择“剔除当日除权”选项,无需编写复杂代码。
大智慧 (DZH) - 使用 `ISLASTBAR` 和复权
大智慧的公式系统较为古老,但同样支持复权计算。以下代码展示了如何在选股时进行基本的除权过滤。
// 大智慧选股公式:过滤除权股
// 大智慧中使用 `BACKUP` 或 `REF` 函数处理历史数据
// 判断除权
XR_FLAG := REF(C, 1) / C > 1.1 OR REF(C, 1) / C < 0.9; // 价格剧烈变动视为除权
// 注意:此方法不够精确,仅作为示意
// 更精确的方法:使用软件内置的除权识别函数(如有)
// 大智慧新版中,建议在公式设置中启用“复权计算”
// 选股逻辑
BUY_SIGNAL := C > MA(C, 20) AND VOL > MA(VOL, 5);
FILTER_XR := NOT XR_FLAG;
// 输出
XG: FILTER_XR AND BUY_SIGNAL;大智慧用户应特别注意软件的版本差异。较新版本的“大智慧决策系统”已内置复权计算功能,用户只需在选股设置中勾选“使用前复权价格”即可,无需额外编写过滤代码。
深度分析:除权过滤对选股策略的影响
为了更直观地展示选股公式中过滤除权股的重要性,我们选取了三个典型的技术指标进行分析:均线系统、MACD指标和布林带。
| 技术指标 | 未过滤除权的影响 | 过滤除权后的效果 | 建议处理方式 |
|---|---|---|---|
| 均线系统 (MA) | 除权日股价跳空,导致短期均线断裂,发出错误的破位或突破信号。 | 均线连续平滑,准确反映趋势变化,减少假信号。 | 使用前复权数据,或在公式中剔除除权日K线。 |
| MACD指标 | 价格突变导致DIF和DEA线出现异常波动,金叉死叉信号失真。 | 指标平滑,金叉死叉信号真实反映动能变化。 | 强制使用复权价格计算MACD。 |
| 布林带 (BOLL) | 股价突破布林带上轨或下轨,可能是除权导致,而非真实突破。 | 布林带宽度正常,突破信号有效。 | 使用前复权价格,并设置波动率过滤。 |
| 成交量 (VOL) | 除权日成交量可能异常放大,干扰量价分析。 | 成交量反映真实交易活跃度。 | 结合换手率和量比指标,过滤异常成交量。 |
时间轴:除权处理的发展演变
早期阶段:手动剔除
投资者手动查看公告,剔除当日除权的股票,效率极低,容易遗漏。
中期阶段:复权设置
股票软件推出前复权、后复权功能,用户只需在界面上勾选,即可自动处理除权。
当前阶段:智能过滤
高级选股公式通过算法自动识别除权日,并结合多维度数据,实现更精准的过滤除权股。
常见问题解答 (FAQ)
以下是关于选股公式中过滤除权股的常见问题及深度解答。
A1: 这是因为您的选股公式未处理除权数据。除权日股价大幅变动,导致技术指标(如均线、MACD)出现异常。解决方法是在公式设置中勾选“前复权”或“后复权”,或在代码中增加除权过滤逻辑。
A2: 有影响。前复权更贴近当前市场价格,适合短线交易和选股公式回测;后复权保留了历史完整涨幅,适合长线分析。选择哪种复权方式取决于您的投资策略。
A3: 可以通过查看股票公告或财经网站获取除权信息。在技术指标上,除权日通常表现为股价大幅跳空,成交量异常放大。在选股公式中,可以通过判断价格变动比例或使用软件内置的除权函数来识别。
A4: 通达信没有直接的“过滤除权”函数,但可以通过 `DYNAINFO` 函数判断除权状态,或更简单地,在公式设置中勾选“前复权”或“后复权”,即可自动处理除权数据。
A5: 非常重要。在量化交易中,除权导致的假信号会严重影响策略的胜率和收益率。选股公式中过滤除权股是量化策略开发的基本步骤,确保策略逻辑的严谨性和回测结果的真实性。