指标说明
ATR又称 Average true range平均真实波动范围,简称ATR指标,是由J.Welles Wilder 发明的,ATR指标主要是用来衡量市场波动的强烈度,即为了显示市场变化率的指标。 首先提出的,这一指标主要用来衡量价格的波动。因此,这一技术指标并不能直接反映价格走向及其趋势稳定性,而只是表明价格波动的程度。
计算公式
t——当日;
n——时间长度;
Ci——第i日的收盘价;
Hi——第i日的最高价;
Li——第i日的最低价。
计算公式:
均幅指标
均幅指标
其中:
TRi = max(Hi,Ci-1)-min(Li,Ci-1)
注:一般取n=14
,m=6。
'''
作者:Leo
微信:470770753
名称:ATR指标
'''
class ATR():
def __init__(self,span):
"""
:param span:int,ATP周期数.
TR : MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR : MA(TR,N);
"""
self._span=span
self._data_list=[]
self._TR_list=[]
def cal(self,HIGH,LOW,CLOSE):
"""
:param HIGH: 最高价
:param LOW: 最低价
:param CLOSE: 收盘价
:return: ATR结果
"""
self._data_list.append([HIGH,LOW,CLOSE])
atr_result=0
if len(self._data_list)>1:
self._TR_list.append(max(max(HIGH-LOW,abs(self._data_list[-2][2]-HIGH)),abs(self._data_list[-2][2]-LOW)))
if len(self._TR_list)<self._span:
atr_result=np.mean(self._TR_list)
else:
atr_result = np.mean(self._TR_list[-self._span:])
return atr_result