均线的计算过程是公开的:把最近若干根的收盘价加起来,除以根数。通达信回踩均线公式要处理的不是这条均线本身,而是价格与均线之间的那次接触。接触这件事在公式里没有现成的函数可以直接调用,需要先把它拆成几个能逐根判断的条件。
下面按「拆成三个可判定的量、容差怎么给、触碰与收回分开写、均线方向、失效条件、核对方法、检查清单」七步讲。涉及的都是条件写法与数据口径,不涉及任何方向判断;文中函数名以通达信公式编辑器内附的函数说明为准。
一、回踩要落成三个可判定的量
回踩这个词描述的是一个过程,公式只能处理单根上的条件。把过程拆开,落在公式里是三件事:接触发生之前价格处在均线之上,当根与均线发生了接触,接触之后价格仍然站在均线上方。
{ 三件事的写法 }
MA20 := MA(CLOSE, 20);
此前在上方 := REF(CLOSE, 1) > MA20;
发生接触 := LOW <= MA20 * (1 + 容差比例);
仍然在上方 := CLOSE > MA20;
回踩条件 := 此前在上方 AND 发生接触 AND 仍然在上方;
{ 三个条件缺一个,得到的就是别的东西 }
只写第二件事,得到的是「触碰」而不是「回踩」:价格与均线接触的每一根都会被命中,其中包含接触之后跌破均线的位置。只写第一件与第二件,得到的是「从上方接近均线」,它不关心接触之后发生了什么。三个条件一起写,命中范围才与「回踩」这个词的日常含义对得上。
二、容差用价格还是用比例
「接触」需要给一个容差,因为最低价很少正好等于均线值。容差有两种给法,适用场合不同。
| 容差写法 | 表达方式 | 适用与代价 |
|---|---|---|
| 价格容差 | 最低价落在均线上下固定的金额区间内 | 写法直观,但同一个金额在高价与低价品种上宽窄不同 |
| 比例容差 | 最低价与均线的偏离不超过均线的固定比例 | 跨品种可比,但比例给小了会漏掉长影线位置 |
比例容差更适合用来做跨品种的对照,因为它的宽窄随价格水平自动缩放。给比例时要注意一件事:容差既决定了能命中哪些接触位置,也决定了哪些位置被排除。比例给得过紧,影线刚好差一点没碰到的位置不会被命中;给得过宽,价格离均线还有一段距离的位置也会被算作接触。核对的办法是把均线与最低价画在同一副图上,人工数一遍应当命中的位置,再看公式输出对不对得上。
三、触碰判定与收回判定分开写
通达信回踩均线公式的三个条件写在一个表达式里能得出结果,但拆成三条输出更容易核对。拆开之后,副图上能同时看到「接触」与「仍然在上方」两条线,哪一步没成立一眼能分辨。
{ 拆成三条输出,便于逐根核对 }
MA20 : MA(CLOSE, 20);
接触 : LOW <= MA20 * (1 + 容差比例);
在上方 : CLOSE > MA20;
{ 三条线放在同一个副图上,命中位置按逐根对照 }
拆开还有一个用处:可以观察两者的先后关系。接触发生在当根,收回判定也落在当根;如果希望收回判定往后延迟若干根再确认,把收回条件写成对后续根数的判断即可。写成一条表达式时,这种时序上的调整需要整段重写,拆开之后只改其中一条。
四、均线方向作为附加条件
接触发生时均线是向上、走平还是向下,会让同一段接触表现出不同的性质。把方向作为附加条件,就是给均线的斜率加一个判断。
{ 均线方向的判断 }
均线向上 := MA20 > REF(MA20, 1);
回踩且均线向上 := 回踩条件 AND 均线向上;
{ 方向条件加上之后,命中范围收窄到均线仍在抬升的那一段 }
加上方向条件之后命中的位置数量会下降,这是预期内的:它排除了均线走平与向下阶段的接触。收窄之后要重新核对容差,因为可命中的位置变少,容差是否合适不再能用总数来判断,需要逐根看哪些位置被方向条件挡掉了。均线走平阶段的价格来回穿越均线,这部分位置本来就不属于回踩的形态范围。
均线方向还有一个写法上的选择:用均线自身的比较式,还是用连续上升天数的统计函数。前者判断的是当根与前一根的关系,后者判断的是连续根数。两者在均线刚拐头的位置上会给出不同结果,选哪一种取决于要描述的是「均线在抬升」,还是「均线已经连续抬升若干根」。
五、失效条件:哪些位置不该被命中
通达信回踩均线公式的判定失真位置可以按来源分两类:一类来自数据本身,比如均线启动期、除权位置与停牌缺口;一类来自判定写法,比如只写接触不写收回。两类要分开处理,前一类靠范围排除,后一类靠补条件。
| 位置 | 为什么判定会失真 | 处理方式 |
|---|---|---|
| 均线启动期 | 根数不足窗口长度,均线值仍在随新增数据变化 | 用根数下限把这一段排除在范围之外 |
| 除权除息位置 | 价格序列在除权处跳变,均线随之出现台阶 | 按复权口径取数后重算一遍对照 |
| 停牌区间 | 停牌期间不产生新的 K 线,均线窗口跨越了时间缺口 | 查出缺口位置,单独核对这一段 |
| 长期横盘 | 价格与均线反复交错,接触判定连续命中 | 叠加均线方向条件收窄命中范围 |
| 接触后跌破 | 只写接触不写收回,跌破位置也会被计入 | 补上收回判定 |
六、核对方法
核对分两步。第一步是逐根对照:把均线与最低价画在同一个副图或主图上,人工找出应当算作接触的根,与公式输出的接触线逐根比对。差异集中在影线位置时,调容差;差异集中在均线走平位置时,加方向条件。
逐根对照之前先把范围缩小。命中的根数多时,先按均线方向分组,看命中是否集中在均线走平的一段;再看接触判定用的是最低价还是收盘价。范围缩小之后,人工数的根数与公式输出对不上的地方会集中到少数几根,调整容差时目标就明确了。
第二步是抽查复算:挑几根命中的位置,取出该根的收盘价与最近若干根收盘价,手工算出均线值,再看最低价与均线值的偏离是否落在容差之内。这一步同时验证了窗口长度与容差两个设定,比单看命中总数更能发现问题。条件命中的稳定性可以用回落统计的方式再验一遍,口径参考 指标回测与风险验证 一栏。
七、检查清单
- 均线窗口长度写清了吗,参数是外置还是写死在公式里。
- 容差用的是价格还是比例,取值能否说清依据。
- 接触判定用的是最低价还是收盘价,与你要问的问题是否一致。
- 收回判定写了吗,用的是当根还是延迟若干根。
- 均线方向条件加了吗,加与不加的命中差异核过没有。
- 均线启动期、除权位置、停牌缺口这三处排除掉了没有。
把上面的内容收一下:通达信回踩均线公式的写法不复杂,难点在把过程拆成三个条件并各自核对。顺序是先定窗口与容差,再写接触与收回,最后补方向与排除。接触位置的形态拆解可以对照 量价形态与信号拆解 一栏,均线本身的参数口径见 通达信指标原理与参数 一栏。
文中函数名与写法为通用描述;通达信不同版本与券商定制版对均线函数的参数形式、复权处理与根数不足时的取值方式存在差异,具体写法请以你所用版本公式编辑器内附的函数说明为准。本文只讨论条件写法与数据口径,不构成任何投资建议。
