量化策略布林带解读
一、布林带定义
布林带是基于移动平均线和标准差进行计算的,核心逻辑是通过统计学原理界定价格的波动范围。布林带由三条线构成,中轨线,上轨线和下轨线。其中,中轨线反映价格的平均趋势,上轨线与下轨线分别界定价格的波动边界。
二、布林带计算公式
通常采用N日移动平均线来计算中轨线,N通常取20。计算公式为:
MB=1N∑i=1NCi
MB=\frac{1}{N}\sum_{i=1}^{N}C_i
MB=N1i=1∑NCi
其中,CiC_iCi为收盘价,N为计算周期。
上轨线(UB)和下轨线(MB)则是分别在中轨线基础上加减K倍的标准差,一般K=2。
这个2倍标准差来源于统计学中的正态分布,约95%的价格会落在该区间内,可以界定价格的正常波动范围。这个95%和显著性检验里面的5%的原理是一致的,还有3西格玛和6西格玛区间,都是来源于这个正态分布。
三、布林带的意义
1、衡量市场的波动性
当布林带的宽度,即上轨线和下轨线之间的距离可以直接反映市场波动程度。
当布林带开口扩大,即宽度增加时,说明价格波动加剧,市场可能进入强势趋势,例如持续上涨或下跌。
当布林带收口变窄时,即宽度减小,说明价格波动减弱,市场可能进入盘整阶段,即将迎来趋势的转折。
2、识别超卖和超买状态
当价格触及或突破上轨线时,说明价格处于超买状态,可能面临回调压力。
当价格触及或突破下轨线时,说明价格处于超卖状态,可能存在反弹的机会。
3、提供支撑和阻力参考
布林带的上轨线经常作为阻力位,价格上涨至此后可能遇阻回落。下轨线常作为支撑位。
四、python实现
尽管实现起来不难,不过还是有第三方算法库可以帮忙实现
import talib
upper_band, middle_band, lower_band = talib.BBANDS(close, # 输入的价格序列(通常为收盘价,需为numpy数组或pandas Series的.values属性)timeperiod=20, # 计算移动平均的周期(默认20,代表过去20个周期的平均价格)nbdevup=2, # 上轨线的标准差倍数(默认2,用于计算上轨:中轨+2×标准差)nbdevdn=2, # 下轨线的标准差倍数(默认2,用于计算下轨:中轨-2×标准差)matype=0 # 移动平均类型(默认0,0=SMA(简单移动平均),1=EMA(指数移动平均),2=WMA(加权移动平均)等)
)
平滑类型具体来说有以下几种:
•0:SMA(简单移动平均):算术平均,最常用,对所有数据赋予同等权重;
缺点:因为所有数据的权重相同,SMA对近期价格变化反应略显迟缓,例如说价格突破时,趋势可能已经运行了一段时间,具有滞后性。为了改进这个问题,于是出现了下面的方法。
•1:EMA(指数移动平均):近期数据权重更高,更敏感于价格变化;
•2:WMA(加权移动平均):按时间顺序赋予递增权重(近期数据权重最大);
•3:DEMA(双指数移动平均):进一步平滑EMA,减少滞后性;
•4:TEMA(三重指数移动平均):更彻底地消除滞后性,适用于高频交易。