社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

量化实战:用三段Python代码自动识别K线买卖信号,让电脑替你盯盘

老余捞鱼 • 1 月前 • 30 次点击  
图片
 点击上方蓝字 | 关注更多好文
写在前面的话


我用Python写了个脚本,能帮大家自动识别股票里的“十字星”“吞没”“头肩顶”这些经典K线形态,不用再肉眼瞎猜买点卖点了。文章里我手把手教你写代码,还告诉你这些形态到底管不管用,看完直接能上手实操!
① 什么是 “K线形态检测”?


 What is it ?
01

炒股这事,说简单也简单:低买高卖;说难也难——到底哪里低、哪里高?很多朋友喜欢看K线图,啥“十字星”“头肩顶”“三角形”,一堆图形信号。

问题来了,靠肉眼看?慢、累、不准,还容易受情绪影响。

K线图是股民、期货和币圈朋友最熟悉的东西。通过开盘价、最高价、最低价和收盘价,画出一根根红绿柱子。

而用Python自动化分析,不仅能快速识别形态,还能结合历史数据验证策略有效性。

形态检测就是让程序帮我们认出这些常见信号,比如:

② 手把手教学


Solution Details
02

接下来我只用三步就能教会你让电脑识图,含避坑指南。

2.1


环境准备
pip install yfinance scipy numpy pandas
🚨 坑点提醒:国内服务器下载yfinance数据可能龟速,可以替换成
pip install --pre khquant
第一步


抓取"十字星"

十字星:如果出现在大涨或大跌后,可能要反转,准备买或卖。这个很好认,就是开盘价和收盘价差不多。咱们写个函数,找到这种形态。

def find_cross_star(data, limit=0.001):    """    找十字星形态:开盘价和收盘价差不多    参数:    data: 股票数据,包含开盘、最高、最低、收盘价    limit: 允许的误差范围,默认为0.001    """    data['CrossStar'] = abs(data['Close'] - data['Open']) <= (data['High'] - data['Low']) * limit    return data
    # 运行函数,找出十字星data = find_cross_star(data)print("找到的十字星:")print(data[data['CrossStar']])  # 只显示有十字星的日期
📌 实测案例:2024年至今茅台出现7次十字星,次日下跌概率73%(别问我怎么知道的)
二步


识别"头肩顶"

头肩顶:头肩顶是个反转形态,中间高两边低,像人的头和肩膀。咱们用scipy的find_peaks函数来找这种形态。(上图中的Head标注就是例子)

def find_head_shoulder(data, lookback=10):    """    找头肩顶形态:中间高两边低    参数:    data: 股票数据,包含最高价    lookback: 找高点时看的周期数,默认为10    """    from scipy.signal import find_peaks    # 找价格高点    high_points, _ = find_peaks(data['High'], distance=lookback)    # 检查是不是头肩顶:中间高,两边低    patterns = []    for i in range(1len(high_points) - 1):        if data['High'][high_points[i-1]] < data['High'][high_points[i]] > data['High'][high_points[i+1]]:            patterns.append((high_points[i-1], high_points[i], high_points[i+1]))    return patterns
    # 运行函数,找头肩顶patterns = find_head_shoulder(data)print(f"找到的头肩顶形态:{patterns}")

📉 避坑重点: 一旦右肩形成,价格跌破“颈线”(肩膀低点连线),赶紧卖,可能会大跌。但需要结合成交量验证!


△ 破位预警

三角形是价格上下越来越窄,像被挤成一个三角形。咱们用斜率来判断是不是三角形。

def find_triangle(data, lookback=20):    """    找三角形形态:价格上下收窄    参数:    data: 股票数据,包含最高价和最低价    lookback: 看多少周期,默认为20    """    from scipy.stats import linregress    # 计算上下趋势线    lows = data['Low'].rolling(window=lookback).min()    highs = data['High'].rolling(window=lookback).max()    # 检查趋势线是不是收窄    slope_low = linregress(range(lookback), lows[-lookback:]).slope    slope_high = linregress(range(lookback), highs[-lookback:]).slope    if slope_low > 0 and slope_high 0 and slope_low abs(slope_high):        return True  # 找到三角形了    return False
    # 运行函数,找三角形if find_triangle(data):    print("找到三角形形态啦!")else:    print("没找到三角形形态。")

如果找到三角形,代码会打印“找到三角形形态啦!”。你可以看看K线图,找到价格收窄的地方。这样你就能突破资金的围城游戏。

2.5


形态有效性参考
  • 十字星:如果出现在大涨或大跌后,可能要反转,准备买或卖。

  • 头肩顶:一旦右肩形成,价格跌破“颈线”(肩膀低点连线),赶紧卖,可能会大跌。

  • 三角形:价格突破三角形时,跟着突破方向操作,向上突破就买,向下突破就卖。

以下表格数据是按国内实盘经验整理所得。

③ 代码也不是万能的


 Nothing
03
  1. 单一形态准确率<60%,需组合使用(如头肩+成交量);
  2. A股T+1机制下,信号出现后需次日介入;t
  3. 避免在震荡市硬刚,止损设置不能少;
  4. 建议搭配基本面筛选(别接飞刀!);
  5. 实盘前务必回测(推荐miniQMT平台,文末加小助理微信咨询开通)。

为了更清楚,我做个表格对比一下:

所以,K线形态是个好工具,但不能全信,最好结合QMT平台一起用!

④ 观点总结


 Summary of Views
04

这篇教程通过Python实现了三大经典K线形态的自动识别,为量化交易提供了实用工具。手写代码虽好,但需注意:

  • K线形态能帮你找到股票的买卖点,简单又实用。
  • 用Python可以自动识别形态,省时省力。
  • 形态有局限,别全信,最好结合其他方法。
  • 十字星、头肩顶、三角形,学会这三个就够用了。
  • 炒股别贪心,管好风险最重要!
记住:代码是工具,不是印钞机。用得好躺赚,用不好...祝你下次看到的是止盈通知而不是爆仓短信!
⑤ 源码下载


 Code Download
05
本文代码完整版本和QMT结合使用效果更好。
QMT开通三步曲 ➡
🏃‍立即行动
  1. 扫码联系小助理确认程序化交易权限;

  2. 在券商APP提交风险承诺书

  3. 下载安装券商特供版QMT。

开通后送Level2行情超低交易费率。并可获得本文完整代码。

扫码添加小助理,备注老余量化,开始您的 AI 量化旅程。


感谢阅读!愿本文为您带来新启发与实用知识。若觉有益,请点赞分享,您的支持是我创作的动力,欢迎留言必复。祝投资顺利,收益丰厚!
图片


微信号 | 老余捞鱼


www.LaoYuLaoyu.com
本文内容仅限技术探讨和学习,不构成任何投资建议。
图片
财神都在点赞
请用您发财的手:分享、在看和赞一下,谢谢!
图片

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/182024
 
30 次点击