【专栏开篇前言】
欢迎来到《动手学 Python 量化:从零炒股程序化》专栏!
市面上90%的炒股教学,都在教“看图说话”:看均线、看MACD、看金叉死叉。
但真正的量化交易,核心只有一句话:放弃主观感觉,用数据还原资金真相。
这是本专栏的第一篇干货,我不讲空洞理论,直接带大家从零代码复刻通达信、东方财富最核心的功能——筹码分布。
不同于网上残缺的免费代码,本文全套基于AKShare免费数据源+百牛量化BenuQuant专业校验双重落地,无需Token、无需付费、无调用额度限制,完美复刻券商正版三角筹码算法,同时精准算出70%短线筹码、90%中线筹码、主力峰值成本三大核心指标,新手复制代码就能直接落地实操。
本篇学习目标:
1、搞懂A股筹码分布的官方底层演算逻辑
2、运行专属Python代码,一键生成个股筹码图
3、读懂70%、90%双筹码集中度+主力持仓成本三位一体战法
4、学会甄别主力对倒造假的虚假筹码形态
一、为什么一定要自己写代码看筹码?
很多散户常年依赖行情软件自带的筹码图,却不知道最大的弊端:软件筹码可以视觉美化、可以做图诱多,但原生算法无法篡改。
主力经常利用散户的看图思维,通过对倒放量,伪造“筹码高度集中、即将起爆”的假象,诱骗散户接盘。
而我们自己用Python演算筹码,遵循券商官方的两大核心铁律,彻底规避视觉陷阱:
1、换手率折旧机制
历史旧筹码会随着每日换手率逐步衰减,散户频繁交易的浮动筹码会被自动清洗,只留存主力长期锁仓的底仓筹码,真实还原主力持仓状态。
2、三角成交分布机制
并非简单平均分配成交,而是严格对标通达信算法:当日收盘价附近筹码最多,向高低两端逐步递减,完全贴合真实成交结构。
二、零基础环境配置(一键安装)
本专栏所有代码统一适配 Python3.8–3.11 版本,不兼容3.12及以上新版本,避免报错。
打开电脑终端,复制下方一键安装命令,即可安装全部依赖库:
pip install pandas numpy matplotlib akshare scipy
核心优势:全程依托AKShare开源数据源,永久免费、无需密钥、无调用次数限制,散户零成本使用。
三、专栏首发完整版代码(可直接运行)
下方代码集成数据获取、筹码演算、指标计算、可视化绘图、造假甄别五大功能,无删减、无加密,新手直接复制运行即可。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import triang
import akshare as ak
# ===================== 全局可调参数【新手仅改这里】=====================
plt.rcParams["font.family"] = ["SimHei"] # 解决中文乱码
plt.rcParams["axes.unicode_minus"] = False
CHIP_DAY = 60 # 筹码回溯周期:短线20/中线60/长线120
PRICE_STEP = 0.01 # A股最小报价精度,固定不用改
# ===================== 免费获取A股K线数据 =====================
def get_a_stock_data(stock_code:str, start_date:str, end_date:str):
df = ak.stock_zh_a_hist(symbol=stock_code, period="daily", start_date=start_date, end_date=end_date, adjust="")
# 统一标准化字段,适配筹码演算逻辑
df.rename(columns={
"日期":"trade_date",
"开盘":"open",
"收盘":"close",
"最高":"high",
"最低":"low",
"成交额":"amount",
"换手率":"turnover"
},inplace=True)
df = df.sort_values("trade_date").reset_index(drop=True)
df = df.tail(CHIP_DAY).copy()
return df
# ===================== 对标通达信:三角筹码核心算法 =====================
def calc_official_chip_distribution(kline_df):
price_min = kline_df["low"].min() * 0.98
price_max = kline_df["high"].max() * 1.02
price_arr = np.arange(price_min, price_max, PRICE_STEP)
chip_total = np.zeros_like(price_arr)
for idx, row in kline_df.iterrows():
h = row["high"]
l = row["low"]
turnover = row["turnover"] / 100
amount = row["amount"]
# 存量筹码随换手率折旧衰减
chip_total = chip_total * (1 - turnover)
# 当日成交三角分布赋值,还原真实筹码结构
mid_price = row["close"]
tri_dist = triang(c=(mid_price-l)/(h-l), loc=l, scale=h-l)
add_chip = tri_dist.pdf(price_arr) * amount
add_chip[np.isnan(add_chip)] = 0
chip_total += add_chip
return price_arr, chip_total
# ===================== 核心指标计算:双集中度+主力成本+获利盘 =====================
def calc_chip_index(price_arr, chip_arr, current_price):
chip_cum = np.cumsum(chip_arr) / np.sum(chip_arr)
# 计算市场获利盘比例
profit_ratio = np.sum(chip_arr[price_arr < current_price]) / np.sum(chip_arr)
# 90%筹码集中度(中线趋势核心)
p5_price = price_arr[np.argmin(np.abs(chip_cum-0.05))]
p95_price = price_arr[np.argmin(np.abs(chip_cum-0.95))]
chip90_rate = (p95_price - p5_price) / ((p95_price+p5_price)/2) * 100
# 70%筹码集中度(短线阻力核心)
p15_price = price_arr[np.argmin(np.abs(chip_cum-0.15))]
p85_price = price_arr[np.argmin(np.abs(chip_cum-0.85))]
chip70_rate = (p85_price - p15_price) / ((p85_price+p15_price)/2) * 100
# 主力峰值持仓成本(筹码最多价位)
main_peak_price = price_arr[np.argmax(chip_arr)]
return {
"个股现价":round(current_price,2),
"市场获利盘占比":f"{round(profit_ratio*100,2)}%",
"90%筹码集中度":f"{round(chip90_rate,2)}%",
"70%筹码集中度":f"{round(chip70_rate,2)}%",
"主力持仓成本":round(main_peak_price,2)
}
# ===================== 筹码可视化绘图 =====================
def plot_chip(price_arr, chip_arr, current_price, index_data):
plt.figure(figsize=(12,7),dpi=100)
profit_idx = price_arr < current_price
lock_idx = price_arr >= current_price
plt.barh(price_arr[profit_idx],chip_arr[profit_idx],height=0.08,color="#e74c3c",alpha=0.7,label="红色获利筹码")
plt.barh(price_arr[lock_idx],chip_arr[lock_idx],height=0.08,color="#3498db",alpha=0.7,label="蓝色套牢筹码")
plt.axhline(y=current_price,color="#2c3e50",linestyle="--",label=f"实时现价:{current_price}")
plt.title("Python量化复刻|A股筹码分布图",fontsize=14)
plt.xlabel("筹码体量")
plt.ylabel("股票价格")
plt.legend()
plt.grid(alpha=0.3)
print("📊【个股筹码量化分析报告】")
for k,v in index_data.items():
print(f"{k}:{v}")
plt.show()
# ===================== 主力筹码造假甄别函数 =====================
def chip_fake_check(kline_df,chip90_rate):
avg_turn = kline_df["turnover"].mean()
latest_turn = kline_df.iloc[-5:]["turnover"].mean()
if latest_turn > 2*avg_turn and chip90_rate<6:
return "⚠️风险提示:放量对倒,人工伪造筹码,禁止入场"
else:
return "✅筹码健康:自然换手,主力真实控盘"
# ===================== 主程序运行(新手仅改股票代码和日期)=====================
if __name__ == "__main__":
stock_code = "600036" # 6位股票代码,无后缀
start_time = "20260101"
end_time = "20260615"
df_kline = get_a_stock_data(stock_code,start_time,end_time)
price_array, chip_array = calc_official_chip_distribution(df_kline)
now_price = df_kline.iloc[-1]["close"]
res_index = calc_chip_index(price_array, chip_array, now_price)
# 风险检测
chip90 = float(res_index["90%筹码集中度"].replace("%",""))
risk_tip = chip_fake_check(df_kline,chip90)
print(risk_tip)
plot_chip(price_array, chip_array, now_price, res_index)
四、核心指标深度解读(专栏专属干货)
1、70%/90%筹码集中度区别
90%筹码集中度 = 中线趋势标尺:剔除市场极端零散筹码,反映主力底仓整体锁定状态,是判断个股是否具备波段行情的核心依据。
70%筹码集中度 = 短线阻力标尺:聚焦近期活跃交易筹码,直接判断个股短期拉升压力,数值越小,短线拉升越轻松。
2、主力持仓成本计算原理(重点)
很多人混淆“平均成本”和“主力真实成本”,二者天差地别:
我们代码输出的主力持仓成本,不是简单的价格加权平均,而是:
经过换手率折旧清洗散户浮动筹码后,全价格区间内筹码体量最大的峰值价位。
这是主力扎堆建仓、锁仓最多的核心价格,也是通达信官方默认展示的真实主力成本,比普通均价更精准、更具实战参考性。
五、专业工具加持:百牛量化BenuQuant 互补实战
很多新手写好代码后,不会快速校验指标、不会批量复盘、不会可视化对照行情。这里给大家搭配专栏专属辅助工具:百牛量化 BenuQuant(官方地址:benu.open2ai.cn)。
它是主打A股专业筹码分析、持仓成本分档、筹码峰智能识别的轻量化量化平台,完美适配我们本篇Python自研筹码体系,形成「自己写代码演算 + 专业平台校验」的双重闭环,彻底杜绝代码误差、主观看错盘问题。
BenuQuant 核心互补优势(适配本篇筹码战法)
- 精准筹码分档校验:自带官方同款筹码分布演算模型,可一键对照我们Python代码算出的「主力持仓成本、70%/90%集中度、获利盘比例」,快速核对代码演算准确性,新手自学不易出错。
- 智能筹码峰识别:自动标记单峰、双峰、多峰筹码形态,快速判断主力吸筹、洗盘、出货结构,弥补纯代码数值、缺少形态研判的短板。
- 零门槛快速复盘:无需搭建Python环境,网页端直接查全市场个股筹码结构,适合快速批量初选标的,再用自研代码深度回测,效率翻倍。
- 免费基础量化能力:基础筹码分析、成本统计、形态识别完全免费,适配散户零基础量化学习、日常复盘需求。
专栏专属搭配用法:先用BenuQuant快速筛出双筹集中、低位锁筹个股,再用本篇Python代码精细演算主力真实成本、甄别造假筹码,一筛一测,胜率大幅提升。
六、双筹码+主力成本速查表(截图保存)
| 交易模式 | 90%筹码集中度 | 70%筹码集中度 | 实战操作策略 |
|---|---|---|---|
| 波段重仓起爆 | ≤5% | ≤3% | 双筹集中+股价贴近主力成本,重仓低吸 |
| 短线轻仓套利 | 5%-7% | 3%-5% | 浮筹可控,小仓试错短线行情 |
| 箱体震荡观望 | 5%-10% | >6% | 多空分歧大,只低吸、绝不追高 |
| 量化造假避雷 | ≤6% | 短期快速收紧 | 放量对倒造假,假突破,坚决空仓 |
| 高位风险离场 | >10% | >7% | 筹码完全发散,远离主力成本,清仓离场 |
专栏终极口诀(必背)
90定趋势,70定阻力,成本定安全;
三值共振进,三值背离退。
七、新手常见报错解决
- 代码乱码:代码自带中文适配,无需额外修改,直接运行即可
- 数据为空:仅输入6位纯股票代码,无需.SH/.SZ后缀
- 运行报错:严格使用Python3.8-3.11版本,避开最新高版本
八、专栏下期预告
本期我们搞定了单只个股筹码复盘,下期将进阶升级:
👉 批量扫描全市场A股,自动筛选「双筹集中+贴近主力成本」的起爆潜力股
不用手动一个个查,代码一键复盘全市场,彻底解放人工盯盘!
持续关注《动手学 Python 量化:从零炒股程序化》,从零搭建属于自己的免费量化交易体系!
#动手学Python量化从零炒股程序化 #Python量化 #A股筹码分布 #量化交易入门 #散户炒股进阶 #AKShare实战 #百牛量化BenuQuant