K 线形态 - 均线粘合
逻辑说明:
多条移动平均线(如 5 日、10 日、20 日、60 日)在一段时间内相互纠缠,聚集在一个很小的价格区间内。这代表市场在一定时期内成本高度集中,是多空力量平衡的体现,通常预示着即将出现大幅度的方向性选择(变盘)。
突破的界定:
向上突破:收盘价有效站稳在均线粘合区间的上轨(即所有均线的最大值)之上。
向下跌破:收盘价有效跌破在均线粘合区间的下轨(即所有均线的最小值)之下。
如何提高突破的有效性(过滤假信号):
K 线实体确认:要求突破日是一根中阳线或大阳线(对于上破)或中阴线或大阴线(对于下破)。
成交量确认(极其重要):突破时必须伴随成交量的显著放大。没有成交量支持的突破,很可能是假信号。
计算公式:
计算多条均线的最大值和最小值(缺省为 5,10,20,60):ma_upper_band=max(MA5, MA10, MA20, MA60),ma_lower_band =min(MA5, MA10, MA20, MA60)
判断最大值和最小值之间的差距是否小于一个阈值(例如,股价的 3%,通过参数控制):(ma_upper_band - ma_lower_band) / 收盘 < 0.03
上破:收盘 >ma_upper_band && 收盘 > 开盘 *(1+0.02) (阈值通过参数控制)
下破:收盘 <ma_lower_band && 收盘 < 开盘 *(1-0.02) (阈值通过参数控制)
成交量放大:成交量 > 成交量 [-19:0].avg()*1.5 (阈值通过参数控制)
返回值:
当均线粘合时,出现上破且成交量放大,返回 1,表示后期持续看涨;
当均线粘合时,出现下破且成交量放大,返回 -1,表示后期持续看跌;
否则返回 0
指标参数:
$y |
输出列名 |
n1 |
周期 1,缺省 5 |
n2 |
周期 2,缺省 10 |
n3 |
周期 3,缺省 20 |
n4 |
周期 4,缺省 60 |
k1 |
均线粘合阈值,缺省 0.03 |
k2 |
上下突破阈值,缺省 0.02 |
k3 |
成交量放大比率,缺省 1.5 |
函数代码:
A |
B |
|
1 |
func MA_Squeeze (A,$y,n1,n2,n3,n4,k1,k2,k3) |
=A.derive@o(收盘 [1-n1:0].avg():MA1, 收盘 [1-n2:0].avg():MA2, 收盘 [1-n3:0].avg():MA3, 收盘 [1-n4:0].avg():MA4) |
2 |
=A.derive@o(max(MA1,MA2,MA3,MA4):ma_upper_band,min(MA1,MA2,MA3,MA4):ma_lower_band) |
|
3 |
=A.run(if((ma_upper_band - ma_lower_band) / 收盘 <k1 && 收盘 >ma_upper_band && 收盘 > 开盘 *(1+k2) && 成交量 > 成交量 [-19:0].avg()*k3:1, (ma_upper_band - ma_lower_band) / 收盘 <k1 && 收盘 <ma_lower_band && 收盘 < 开盘 *(1-k2) && 成交量 > 成交量 [-19:0].avg()*k3:-1; 0):${y}) |
|
4 |
=A.alter(;MA1,MA2,MA3,MA4,ma_upper_band,ma_lower_band) |
举例:
调用脚本计算浦发银行 2024 年的均线粘合:
A |
||
1 |
… |
/计算出源数据 |
2 |
=A1.derive(:MA_Squeeze) |
/增加要返回的指标字段 |
3 |
=MA_Squeeze(A2, MA_Squeeze, 5,10,20,60, 0.03, 0.02, 1.5) |
/调用函数计算指标 |
运行效果: