52 周新高叠加成交量,筛选器能帮我少看哪些股票?
追着 52 周新高买进去,最怕的当然是突破之后又跌回来。但把成交量或 RVOL 叠上去,并不能替你预测哪只股票会让人被套。它们能帮忙解决的,是下单之前更早的一道问题:名单里有人接近一年高点却成交清淡,也有人突然放量但离高点还远。如果只够时间研究其中一小部分,该先看谁?
我觉得先用价格位置和成交量过滤,再参考相对成交量(RVOL)检查活跃度,最大的用处不是回答“谁会涨”,而是缩小要花时间查图、看公告、核对流动性的范围。我这次实际在筛选栏里叠加的是 52W High 和 Volume;RVOL 则在 Overview 的 Relative Volume 列里供下一轮观察,并没有作为这次已应用的数值过滤条件。初筛不是交易信号,它是在分配研究时间。
两道条件,排除的是不同麻烦
52 周高点给价格一个历史参照。靠近高点,说明当前价格处于过去一年相对靠上的区间,至少值得从趋势或动量的角度多看一眼。但它既不能证明突破有效,也不能保证后面还有上涨空间。
同一个“接近高点”,在工具里还可能是不同的计算规则。Finviz 的筛选器帮助把周期高点定义为区间内最高价,并提供与高点的百分比距离过滤。“距高点 5%”至少是一个可以清楚计算的研究条件。它对应前面的虚构演示,不等于任何产品筛选器在界面上输入 10 时的含义。
成交量补的是另一面。一只接近高点的股票,如果交易稀疏,后续研究就得特别花时间确认买卖价差、订单深度以及实际成交承载能力。即使走势看着不错,也不代表你的单子能按预想的价格成交。
这里说的“研究成本”并非凭空造一个新因子。我把它理解为:名单里每多一只成交清淡的股票,就多一份必须确认是否真能买进、卖出的工作。Investor.gov 对流动性的解释强调的也是能否在不明显冲击价格的情况下成交。高成交量可能让研究容易一些,却不能独自证明盘口有足够深度。
反过来,只按成交量找股票同样有问题:放量下跌也可能很热闹。我的初筛顺序因此很简单——先用价格位置寻找相对强势候选,再用成交活跃度做一次粗筛。它们求的是交集,不是把两个指标相加后得到“高胜率”。
六只虚构股票:为什么最后只剩两只
先不用真实行情。我设了六只不存在的股票,分别给它们安排现价、52 周高点和当日成交量。代码只做两件事:先留下现价达到一年高点至少 95% 的股票,再留下成交量不少于 100 万股的。95% 和 100 万股是我为虚构样本设定的门槛,并不代表真实筛选器的字段单位。
// 全部数据均为虚构,成交量单位也仅用于本例。
const stocks = [
["S1", 96, 100, 600000],
["S2", 49, 50, 1800000],
["S3", 190, 200, 900000],
["S4", 9.8, 10, 2400000],
["S5", 80, 100, 1600000],
["S6", 60, 100, 2200000],
];
// 每行:[代号、假设现价、假设52周高点、假设当日成交量]
const nearHigh = stocks.filter(([, price, high]) => price / high >= 0.95);
const candidates = nearHigh.filter(([, , , volume]) => volume >= 1000000);
console.log(stocks.length, nearHigh.length, candidates.length); // 6 4 2
console.log(candidates.map(([id]) => id)); // ["S2", "S4"]
即使不读代码,结果也能看懂:
| 筛选阶段 | 留下的虚构股票 | 排除对象 |
|---|---|---|
| 原始名单:6 只 | S1、S2、S3、S4、S5、S6 | — |
| 接近 52 周高点:4 只 | S1、S2、S3、S4 | S5、S6 距离高点较远 |
| 再加成交量门槛:2 只 | S2、S4 | S1、S3 成交量不足 |
这里最值得多看一眼的是 S3。它的价格刚好达到所设的 95% 门槛,成交量却只有 90 万股,比第二道门槛少了 10 万。程序会毫不犹豫地把它筛掉,但这并不等于 S3 没有研究价值,更不能说明它一定比留下的股票差。
这正是“粗筛”的代价:你换来了更短的名单,也可能错过边界样本。如果研究时间特别紧,我会接受这样的遗漏;如果今天要研究的是低流通盘中的量价异动,S3 反而应该进一份“阈值边缘待复核”名单,而不是被当成差股票。阈值是在替人分配时间,不是在替市场判分。
真实市场里,100 万股还可能因为股价、流通盘和交易单位不同而有完全不同的意义。举个只用于说明量纲的例子:同样成交 100 万股,股价 10 元对应约 1,000 万元成交额,股价 100 元则约 1 亿元;但无论哪一个数字都不能代替盘口深度。要判断是否方便交易,成交额、换手率乃至买卖价差通常比统一的成交股数更有帮助。
把这两道筛选真正放进工具里
这些纸面上的判断,需要放到真实筛选器里核对。我参与维护的 NuvexLens 筛选器 正好能用来走完这一步。它在这篇文章里真正帮上忙的,不是什么神奇的买入信号,而是把价格位置和成交活跃度条件留在同一个筛选过程里:加第二条时,第一条标签仍然保留,候选汇总也继续收窄。至少不用把两份名单导出来再手工做交集。
在一次 US 市场 Overview 界面核对中,我能同时看到 Volume 和 Relative Volume 两列,顶部还有 52W High 筛选入口。但字段可见不等于已经应用了某个 RVOL 数值阈值,界面中的实时报价也不属于本文要展示的数据。
同时查看 Volume 和 Relative Volume,能帮助我区分“成交多少股”和“相对它自己平时是否活跃”。前者适合先做一道粗筛,后者提醒我不要把不同价位、不同交易习惯的股票只按股数比较。看到 RVOL 列并不等于这次已经设置或验证了某个 RVOL 阈值。
实际的双条件观察来自另一次 CN 市场界面操作:我先通过 Add New Filter 添加 52W High > 10,接着加入 Volume > 1000000。两项条件标签同时出现在筛选栏,候选汇总也继续收窄。这里能确认的是界面层面两项条件同时存在,以及候选汇总的变化;我没有把这一过程包装成历史回测,也没有证据证明后台用了某种特别的筛选引擎。CN 市场双条件操作与前面的 US Overview 列信息核对不是同一轮观察,更不能合并为同一份行情快照。
不过,候选数量缩小还不够。我复核多条件筛选时,会顺手看三个地方:
-
原来的价格条件是否还留在筛选栏里?
-
第二个成交量条件是否真的通过筛选入口加入,而不是替换了第一个?
-
看到的是过滤后的候选池,还是只对结果列做了升降序排序?
有一次复查我确实点进了 Volume 列的排序菜单,而不是数值筛选入口。后来从 Add New Filter 重新操作才看到两个条件并存。这个小失误不是什么产品缺陷,但很适合作为提醒:排序改变的是显示顺序,不是筛选集合。如果两个观察时点的行情或市场范围已经变化,也不能仅凭“数量变少”就断定新结果必然是旧名单的严格子集。
我会特别区分两个看起来相近的数值:虚构代码采用的是“距 52 周高点不超过 5%”,界面实际输入的则是 52W High > 10。前者是我自设的演示规则,后者是一次真实 UI 操作记录;缺少同口径的字段定义时,不能把 10 擅自解释成“距新高 10%”。
名单变短之后,还需要做什么
假如 S2 和 S4 是真实股票,我仍不会因为通过了两层筛选就下单。我会先问:今天的成交量跟它自己平常的水平比起来,究竟算不算活跃?绝对成交股数只能粗筛;相对成交量(RVOL)或同口径历史均量,更适合回答这个问题。
RVOL 的直观意思,是拿当前成交量和可比的历史平均量作比值。TradingView 官方说明中的一种算法使用此前 10 个周期均量,盘中同一时刻比较又有不同处理。这个 Overview 界面也提供 Relative Volume 这一列,这让两道条件筛出的候选股可以就地继续观察相对活跃度;但不同工具的 RVOL 口径未必相同,所以我不会把 TradingView 的 10 周期公式直接当成这个筛选器的后台实现,更不会把“RVOL > 1.5”说成本次已经完成的实测过滤。
随后再看价格结构:是靠近旧高、刚突破,还是突破之后已经冲高回落?附近是否有明显压力区?实际交易还得考虑成交额、盘口深度、止损位置和仓位。两只通过同一组条件的股票,可能需要完全不同的后续研究。
这次六只股票的 6 → 4 → 2 是可复制的虚构演示,不是实盘回测;真实界面核对也只说明观察到了两项筛选标签和候选汇总变化,不能据此声称策略提高了收益。
我最后想留下的不是一个固定的“百万股门槛”,而是一个做研究时省力的顺序:先按价格位置缩一轮,再按交易活跃度缩一轮,把时间留给那些真正需要人工判断的地方。这也是我使用筛选工具时一直提醒自己的一点:少翻几百张图也许很有用,但筛选器不会替你承担最后的买卖决定。本文不构成投资建议。