股票筹码分布及其数据获取

文章目录

  • 股票筹码分布及其数据获取
      • 一、筹码分布的核心概念与意义
        • 1. **基本定义**
        • 2. **核心意义**
      • 二、Python实现:AKShare获取贵州茅台筹码分布
        • 1. 安装依赖
        • 2. 完整代码
        • 3. 关键代码解析
      • 三、实战应用案例(贵州茅台)
        • 1. **低位密集反弹信号**
        • 2. **高位派发预警**

股票筹码分布及其数据获取

一、筹码分布的核心概念与意义

1. 基本定义

筹码分布(也称为成本分布)是一种展示股票持仓成本结构的技术分析工具。它通过统计不同价格区间的成交量分布,直观呈现市场参与者的持股成本集中区域。核心要素包括:

  • 颜色标识
    • 蓝色:套牢盘(当前价格 < 持仓成本)
    • 红色:获利盘(当前价格 > 持仓成本)
    • 白线:所有筹码的平均成本
  • 筹码峰:成本密集区形成的价格尖峰,代表强支撑/阻力位。
  • 集中度:数值越低(如<10%),表明筹码越集中,主力控盘可能性越高。
2. 核心意义
应用场景判断逻辑实战意义
趋势判断低位筹码密集 → 主力吸筹完毕,上涨概率高;高位密集 → 套牢盘压力大,可能回调识别牛熊转折点,如贵州茅台在2025年1422元低位密集后反弹
主力动向识别获利30%不抛、横盘不卖、解套不走的筹码多为主力筹码发现高控盘个股,如迪安诊断拉升时底部筹码锁定
支撑/阻力分析筹码峰在下跌中形成支撑(投资者惜售),上涨中形成阻力(解套抛压)制定买卖点,突破密集区放量可追涨

二、Python实现:AKShare获取贵州茅台筹码分布

1. 安装依赖
uv add akshare pandas matplotlib
2. 完整代码
import akshare as ak
import pandas as pd
import matplotlib.pyplot as plt

# 获取贵州茅台筹码分布数据(同花顺接口)
def get_chip_distribution():
    try:
        # 从AKShare获取筹码分布数据
        df = ak.stock_cyq_em(symbol="600519")
        
        # 数据清洗:转换日期格式,筛选关键列
        df['日期'] = pd.to_datetime(df['日期'])        
        return df
    except Exception as e:
        print(f"数据获取失败: {e}")
        return None

# 可视化筹码分布
def plot_chip_distribution(df):
    plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 用来正常显示中文标签
    plt.figure(figsize=(14, 7))
    
    # 绘制收盘价走势
    plt.subplot(2, 1, 1)
    plt.plot(df['日期'], df['平均成本'], 'b--', label='平均成本')
    plt.fill_between(df['日期'], df['90成本-低'], df['90成本-高'], color='gray', alpha=0.3, label='90%成本区间')
    plt.title('贵州茅台(600519) 筹码分布分析', fontsize=14)
    plt.legend()
    plt.grid(True)
    
    # 绘制集中度与获利比例
    plt.subplot(2, 1, 2)
    plt.bar(df['日期'], df['获利比例'], color='red', alpha=0.6, label='获利比例')
    plt.plot(df['日期'], df['90集中度'], 'go-', label='90集中度')
    plt.xlabel('日期')
    plt.legend()
    plt.grid(True)
    plt.tight_layout()
    plt.savefig('茅台筹码分布.png', dpi=300)
    plt.show()

# 主程序
if __name__ == "__main__":
    chip_data = get_chip_distribution()
    if chip_data is not None:
        print("最新5条筹码分布数据:")
        print(chip_data.tail(5))  # 打印最新5条数据
        plot_chip_distribution(chip_data)
    else:
        print("请检查网络或AKShare接口更新!")

程序运行结果:

最新5条筹码分布数据:
           日期      获利比例     平均成本   90成本-低   90成本-高     90集中度   70成本-低   70成本-高     70集中度
85 2025-07-01  0.062117  1526.65  1384.01  1651.46  0.088108  1428.59  1593.52  0.054574
86 2025-07-02  0.081460  1526.65  1384.01  1647.01  0.086767  1428.59  1593.52  0.054574
87 2025-07-03  0.118443  1526.65  1388.47  1647.01  0.085171  1424.13  1593.52  0.056132
88 2025-07-04  0.138176  1526.65  1388.47  1647.01  0.085171  1424.13  1593.52  0.056132
89 2025-07-07  0.080325  1526.65  1388.47  1647.01  0.085171  1424.13  1593.52  0.056132

数据截图

3. 关键代码解析
  • 数据接口ak.stock_cyq_em(symbol="600519") 直接获取东方财富筹码分布数据。
  • 核心字段
    • 获利比例:当前价格下盈利筹码占比(红色区域)
    • 集中度:数值越低主力控盘越强(一般<10%为强势股)
    • 90%成本区间:90%筹码聚集的价格区间
  • 可视化设计
    • 上图:股价与成本区间叠加,识别支撑/压力位
    • 下图:获利比例(红柱)与集中度(绿线)联动,捕捉主力动向

三、实战应用案例(贵州茅台)

1. 低位密集反弹信号
  • 若数据显示:
    • 股价跌至1400元附近时,90%成本区间收缩至1350-1450元
    • 集中度骤降至8%(主力吸筹完成)
    • 获利比例<5%(市场恐慌抛售)
  • 策略:突破平均成本线且放量时介入
2. 高位派发预警
  • 若数据显示:
    • 股价在1800元时,获利比例>95%
    • 集中度升至15%(筹码分散)
    • 90%成本区间上移至1700-1850元(套牢盘堆积)
  • 策略:跌破密集区下沿止损

💡 注意事项

  1. AKShare的东方财富接口需关注数据源稳定性,若失效可切换至stock_zh_a_hist获取K线后自行计算;
  2. 筹码分布需结合成交量验证——突破密集区时需放量,否则可能是假突破;
  3. 不同行业筹码特征不同(如白酒股主力控盘更强)。
好的,下面是一个使用 JavaScript 编写的根据K线图数据计算股票筹码分布的方法: ```javascript function calculateChipDistribution(klineData, totalShares, holdings) { let marketValue = klineData.close * totalShares; let chipDistribution = []; for(let i = 0; i < holdings.length; i++) { let value = holdings[i].shares * klineData.close; let percent = value / marketValue; let chip = { name: holdings[i].name, shares: holdings[i].shares, value: value, percent: percent }; chipDistribution.push(chip); } return chipDistribution; } // Example usage let klineData = { open: 50, close: 55, high: 60, low: 45 }; let totalShares = 1000000; let holdings = [ { name: 'Investor A', shares: 250000 }, { name: 'Investor B', shares: 500000 }, { name: 'Investor C', shares: 250000 } ]; let chipDistribution = calculateChipDistribution(klineData, totalShares, holdings); console.log(chipDistribution); ``` 这个函数需要三个参数:K线图数据、总共的股票数量和每个投资者持有的股票数量。它会返回一个包含每个投资者持有的股票价值和筹码分布占比的数组。在此示例中,我们假设K线图数据中收盘价为55美元,总共有100万股,投资者A持有25万股,投资者B持有50万股,投资者C持有25万股。 输出结果应该是: ``` [ { name: 'Investor A', shares: 250000, value: 13750000, percent: 0.25 }, { name: 'Investor B', shares: 500000, value: 27500000, percent: 0.5 }, { name: 'Investor C', shares: 250000, value: 13750000, percent: 0.25 } ] ``` 其中,每个筹码对象包含了投资者姓名、持有股票数量、持有股票价值和筹码分布占比。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Humbunklung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值