2.4 EMA(指数移动平均线)
2.4.1 EMA 概念
EMA(Exponential Moving Average) 指数移动平均值是以指数式递减加权的移动平均,是一种趋势指标,要了均价趋势快慢的时候,用 EMA 更稳定。
EMA 的计算方法是一个递归公式
EMA(n)= 平滑系数 * 当前价格 +(1- 平滑系数)*EMA(n-1)
n 表示 ema 的周期,有短期、中期、长期,平滑系数 =2/(n+1)
在没有昨日 EMA 的情况下,该日的 EMA 用当日的收盘价代替,一般用第一天的收盘价为 EMA 的初始值
显然时间越靠近当今时刻,即 n 越小,它的权重越大,说明 EMA 函数对近期的价格加强了权重比,比 MA 更能及时反映近期价格波动情况。
以代码 600000 的股票数据为例,计算 5 日 EMA 值
A | |
---|---|
1 | 5 |
2 | =T(“D://600000.csv”).select( 收盘价 >0) |
3 | >k=2/(A1+1) |
4 | =A2.sort(日期) |
5 | =A4.new(日期, 收盘价,if(#>1,k* 收盘价 +(1-k)*ema[-1], 收盘价 ):ema) |
A3 计算平滑系数 k
A4 对 A2 按日期升序排序
A5 代入递归公式计算 ema 值,其中 ema[-1] 表示前日的 ema 值。
2.4.2 EMA 常见形态
EMA 金叉:EMA 短线上穿 EMA 长线
EMA 死叉:EMA 短线下穿 EMA 长线
EMA 多头:EMA 短线在 EMA 长线上方
EMA 空头:EMA 短线在长线下方
以代码 600000 的股票为例,分析其 EMA 形态,取短线周期为 5 日,长线周期为 20 日
A | |
---|---|
1 | [5,20] |
2 | =T(“D: //600000.csv”).select(收盘价 >0) |
3 | =A1.(2/(~+1)) |
4 | =A2.sort(日期) |
5 | =A4.new(日期, 收盘价,if(#>1,A3(1)* 收盘价 +(1-A3(1))*ema 短线 [-1], 收盘价 ):ema 短线,if(#>1,A3(2)* 收盘价 +(1-A3(2))*ema 长线 [-1], 收盘价 ):ema 长线) |
6 | =A5.derive(if(ema 短线 >ema 短线 [-1] && ema 短线 >ema 长线 && ema 短线 [-1]<ema 长线 [-1],1,0):ema 金叉) |
7 | =A6.derive(if(ema 短线 <ema 短线 [-1] && ema 短线 <ema 长线 && ema 短线 [-1]>ema 长线 [-1],1,0):ema 死叉) |
8 | =A7.derive(if(ema 短线 >ema 长线,1,0):ema 多头,if(ema 短线 <ema 长线,1,0):ema 空头 ) |
9 | |
10 | =A8.select(日期 >date(“2022-02-01”) ) |
11 | =canvas() |
12 | =A11.plot(“DateAxis”,“name”:“x”) |
13 | =A11.plot(“NumericAxis”,“name”:“y”,“location”:2,“autoRangeFromZero”:12) |
14 | =A11.plot(“Line”,“markerStyle”:0,“lineColor”:-16777216,“axis1”:“x”,“data1”:A10.( 日期),“axis2”:“y”,“data2”:A10.(ema 短线)) |
15 | =A11.plot(“Line”,“shadow”:true,“markerStyle”:0,“lineColor”:-65536,“axis1”:“x”,“data1”:A10.( 日期),“axis2”:“y”,“data2”:A10.(ema 长线)) |
16 | =A11.plot(“Legend”,“name”:"ema 短线",“legendText”:"ema 短线",“legendType”:3,“legendLineColor”:-16777216,“legendFillColor”:[“ChartColor”,0,true,-16777216,-16777216,0]) |
17 | =A11.plot(“Legend”,“name”:“ema 长线”,“legendText”:“ema 长线”,“y”:0.3,“legendType”:3,“legendLineColor”:-65536,“legendFillColor”:[“ChartColor”,0,true,-65536,-65536,0]) |
18 | =A11.draw@p(800,400) |
A3 计算平滑系数 k
A4 将 A2 按日期升序排列
A5 用递归公式计算 ema 短线和长线
A6 判断每日是否出现金叉,是返回 1,否返回 0。判定条件:EMA 短线 (t) > EMA 短线 (t-1) and EMA 短线 (t) –EMA 长线 (t)> 0 and EMA 短线 (t-1) – EMA 长线 (t-1)< 0
A7 判断每日是否出现死叉,是返回 1,否返回 0。判定条件:EMA 短线 (t) <EMA 短线 (t-1) and EMA 短线 (t) –EMA 长线 (t)< 0 and EMA 短线 (t-1) – EMA 长线 (t-1)> 0
A8 判断每日是否多头和空头。判定条件 EMA 短线 (t) > EMA 长线(t) 为多头,EMA 短线 (t) <EMA 长线(t) 为空头。
A10-A18 用图形化方式来表示 5 日 EMA 和 20 日 EMA 走势
A10 取画图的时间段,2022 年 2 月 1 日至 4 月 13 日
A14 定义 EMA 短线
A15 定义 EMA 长线
A16 A17 定义图例
A18 画图
圈 1EMA 短线下穿长线为死叉,圈 2EMA 短线上穿长线为金叉
圈 1 和圈 2 之间基本是空头,圈 2 之后为多头