tradingview筹码分布指标

首页 > 财经 > 正文 2021-06-01

发表自话题:k线图指标详解

K线技术指标实现详解—筹码分布

概念介绍

筹码分布是主流炒股软件中必不可少的一项技术指标。筹码分布表明了对应K线下的股民持仓价格分布情况,能让投资者据以判断个股的未来走势(压力位和支撑位)。下图展示了筹码分布图通常的展示形式:

在这幅图中我们可以看到当前股票的大致筹码分布情况:图中红色筹码为获利盘,绿色筹码为亏损盘,最大部分的筹码集中在42.21-44.74价格区间内。此时获利的股民很多,因此这部分持仓者很有可能卖出其手中的股票从而形成空方力量,从K线图中也可看出此时的股价已经到达了一个新高,随时可能下跌。
对于筹码分布技术指标的实现,理论上有两种实现方式,而实际产品中使用的实现方式往往是大家意想不到的方式。

实现方式一:

这也是大家心目中的筹码分布“理应如此”的实现形式:后台将每个交易日的分笔成交存入后台,然后在界面展示不同日期的筹码分布的时候将对应周期(此处的周期往往是一个流通股本范围,例如30个交易日)内的数据从数据库中读出,前端界面再将这些分笔数据按照价格区间进行排列展示。
很遗憾,对于这种实现方式,市面上真正这么做的产品应该是没有的。理由很简单:第一,存储数据量巨大的每日分笔成交是一个很高的成本(而且本身每日分笔数据也不可能100%精确获得);第二,以这种方式实现的筹码分布将会导致客户端网络流量的大量增加。由于个股一定周期内的分笔成交数据是一个相当庞大的数据量,一次请求就可能传输几十K甚至更多的数据量。第三,Level2收费成本,政策因素。基于以上几点,现实中很少有产品采用这种实现方式。

一个流通股本范围的周期是多少?
在计算筹码分布时我们知道两个数据:一个是个股每天都会产生的一个当日成交量;另一个是个股的流通股本。当我们从当前日向前累加成交量,直到累加的成交量约等于该个股的流通股本,此时累加经过的天数就称为“一个流通股本范围的周期”。例如对于600570.SS个股在2017年8月上旬左右的成交活跃度情况,日成交量累加到其流通股本大约需要35-45个交易日,因此对于该股,我们计算筹码分布截取的分笔成交量就要向前取35-45个交易日(具体数值每天都会变)。

实现方式二:

这种实现方式将筹码分布完全视为一个纯粹的“技术指标”来实现(这种算法是一种比较耗时的算法,后文会详细说明该程序的时间复杂度):首先计算出一个流通股本范围的周期,然后将周期内每日成交量按照一定的分布算法(下文中会详细介绍分布算法)均匀分布到当日最低价至最高价的范围内。对周期内的每个交易日进行这个处理之后,我们就得到了一个“计算获得”的每日分笔成交数据。剩下的操作和算法一相同,将这些分笔成交数据按照价格区间进行排列展示即可。下图展示了这种算法的筹码计算形式。

在这种算法实现下,我们一视同仁的认为每天的筹码都按照相同的分布方式分布在当日价格区间内,从而得出一个“计算获得”的每日分笔成交数据。这种实现方式解决了方案一的缺陷,但是带来了另一个问题:这样算出来的筹码分布准吗?答案肯定是不准,但是到底偏差会有多少,我目前无从探究。

单日筹码分布的实现算法
对于单日分布,简单来说有两类分布算法:一种就是直筒分布,另一种是三角形分布,如下图所示。

直筒分布实现简单,三角分布实现相对复杂一些。并且对于三角分布,我们可以想象出无数种三角形来模拟当日筹码的分布(如上图所示,可以任意配置三角形的形状)。不过根据理论分析和实践经验,顶点在股价中点的等腰三角形应该是最接近真实筹码分布的情况。

计算及实现

以下我们以一组编造的K线数据为输入,来完成筹码分布的算法实现(编程使用JavaScript语言实现):

var input,circulationAmount,storage; var getPosition,calcSeparate,calcSingledayChip,calcDayChip,calcChip; /* * K线数据 * 开盘价,收盘价,最低价,最高价,成交量 */ input=[ {open:3.89,close:3.89,low:3.86,high:3.93,amount:300}, {open:3.88,close:3.85,low:3.81,high:3.89,amount:320}, {open:3.85,close:3.91,low:3.82,high:3.95,amount:260}, {open:3.89,close:4.02,low:3.89,high:4.07,amount:250}, {open:4.04,close:4.05,low:4.00,high:4.08,amount:280}, {open:4.05,close:4.00,low:3.98,high:4.08,amount:320}, {open:4.00,close:4.00,low:3.97,high:4.04,amount:330}, {open:3.99,close:3.90,low:3.88,high:4.00,amount:350}, {open:3.89,close:3.90,low:3.88,high:3.92,amount:310}, {open:3.89,close:3.98,low:3.88,high:3.98,amount:260}, {open:3.99,close:3.98,low:3.95,high:4.03,amount:280}, {open:3.98,close:4.06,low:3.96,high:4.08,amount:240}, {open:4.08,close:4.08,low:4.02,high:4.08,amount:200} ]; /* * 流通股本 */ circulationAmount=3000; /* * 存储计算过程变量 * {number} separateAmount:全部数据的分价分隔数 * {number} chipMax:一个流通股本内的最高价 * {number} chipMin:一个流通股本内的最低价 * {number} chipStep:每一级分价价格 * {array} chipSeparate:分价价格数组表 * {array} chipStorage:单K线筹码分布存储 */ storage={ separateAmount:100, chipMax:0, chipMin:0, chipStep:0, chipSeparate:[], chipStorage:[] }; /* * 在总分价数组中定位价格索引,二分搜索 * @param {array} array 有序数组表 * @param {number} num 查询数 */ getPosition=function(arr,num){ var i,l; for(i=0,l=arr.length;i=num){ return i; } } }; /* * 计算整个数据段的总分加数组 * @param {array} data 输入数据 */ calcSeparate=function(data){ var i,l,max,min; i=0; max=min=data[i].high; for(i=1,l=data.length;i

标签组:[股票] [筹码分布] [流通股本

上一篇银邦股份-k线图解析_股票入门基础知识_大睢财经网

下一篇股票技术指标公式详解K线图分析

相关阅读

相同话题文章

推荐内容

热门阅读