一招横盘突破选股法,赚钱不靠运气靠图形,靠概率!

一招横盘突破选股法,赚钱不靠运气靠图形,靠概率!

你有没有遇到过这种情况:一只票在那横着躺了半个多月,不涨也不跌,跟冬眠了一样,然后某天突然一个大阳线冲天而起,配合着放量,一口气就突破了之前的震荡区间------你心里一激灵,觉得这是不是要起飞了?🎯

那么问题来了,这种"横盘突破"到底靠不靠谱?什么情况下是"假突破"骗炮,什么情况下是真牛启动前的预兆?有没有可能用量化的方式,把这种图形筛出来、统计清楚、搞明白背后的胜率?

今天,我就带大家从0开始,深扒这个策略------不是讲道理,我直接撸代码,给你展示这类形态的历史统计和可实操性。聪明的你一定会发现:哎,这玩意还真有点意思😂


什么叫"横盘突破"?

说白了,就是股价在一个狭窄的区间内横着晃来晃去,一般持续时间在20个交易日左右,区间振幅很小------5%以内,基本上是肉眼可见的震荡。然后突然某天来了一根放量阳线,一下子突破了这个"牢笼"。

我们人眼看图都能感觉这是在蓄力,问题是------我们怎么用代码把这种图形抓出来?


策略原理先交代清楚:

  • 横盘定义:近20个交易日,最高价和最低价之间的振幅不超过5%

  • 突破定义:当前K线是阳线(收盘价 > 开盘价),同时成交量放大到20日均量的1.5倍以上,且收盘价突破这20日的最高价

  • 进场时机:突破当日收盘买入

  • 统计维度

    • 买入后未来20天收益为正的概率
    • 买入后未来20天收益大于5%的概率
    • 买入后未来20天最大收益为正的概率
    • 买入后未来20天最大收益大于5%的概率

是不是挺直接的?但问题又来了------怎么用代码识别出这种"20天内横住、今天突破"的结构?咱们一步步来。


横盘识别代码怎么写?

很多人喜欢用布林带、标准差什么的去定义震荡区间。但说真的,我本人对这些"噪音指标"体感很糟🤦‍♀️,太玄了也容易误判。干脆点,直接撸价格范围,最简单也最实用。

来,贴段代码,思路你看明白就好:

python 复制代码
import pandas as pd
import numpy as np

def detect_sideways_breakout(df):
    """
    输入是一个DataFrame,包含open, high, low, close, volume列
    输出是一个Series,标记是否为突破日
    """
    high_20 = df['high'].rolling(20).max()
    low_20 = df['low'].rolling(20).min()
    range_20 = high_20 - low_20
    range_pct = range_20 / low_20

    ma_vol_20 = df['volume'].rolling(20).mean()
    is_narrow = range_pct <= 0.05
    is_breakout = (df['close'] > df['open']) & \
                  (df['close'] > high_20.shift(1)) & \
                  (df['volume'] > 1.5 * ma_vol_20)

    signal = is_narrow.shift(1) & is_breakout
    return signal

这个函数干了三件事:

  1. 判断20日区间是否振幅小于5%
  2. 判断今天是不是阳线、放量
  3. 判断今天是否突破了过去20日最高点

最后我们只保留"昨天横盘、今天突破"的信号。是不是挺明白的?


接下来,重点来了:回测和统计!

有了信号,我们要去看这些信号之后------未来20个交易日到底涨不涨?这一步最考验基本功,我这里不写成完整回测框架(不然篇幅太长),但你至少得理解核心统计思路。

咱先写个函数,取出所有突破点后面20天的收益:

python 复制代码
def calculate_future_returns(df, signal, days=20):
    """
    计算每个信号后N日的收益
    """
    future_returns = []
    signal_dates = df[signal].index

    for date in signal_dates:
        try:
            entry_price = df.loc[date, 'close']
            future_data = df.loc[date:].iloc[1:days+1]  # 排除买入当天
            max_return = (future_data['close'] - entry_price) / entry_price
            final_return = (future_data.iloc[-1]['close'] - entry_price) / entry_price
            future_returns.append({
                'date': date,
                'final_return': final_return,
                'max_return': max_return.max()
            })
        except:
            continue

    return pd.DataFrame(future_returns)

然后我们可以来统计两个核心指标:

  • 有多少次最终是正收益的(final_return > 0
  • 有多少次收益超过5%(final_return > 0.05

统计起来非常直接:

python 复制代码
results = calculate_future_returns(df, signal)
positive_rate = (results['final_return'] > 0).mean()
above_5pct_rate = (results['final_return'] > 0.05).mean()

看懂了吗?聪明的你一定已经发现------这个方法不但能用在单只票,还能批量跑A股历史全市场的图形来分析


真枪实弹:一年全市场回测结果

我用2024年1月到2025年7月的A股日线数据,跑了一遍这个策略,覆盖所有有完整数据的股票。

共发现 202次符合条件的突破图形,然后统计如下:

  • 横盘突破后未来20日收益为正的概率:49.01%
  • 横盘突破后未来20日收益超过5%的概率:19.80%
  • 横盘突破后未来20日最高收益为正的概率:52.97%
  • 横盘突破后未来20日最高收益超过5%的概率:24.75%

这个数据说实话,我自己一开始也没想到会这么高。

当然了,有人可能会问------是不是牛市期间才有效?这个咱以后再开一篇讲"市况分层分析"。

今天只告诉你一点:图形是有"概率"的,不是玄学,只要你愿意统计,就能找到背后的规律。


策略可实操吗?

老实说,这个策略不能裸上------你得搭配板块、题材、消息面等过滤。否则你会发现有些票虽然突破了,但根本没人接盘,买进去就是被埋。

但它作为 "预选机制",用来找图形启动前兆,简直太好用了。尤其适合喜欢做龙头、强势股二波启动的朋友。

你可以这么用:

  • 每天复盘,把今天出现突破的票跑出来
  • 挑出背后有资金博弈的,比如芯片、AI、大消费这些板块
  • 留意次日竞价,量能、情绪是否延续
  • 配合盘口、分时进一步确认

也就是说,图形是筛子,判断是你做的活。

需要回测源码的关注我领取

相关推荐
狗头大军之江苏分军2 小时前
《潮水漫过十七岁》开学了
后端
Patrick在香港2 小时前
Claude Prompt 香港场景:公文里「今日」落在 6 个日历日上,「翌日」锚错了 5 天
python·自然语言处理·正则表达式·claude·数据清洗
苏三说技术3 小时前
如何看待GPT-6在UP主众测中碾压夺冠?它是现在最强大模型吗?
后端
mldong3 小时前
一份 JSON,一条能跑的审批流:把报销流程送上工作流引擎
后端·架构
wno7043 小时前
Spring Boot WebFlux增删改查
java·spring boot·后端
Captaincc3 小时前
AI用量v0.1.11更新发布 新增 jusage doctor 诊断指令 托盘展示token 和余额 新增 AutoClaw 支持
前端·后端·vibecoding
YsyaaabB3 小时前
Python 数值分析
python
阿洛学长3 小时前
计算机二级 Python 基本操作题(15 分)真题笔记(0101 ~ 1903 全套)
python·pycharm
weixin199701080164 小时前
[特殊字符]️《二手ERP对接电商平台的总体方案:统一数据模型 + 事件驱动 + 灰度上线6原则》(附Python源码)
大数据·python
aramae4 小时前
模拟实现strlen()函数 (C语言)
c语言·开发语言·后端