简介:这份文档围绕通达信平台的主力资金监控需求,整理了一套「主力筹码一目了然」副图指标的完整源码与使用说明,适合具备一定技术分析基础、希望自建副图观察资金动向的股票交易者。文档仅含1个doc文件,压缩包约261KB,篇幅紧凑,公式可复制后导入通达信直接调用。源码以价量、主线、快线三条曲线刻画不同时间尺度下的价格与量能强度,并借助RSV及K1、D1的交叉关系判断趋势与反转;同时用WINNER函数估算主力筹码与散户筹码系数,配合100线上下的彩色柱线、20线上的灰白柱线提示吸货、拉升直至出货的完整过程,散兵坑与深蓝、亮红柱线则分别对应底部关注与建仓信号。目前已有2342人学习下载,可作为副图指标配置、资金流观察与买卖点研判的参考材料。
1. 副图指标里「主力筹码一目了然」要盯的到底是哪几个数
多数人的通达信副图从上到下是成交量、MACD、KDJ,参数调了无数遍,读出来的仍然只是价格和量的滞后关系。主力筹码这件事原本要切到主图的筹码分布去看——横向一排长短不一的柱子,得来回缩放、对价位,一只票看三分钟,自选股翻不完。副图指标要做的,就是把这排横向柱子压成两三条能跟着 K 线同步滚动的曲线。
具体要盯的是三个数。第一个是筹码集中度,也就是 90% 的流通筹码铺在多宽的价格带里,数值越小说明筹码越向某个价位收敛;第二个是主力成本区,用中位成本加成本带宽来近似;第三个是获利盘比例,它和集中度不在一个坐标系里,但在副图上共用 0 到 100 的纵轴,叠在一起就能看出「筹码收敛的同时获利盘在不在涨」。
这套东西适合做中短线、又不愿意天天翻筹码分布图的人。下面按顺序讲清楚:通达信的筹码函数各自返回什么、集中度怎么算、一份能直接粘进公式管理器的副图源码长什么样,以及参数、报错和本地数据这几个真正的坑在哪。
2. 筹码集中度的计算底座:COST、WINNER 与换手率怎么配合
2.1 通达信自带筹码函数的返回值和量纲
通达信把筹码分布模型封装成了两个互为反函数的函数,用对了它们,副图指标基本不需要自己写分布算法。COST(N)输入的是获利盘百分比,返回的是那个百分比位置对应的价位;WINNER(P)输入的是价格,返回的是该价格以下的获利盘占比。关系可以这样验证:WINNER(COST(50))的结果约等于 0.5。
| 函数 / 变量 | 返回值含义 | 量纲 | 副图里怎么用 |
|---|---|---|---|
COST(N) | 获利盘为 N% 时的价位 | 元 | 取 5 / 50 / 95 三个点还原成本带 |
WINNER(P) | 价格 P 以下的获利盘比例 | 0 到 1 | 乘 100 后与集中度共用坐标 |
CAPITAL | 当前流通股本 | 手 | 与VOL相除算换手率 |
VOL | 当日成交量 | 手 | SUM(VOL,N)做窗口累计 |
MA(X,N) | X 的 N 周期简单均值 | 同 X | 平滑集中度、平滑换手 |
要注意的地方有两个。COST和WINNER返回的量纲完全不同,一个是元、一个是比例,直接画在同一个副图里会是一条贴 0、一条冲到几百的惨状,必须先统一。另外这两个函数依赖本地日线数据的完整性,缺数据或者数据只下载了最近一两年,算出来的成本带会明显失真。
2.2 用 COST(5)/COST(50)/COST(95) 三点还原主力成本区
只取一个COST(50)信息量太少,它只能告诉你中位成本在哪。真正有用的是三个点构成的区间:COST(95)是 95% 筹码的成本上沿,可以理解为上方第一道套牢墙;COST(5)是下方最便宜的那 5% 筹码的位置;COST(50)是中位成本,衡量主力筹码的重心。
{三点成本带的取法,先跑通这一段再考虑画图} 上沿:=COST(95); {上方压力位的近似} 下沿:=COST(5); {下方支撑位的近似} 中位:=COST(50); {筹码重心} {相对宽度:成本带占中位成本的百分比,越小越密集} 相对宽度:=(上沿-下沿)/中位*100; {偏度:判断筹码堆在成本带的上半区还是下半区} 偏度:=(上沿+下沿-2*中位)/(上沿-下沿);逻辑说明:相对宽度小于 15,通常意味着筹码已经收敛到一个比较窄的区间;偏度为正在说明筹码更多地堆在价格带的上半区,也就是解套盘压力集中在上方,为负则说明低位还有不少沉淀筹码。参数上没有可调的余地,COST的入参固定成 5、50、95 就行,改动这三个数会让「90% 筹码」这个统计口径失去可比性。
2.3 集中度的两种算法与副图坐标的量纲统一
集中度常见两种写法,差别在于分母取谁。
{算法A:分母用上下沿之和,结果天然落在0到100区间} 集中度A:=(上沿-下沿)/(上沿+下沿)*100; {算法B:分母用中位成本,数值比A大一倍左右} 集中度B:=(上沿-下沿)/中位*100;我一般用算法 A。原因不是精度,而是量纲——A 的结果基本落在 0 到 40 之间,很少溢出,和WINNER(CLOSE)*100得到的 0 到 100 获利盘共用副图纵轴时不会把坐标撑爆。算法 B 的数值偏大,一旦某只票波动剧烈,上限能被顶到 60 以上,这时候再叠获利盘线,两条线的相对位置就没法读了。
下面这段把三个量纲拉齐,可以直接粘出来先在副图上跑一遍看效果:
上沿:=COST(95); 下沿:=COST(5); 集中度:=(上沿-下沿)/(上沿+下沿)*100; {白线,0-40区间} 获利盘:=WINNER(CLOSE)*100; {灰线,0-100区间} 换手:=SUM(VOL,60)/CAPITAL*100; {中间变量,不画线}换手率放在这里的作用是过滤,不是画图。SUM(VOL,60)/CAPITAL*100表示最近 60 个交易日的累计换手百分比,它回答的是「这段时间筹码到底有没有真的换过手」。没有换手的低集中度是假收敛,后面第 4 章会展开。
3. 在公式管理器里手写主力筹码副图指标
3.1 新建副图指标的入口与三个参数入口
第一步是调出公式管理器:通达信主界面按Ctrl+F,也可以从「功能」菜单里找「公式系统」下的「公式管理器」。展开「技术指标」→「其他类型」,点右侧「新建」,弹出的编辑器里有几处必须填对。
参数区要按顺序填三行,顺序决定调用顺序,不要填错行的位置:
| 参数名 | 最小值 | 最大值 | 默认值 | 作用 |
|---|---|---|---|---|
| N | 20 | 240 | 60 | 换手率统计窗口,越短越敏感 |
| M | 1 | 20 | 5 | 集中度平滑周期,控制曲线毛刺 |
| P | 5 | 50 | 15 | 低位判断阈值,低于它算筹码收敛 |
公式名称建议用拼音缩写,比如ZLCH,描述里写「主力筹码一目了然副图」。名称用中文也能保存,但导出成 txt 再导回来的时候,个别版本会因为编码问题把中文名称读乱码,拼音更省事。
最关键的一步是「画线方法」下拉框一定要选「副图」。选成「主图叠加」的话,集中度这条 0 到 40 的曲线会直接压在 K 线画面上,整个图就没法看了,这是新手最常踩的一次性错误。
3.2 主力筹码一目了然副图指标完整源码
{公式名:ZLCH 描述:主力筹码一目了然 副图} {参数:N(20,240,60) M(1,20,5) P(5,50,15)} {---- 1. 筹码成本区间,只做中间变量,不参与副图纵轴 ----} 上沿:=COST(95); 下沿:=COST(5); 中位:=COST(50); {---- 2. 90%筹码集中度,数值越小代表筹码越密集 ----} JZD:=(上沿-下沿)/(上沿+下沿)*100; 集中度:JZD,COLORWHITE; {---- 3. 集中度的平滑线,用来看方向而不是看绝对值 ----} 主力线:MA(JZD,M),COLORYELLOW,LINETHICK2; {---- 4. 获利盘比例,与集中度共用0到100坐标轴 ----} 获利盘:WINNER(CLOSE)*100,COLORGRAY; {---- 5. 换手活跃度,用来剔除假的低集中度 ----} 换手:=SUM(VOL,N)/CAPITAL*100; 活跃:=换手>MA(换手,20)*1.2; {---- 6. 集中度相对主力线的升降,红绿柱直观区分 ----} STICKLINE(JZD>=主力线,JZD,主力线,4,0),COLORRED; STICKLINE(JZD<主力线,JZD,主力线,4,0),COLORGREEN; {---- 7. 低位拐头信号 ----} 低位:=JZD<P; 拐头:=JZD>REF(JZD,1) AND REF(JZD,1)<=REF(JZD,2); 控盘:=低位 AND 拐头 AND 活跃; DRAWICON(控盘,JZD,1); DRAWTEXT(控盘 AND 获利盘>80,JZD,'高控盘'),COLORYELLOW;整个公式十五行左右,主图副图加起来也就这么长,够用了,再堆条件只会让自己读不懂。
3.3 源码逐段拆解与常见报错定位
第 1 段用:=定义上沿、下沿、中位三个中间变量,它们的量纲是元,属于几十块的量级。如果用:输出,副图上会出现三条几乎贴在顶部的横线,把 0 到 100 的主曲线压成一条直线。中间变量不画线,就是这个用途。
第 2、3 段的JZD同样是中间变量,集中度和主力线各自用:输出,分别对应白线和加粗黄线。第 4 段的获利盘用WINNER(CLOSE)*100,乘 100 是为了和集中度共用坐标轴,这个换算漏掉的话,灰线会一直贴着 0 轴爬,看不出任何波动。
第 6 段的STICKLINE(条件, 值1, 值2, 宽度, 空心标志)是副图上做柱体的标准写法,宽度 4 在多数分辨率下粗细刚好,最后一个参数填 0 表示实心柱。第 7 段的DRAWICON(条件, 位置, 图标编号)里,图标编号要对照公式管理器编辑器右侧的图标列表选;DRAWTEXT的第二个参数是文字落点,写在JZD上会和曲线重叠,所以常见做法是乘一个系数把它抬开。
几个高频报错:
- 「未知的标识符」:多半是在源码里混进了全角括号或全角分号,从网页复制公式时最容易带上,粘贴后先全选看一遍有没有异常字符。
- 「缺少操作数」:
AND两侧的条件没写全,或者REF少了一个参数。 - 副图一片空白:检查画线方法是否选成了「主图叠加」,以及
DRAWTEXT条件是否长期不成立。
4. 副图信号的判读:单峰密集、双峰对峙与红绿柱含义
4.1 集中度数值区间对应的筹码形态
白线的高度直接对应筹码铺开的宽度,可以按区间建立一套读图直觉:
| 集中度取值 | 筹码形态 | 常见含义 | 副图表现 |
|---|---|---|---|
| 小于 10 | 单峰密集 | 筹码高度收敛在一个价位带 | 白线贴近下轨,红柱短促 |
| 10 到 20 | 温和发散 | 换手正常,成本缓慢抬升 | 白线小幅上行,红绿柱交替 |
| 20 到 35 | 明显发散 | 多空成本差异拉大 | 白线持续爬升,绿柱变长 |
| 大于 35 | 高度发散 | 上方套牢盘分散,抛压不集中 | 白线靠近获利盘线,红柱稀少 |
单峰密集和双峰对峙的区别,靠集中度一条线是分不出来的,要补一个偏度:
偏度:=(上沿+下沿-2*中位)/(上沿-下沿); {偏度接近0说明筹码上下对称分布,偏向单峰} {偏度绝对值大于0.3,说明筹码明显偏向一侧,容易形成双峰}偏度为正、集中度又低,这是最典型的一种形态:筹码收敛且重心偏上,说明低位筹码已经不多,剩下的主要堆在上方。偏度为负、集中度低,则是低位堆量的形态。
4.2 用换手和获利盘过滤假信号
低集中度不一定代表主力控盘。一只长期没量的票,筹码本来就不怎么流动,集中度天然就低,这种数值没有意义。源码里那句活跃:=换手>MA(换手,20)*1.2就是干这个的:只有当前窗口的换手明显高于近 20 日平均水平,才认为筹码是在真正的交易中被重新分配的。
获利盘的用法是配合而不是主判。WINNER(CLOSE)*100高于 80,说明绝大部分持仓者处在盈利状态,这时候如果集中度处在低位并开始拐头,浮盈盘没有集中出逃,说明筹码锁定得比较牢;反过来,集中度低但获利盘长期在 30 以下,多半是套牢盘堆积,不是主力吸筹。
两个条件都满足才点亮那个图标,宁可漏掉信号,也不要让假信号铺满整张副图。
4.3 主图、副图、选股公式三处联动的验证方法
写完副图别急着用,先做一次交叉验证。把同一套算法写成条件选股公式,用历史区间跑一遍,看看信号出现的位置是不是集中在阶段底部,而不是散落在下跌途中。
{验证用选股公式,与副图共用同一套口径} 上沿:=COST(95); 下沿:=COST(5); JZD:=(上沿-下沿)/(上沿+下沿)*100; 获利:=WINNER(CLOSE)*100; 换手:=SUM(VOL,60)/CAPITAL*100; XG:JZD<15 AND 获利>70 AND 换手>30;把这段单独建在「条件选股公式」分类下,用「条件选股」功能跑最近一年,导出的结果列表拿主图对照一遍。如果选出来的票大量集中在顶部或者明显是随机分布,问题通常出在阈值上——JZD<15这个门槛对不同板块的股票敏感度不一样,大盘股普遍偏低,小盘股普遍偏高,需要按自己的股票池微调。
5. 导入导出与本地数据:.tn6、.txt 和公式管理器的坑
5.1 公式文件导入导出的流程与编码问题
在公式管理器里选中指标,右键就有「导出」,格式一般给两个选项。两种格式的差别很实际:
| 格式 | 内容 | 可读性 | 适用场景 |
|---|---|---|---|
| tn6 | 打包后的公式包,可含多个公式 | 无法直接查看源码 | 分享给别人、跨机搬运 |
| txt | 纯文本源码 | 记事本能直接编辑 | 自己备份、改参数 |
导成 txt 的时候要注意编码。通达信读 txt 时对编码比较挑,用 UTF-8 带 BOM 保存,第一行常常会多出几个乱码字符,导入时报「未知标识符」;用 ANSI 或者 GBK 保存最稳。同理,从网页上复制源码直接粘进编辑器,也要留意有没有带上不可见字符,粘贴后先看第一行和最后一行。
收到别人发来的.tn6,导入后能看到公式名称、能正常画线,但源码是打不开的。这是公式包的正常设计,不是文件损坏。要改参数或者二次开发,得向原作者要 txt 版本,不要在加密文件上折腾。
5.2 公式管理器版本差异与加密公式的处理边界
不同版本的通达信,公式管理器的界面布局不一样,早期版本把「新建」放在工具栏,新版放在右键菜单里,功能等价的入口找一找都有。语法层面兼容性反而更好,COST、WINNER、DRAWICON、STICKLINE这些从很早的版本就存在,写成上面那份源码,跨版本迁移基本不会出问题。真正会报错的是新版本里才加入的函数,放到老版本上就是「未知的标识符」。
加密公式包的处理边界要划清楚:可以导入、可以使用、可以把它作为黑盒观察信号表现,但不能指望从里面还原出源码,也不建议在源码不可见的情况下去实盘重仓依赖它。看不到逻辑的指标,出了问题连原因都定位不了。
5.3 副图卡顿、数据缺失的排查顺序
副图挂多了,切票会明显变慢。排查顺序建议这样走:
- 先看是不是公式本身太重。
COST和WINNER每次都要基于历史成交数据重算分布,如果一个副图里反复调用十几次,切一次票就是十几倍的计算量。能合并的中间变量尽量合并,别重复写COST(95)。 - 再看本地数据是否完整。在「盘后数据下载」里补全日线,尤其是上市时间长的票,只下了近一两年的数据会让成本带整体偏移。
- 最后才考虑行情连接数。
connect.cfg里的连接数配置决定了同时连几个行情主站,把它调大能提升多路行情的稳定性,但不是越大越好,超出本机网络条件反而会频繁掉线重连。改之前先把原文件备份一份。
改完任何一项,都用同一只票、同一时间段对比改动前后的副图输出,确认变化是预期内的。
6. 进阶:把主力筹码副图接进预警与跨周期引用
6.1 用同一套算法写条件预警公式
副图负责看,预警负责提醒,两者应该共用同一份口径。把第 4 章那段选股公式稍作调整,加点时间上的限定,避免在同一个信号上反复报警:
{主力筹码预警公式} 上沿:=COST(95); 下沿:=COST(5); JZD:=(上沿-下沿)/(上沿+下沿)*100; 获利:=WINNER(CLOSE)*100; 换手:=SUM(VOL,60)/CAPITAL*100; {昨天还没达标、今天达标,只报一次} 首次:=JZD<15 AND REF(JZD,1)>=15; XG:首次 AND 获利>70 AND 换手>30;写好后建到「条件选股公式」分类下,再从「预警设置」里把这条公式挂上去,选择监控的股票池和刷新周期。这里容易忽略的一点是预警的刷新频率:分钟级刷新下,COST会按分钟数据重算,成本带和日线口径不一致,所以预警最好放在收盘后按日线跑一次,而不是盘中高频轮询。
6.2 跨周期引用与复权对齐
副图默认跟着当前周期走,切到 60 分钟图,COST就会用分钟数据去算筹码分布,结果和日线完全不同。想让副图始终显示日线口径的集中度,用跨周期引用:
{引用已保存公式ZLCH里的日线集中度} 日集中度:="ZLCH.集中度#DAY",COLORWHITE;引用时公式名要用英文引号包起来,中间的点号不能省,#DAY表示取日线。被引用的公式必须已经保存在公式管理器里,否则会提示找不到指标。这个写法可以让你在分钟图上盯盘,同时看的是日线级别的筹码结构——盘中做决策时,这一点比副图本身更值钱。
复权也要对齐。除权日会让COST出现一次跳变,如果看的是不复权数据,历史成本带会被除权缺口切成两段,副图上表现为集中度突然拉高又回落,看起来像筹码发散,实际是价格序列断层。看历史形态时切到前复权,看当下实盘时切回不复权,两边对照着确认,避免被一次除权误导成主力出逃。
本文还有配套的精品资源,点击获取