# 通达信指标公式算法释疑
# BOLL
通达信副图布林线BOLL
BOLL:MA(CLOSE,M);
UB:BOLL+2*STD(CLOSE,M);
LB:BOLL-2*STD(CLOSE,M);
假设有一组数值X?,X?,X?,......Xn(皆为实数),其平均值(算术平均值)为μ
标准差也被称为标准偏差,或者实验标准差,公式为

标准差是一组数据平均值分散程度的一种度量。一个较大的标准差,代表大部分数值和其平均值之间差异较大;一个较小的标准差,代表这些数值较接近平均值。
通达信主图布林线传统版BOLL-M
以日BOLL指标计算为例,其计算方法如下:
1、日BOLL指标的计算公式
中轨线=N日的移动平均线,上轨线=中轨线+两倍标准差,下轨线=中轨线-两倍标准差
2、日BOLL指标的计算过程
(1)计算MA,MA按SMA(CLOSE,N,1)来计算
SMA(X,N,M):X的N日移动平均,M为权重,如Y=(X*M+Y'*(N-M))/N
(2)计算标准差MD,MD=平方根N日的(C-MA)的两次方之和除以N
(3)计算MB、UP、DN线,MB=(N-1)日的MA,UP=MB+2×MD,DN=MB-2×MD
主图BOLL与副图BOLL不同的是:
1.主图BOLL的MA的算法不同
2.主图BOLL使用的平均值不是算术平均值,而是移动平均值。
# KDJ
KDJ普通版的公式为:
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);
D:SMA(K,M2,1);
J:3*K-2*D;
KDJ传统版没有用公式表达,其计算方法如下:

# 示例:放量缩量
放量显示买入,直到最近的一次缩量后显示卖出:
EVERY(VOL>=REF(VOL,1),N) AND HHV(V,M)==V,COLORRED;
EVERY(VOL<REF(VOL,1),N) AND LLV(V,M)==V,COLORGREEN;
连续N天放量,且量为最近M天的最大成交量
连续N天缩量,且量为最近M天的最小成交量
如果要过滤在卖点出现前有多个买点的话:
AA:=EVERY(VOL>=REF(VOL,1),N) AND HHV(V,M)==V;
BB:=EVERY(VOL<REF(VOL,1),N) AND LLV(V,M)==V;
AA AND BARSLAST(REF(AA,1))>BARSLAST(REF(BB,1)),COLORRED;
BB AND BARSLAST(REF(BB,1))>BARSLAST(REF(AA,1)),COLORGREEN;
# 示例:对应的板块的排名统计
N:=INSUM('MYFGBK','MACD',3,4);
DRAWTEXT_FIX(ISLASTBAR,0,0,0,GETNAMEOFCODE(1,FGBKZSCODE(N)));
CALCSTOCKINDEX(FGBKZSCODE(N),'MA',1);
INSORT('GNINSORT.2','KDJ',3,0);
当前股所属的第二个概念板块指数在所有概念中的KDJ指标第三个输出的排名
INSORT.横向统计
用法:INSORT(板块名称,指标名称,指标输出,升降序),
返回该股在板块成份股中某项指标输出数值的排序序号
例如:
INSORT('房地产','KDJ',3,0)表示该股的KDJ指标第三个输出即J之值在房地产板块中的排名,
最后一个参数为0表示降序排名.
第一个参数"板块名称"支持系统板块(上证A股,深证A股,沪深A股/全部A股,创业板,科创板,自选股,板块指数等),地区,行业(按系统设置的通达信二级或研究二级),概念,风格,指数,组合和自定义板块,且必须是板块名称字符串型数据。
第一个参数是常量字符串时,注意板块名称必须完全和保存在客户端的板块名称完全一致(支持HY.和GN.和MY.开头快速查找行业和概念和自定义板块,此函数计算有较大耗时,请慎用于画线指标),
如: INSORT('沪深A股','KDJ',3,0);
谨慎使用,运行相当耗时,可能引起电脑卡顿。
INSORT('HY.环境保护','KDJ',3,0);
快速查找到当前个股在环境保护行业中的kdj的第三个输出值的排名值。
第一个参数也可以是HYBLOCK等,某板块指数的STKNAME;
如:INSORT(HYBLOCK,'KDJ',3,0);获取当前个股在其所在行业板块成分股中的kdj的第三个输出值的排名值。
第一个参数为风格、概念板块这种一个股票对应有多种风格和概念板块的情况
如:
INSORT(GETNAMEOFCODE(1,FGBKZSCODE(1)),'KDJ',3,0);获取当前个股在其第一个风格板块成分股中的kdj的第三个输出值的排名值。
INSORT(GETNAMEOFCODE(1,GNBKZSCODE(1)),'KDJ',3,0);获取当前个股在其第一个概念板块成分股中的kdj的第三个输出值的排名值。
对于支持Level2行情的版本,若第一个参数为HYINSORT,则表示其所属行业板块指数在所有行业板块指数中的排名;
如:INSORT('HYINSORT','KDJ',3,0);
则表示其所属行业板块指数在所有行业板块指数中的kdj的第三个输出值的排名;
若为GNINSORT.?或FGINSORT.?,则表示其所属的第?个概念或风格板块指数在所有概念或风格指数中的排名
概念板块
如:如果在TCL科技个股界面就是ctrl+R里概念板块从上到下数,从1开始计数。
INSORT('GNINSORT.1','KDJ',3,0);
ctrl+R里看到的第一个TCL科技所属的概念板块在所有概念板块中的kdj的第三个输出值的排名
INSORT('GNINSORT.2','KDJ',3,0);
ctrl+R里看到的第二个TCL科技所属的概念板块在所有概念板块中的kdj的第三个输出值的排名
INSORT('GNINSORT.3','KDJ',3,0);
ctrl+R里看到的第三个TCL科技所属的概念板块在所有概念板块中的kdj的第三个输出值的排名
INSORT('GNINSORT.4','KDJ',3,0);
ctrl+R里看到的第四个TCL科技所属的概念板块在所有概念板块中的kdj的第三个输出值的排名
风格板块(同概念板块)
INSORT('FGINSORT.4','KDJ',3,0);
ctrl+R里看到的第四个TCL科技所属的风格板块在所有风格板块中的kdj的第三个输出值的排名
# 示例:筹码集中度选股
集中度70:=(COST(85)-COST(15))/(COST(100))*100;
集中度90:=(COST(95)-COST(5))/(COST(100))*100;集中度70<=11.00 OR
集中度90<=11.00
其他参考:
获利比例:WINNER(C)*100;
平均成本:COST(50);
集中度70:(COST(85)-COST(15))/(COST(100))*100;
M70成本上限:COST(85);
M70成本下限:COST(15);
集中度90:(COST(95)-COST(5))/(COST(100))*100;
M90成本上限:COST(95);
M90成本下限:COST(5);",
{获利盘选股}
A1:=COST(99);
EVERY(H>A1,N);
# 示例:对K线进行修饰


示例:如何实现双轴
使用STICKLINE柱图函数可以实现2种纵坐标系

例如同时显示持仓量和仓差柱(2种纵轴体系)
持仓量:VOLINSTK;
仓差:VOLINSTK-REF(VOLINSTK,1),NODRAW;
STICKLINE(仓差>0 AND C>REF(C,1),0,仓差,2,3),COLORRED;
STICKLINE(仓差>0 AND C<REF(C,1),0,仓差,2,3),COLORCYAN;
STICKLINE(仓差>0 AND C=REF(C,1),0,仓差,2,3),COLORGRAY;
STICKLINE(仓差<0 AND C>REF(C,1),0,仓差,2,3),COLORRED;
STICKLINE(仓差<0 AND C<REF(C,1),0,仓差,2,3),COLORCYAN;
STICKLINE(仓差<0 AND C=REF(C,1),0,仓差,2,3),COLORGRAY;
# 示例:取A股每天总股票数和平盘数
跌家数:"SH880005$OPEN"
涨家数:"SH880005$CLOSE"
平盘数:"SH880005$LOW"
总股票数:"SH880005$HIGH"
停牌的就是
"SH880005$HIGH"-"SH880005$OPEN"-"SH880005$CLOSE"-"SH880005$LOW"
# 关于叠加其它指标
叠加到主图的其它指标只是将副图中的线条画到主图上 由于座标系有可能完全不一样。比如你将MACD附加到主图上 MACD的纵坐标是-100到100左右 但主图K线是价格 所以只是将线条画上去 没有按纵坐标轴来对齐。我们叠加其它指标的这个功能 按的就是这种附加的模式。