pandas 计算kama 均线

发布时间 2023-07-07 00:10:59作者: 陳亞林

pandas 计算kama 均线

原址:Python Pandas Kaufman Adaptive Moving Average (KAMA)--在Pandas或Cython中进行递归计算 - IT宝库 (itbaoku.cn)

 1 import  pandas
 2 import pandas.stats.moments
 3 import numpy as np
 4 def kama(price, n=10, pow1=2, pow2=30):
 5     ''' kama indicator '''        
 6     ''' accepts pandas dataframe of prices '''
 7 
 8     absdiff = abs(price - price.shift(1) )    
 9 
10     erNum = ( price - price.shift(n) )
11     erDen = pandas.stats.moments.rolling_sum(absdiff,n)
12     ER = erNum / erDen
13     SC = ( ER*(2.0/(pow1+1)-2.0/(pow2+1.0))+2/(pow2+1.0) ) ** 2.0
14     
15     answer = np.zeros(SC.size)
16     N = len(answer)
17     first_value = True
18 
19     for i in range(N):
20             if SC[i] != SC[i]:
21                     answer[i] = np.nan
22             else:
23                     if first_value:
24                             answer[i] = price[i]
25                             first_value = False
26                     else:
27                             answer[i] = answer[i-1] + SC[i] * (price[i] - answer[i-1])
28     return answer
29     
30