均线角度不是均线的固有属性。通达信均线角度公式算的是一个派生量:在均线上取两个点,用两点之间的价差除以相隔的根数得到斜率,再把斜率换算成角度。纵轴刻度、取点位置、均线周期,这三处设定里任意一处改了,同一段走势给出的角度就跟着改。把它当成均线自带的、可以横向比较的数值,误差就是从这里开始的。
下面按斜率从哪来、纵轴刻度、取点窗口、阈值性质、与相邻概念的边界五节展开。函数名以本机公式编辑器的函数列表为准。
一、斜率从哪来:价差除以相隔的根数
公式里能直接取到的量是均线值本身,写成 MA(C, N)。它是一条价格序列,不带角度。角度要自己从这条序列上取两个点算出来:记起点值 P1、终点值 P2,两点在横轴上相隔 K 根,斜率就是 (P2 - P1) / K。
这个斜率的量纲是价格每根,分子是价格差,单位是元;分母是根数,单位是根,它还不是角度。把斜率送进反正切做一次换算,输出才落到角度这个刻度上。这一步属于三角函数,与均线没有关系,均线只负责提供那两个价格值。
{ 均线只给价格,角度要自己换算 }
N := 20; { 均线周期 }
K := 5; { 两点相隔的根数 }
P1 := REF(MA(C, N), K); { 起点:K 根之前的均线值 }
P2 := MA(C, N); { 终点:当根的均线值 }
SLOPE : (P2 - P1) / K; { 斜率,量纲是价格每根 }
{ 角度:对斜率取反正切换算,函数名以本机公式编辑器的函数列表为准 }
{ K 从 5 换成 10,同一个价差算出的斜率减半,换算出的角度跟着变 }
量纲是价格每根,这一点决定了斜率不能跨标的直接比较。价格水平高的标的,同样的倾斜程度会给出更大的斜率数值。两条均线的斜率摆在一起比之前,先确认它们是不是同一个价格量级;或者改用相对口径,把价差先除以均线值本身再做反正切换算,让输出与价格水平脱钩。
换算成角度之后还有一层性质:反正切不是线性的。斜率从 0 到 1、从 1 到 2,这两段同样的增量换来的角度增量不一样,后一段被压缩。角度看着比斜率温和,代价是数值较大的一段分辨率变低。比较两种形态时,先想清楚比的是斜率还是角度。
二、纵轴刻度改了,角度跟着改
同一根均线,换一个纵轴刻度就换一个角度,这是通达信均线角度公式里一处容易被误读的地方。主图的纵轴不固定,它按可见区间里的价格范围自适应:区间里价格跨度变小,纵轴被拉伸,同一条均线在图上画得更陡;图形窗口拉高,纵向比例变大,倾斜也跟着变。
图上量出来的倾斜与公式输出的斜率不是同一个量。斜率取的是价格序列里的两个数,受价格水平与纵轴口径影响;图上那条线画成多陡,则由纵轴刻度单独决定。两者混用,就会出现公式算出的角度与图上看着的倾斜对不上这类情况。
坐标类型是一处更直接的开关。主图右键菜单里能切换普通坐标与对数坐标:普通坐标按价格差等距铺开,对数坐标按比例等距铺开。一条在普通坐标下笔直的均线,切到对数坐标之后会弯,线段的倾斜随位置变化。坐标类型的完整说明另有条目,这里只取一句:纵轴口径不动,角度就没有可比性。
{ 斜率只看价格序列,与绘图刻度无关 }
K := 5;
SLOPE : (MA(C, N) - REF(MA(C, N), K)) / K;
{ 换坐标类型、换窗口高度,这个数不变 }
{ 但把它当作图上的角度去读,读数会随纵轴刻度而变 }
{ 对数坐标下价格轴按比例铺开,同一条均线在图上会弯 }
{ 核对角度之前先记下图上用的是哪一种坐标类型 }
核对顺序定成这样:先确认图上坐标类型,再看可见区间的价格跨度有没有被改过(缩放、拖拽、切换标的都会改),最后才比较两个角度值。前两处不一致,比较不成立。
三、取点窗口取谁:K 的三种取法
两点之间的间隔 K 是这类算式里第二个可调项。取法有三种,它们给出的角度与含义都不相同。
| 取法 | 写法 | K 的大小 | 反映的是哪一段 |
|---|---|---|---|
| 最近两根 | REF(MA(C,N),1) 与 MA(C,N) | 1 | 当根的瞬时倾斜,对最新一根的跳动敏感 |
| 固定回溯 | REF(MA(C,N),K) 与 MA(C,N) | K 由使用者设定 | 一段窗口的平均倾斜,K 越大越平滑 |
| 首尾两点 | 窗口起点与终点各取一个均线值 | 等于窗口长度 | 整段行情的总体倾斜,段内拐点被抹平 |
三种取法不能并列比较。同一段行情,K 取 1 得到的角度在盘中会随最新一根跳动,K 取 10 得到的是更平缓的数。
{ 三种取法,K 写在明处 }
N := 20;
ANG_1 : (MA(C, N) - REF(MA(C, N), 1)) / 1; { 最近两根 }
ANG_K : (MA(C, N) - REF(MA(C, N), 10)) / 10; { 固定回溯 10 根 }
{ 首尾两点:起点与终点各取一个均线值,除以两者相隔的根数 }
{ 三种取法的 K 不同,输出不能直接比大小 }
还有一处边界在窗口的最左侧。REF 向前取不到值时,最左边的 K 根没有可用的均线值,那一段的输出是空值或者不成立,图上要从有值的地方开始看。换了 K,空段的长度跟着变,统计区间要相应往后挪。
取点还有一处容易忽略的地方:终点取当根还是取上一根。盘中当根的均线值还在变,用当根算出的角度会一直跳;把终点固定在上一根,输出在同一根 K 线内才稳定。
取哪一种取决于要回答的问题:看当根动量用最近两根,看一段窗口的倾斜用固定回溯,比较两段行情的总体方向用首尾两点。定下来写进注释,换人复算时才知道当时取的是哪一种。
四、参数与阈值的性质:阈值是设定值
通达信均线角度公式里那个角度阈值,是使用者填进去的设定值,不是从行情数据里算出来的统计结论。填 45 表示输出大于 45 时标一个记号,这个 45 与行情没有固定关系。
阈值会漂的地方在两处。一是均线周期 N:N 越大,均线越平滑,相邻点之间的斜率越小,同一个 45 在不同 N 上命中的形态不同。二是坐标类型:对数坐标与普通坐标下,同一条均线的图上倾斜不同,如果把阈值当成图上的角度来定,换坐标之后它就对不上了。
{ 阈值是设定值,写在公式开头 }
TH := 45; { 设定的角度阈值,不是统计结果 }
MARK : IF(ANG_K > TH, 1, 0);
{ 换 N 或换坐标类型,同一个 TH 对应的形态就变 }
{ 阈值独占一处,改的时候只动这一行 }
统计口径的结论要走另一条路:先把一段时间里每一根的角度算出来,再看某个数值落在这条序列的哪个位置,这样得到的是分位数一类的描述。设定值先定、统计值后算,两者不能互相充当证据。要比较两套参数,先固定 N、固定 K、固定坐标类型,只改一个量,输出变化才能归到那一个量上。
五、与相邻概念的边界
均线方向与角度不是一回事。方向只看两个点谁大谁小:终点值大于起点值记成上行,小于记成下行,是二值判断;角度是带大小与正负的连续量。两条同向上行的均线,角度可以是 10,也可以是 40,方向相同而倾斜差别很大。方向的定义里没有倾斜程度,用方向替代角度,等于把大小信息丢掉。
均线粘合、回踩均线、突破年线这三个判定都不需要角度参与。均线粘合判定的是多条均线之间的离散程度,用的是极差或者标准差;回踩均线判定的是价格与均线之间的触碰与收回,用的是价格与均线值之间的距离;突破年线判定的是穿越与状态,用的是价格与某条长周期均线的位置关系。三个判定都把均线当成一条位置线用,取的是它的值,不是它的倾斜。
角度也有答不了的问题。角度描述的是倾斜,不含均线的位置,也不含两条均线之间的距离。把角度条件与位置条件写在一条式子里,出结果时先分清是哪一部分起的决定作用。
本篇的落点只有一个量:角度。取两点算出斜率、把斜率换算成角度、再套一个设定阈值,这三步之外的东西都归到别的题目里。换 N、换窗口、换坐标类型都会改变输出,通达信均线角度公式的用处是把这几处设定写进公式与注释,让同一次输出能被复算出来,而不是给出一个可以四处搬用的数值。
站内还有 指标原理与参数 讲取数口径与参数性质,公式编写教程 讲把这类算式写成指标并挂到图上,指标回测与风险验证 讲把设定值写进记录之后怎么复算,可对照查看。
本文只作技术研究口径,不涉及也不构成对任何标的的判断。
