0

シリーズのAverage True Range[ATR]の計算中に行き詰まりました。ATR は基本的に TrueRange[TR] の Exp Movin Avg です。

 TR is nothing but MAX of -
       Method 1: Current High less the current Low
       Method 2: Current High less the previous Close (absolute value)
       Method 3: Current Low less the previous Close (absolute value)

Pandas には組み込みの EMA 関数がありません。むしろ、加重移動平均である EWMA があります。

誰かが EMA の計算を手伝ってくれれば、それで十分です

      def ATR(df,n):
          df['H-L']=abs(df['High']-df['Low'])
          df['H-PC']=abs(df['High']-df['Close'].shift(1))
          df['L-PC']=abs(df['Low']-df['Close'].shift(1))
          df['TR']=df[['H-L','H-PC','L-PC']].max(axis=1)
          df['ATR_' + str(n)] =pd.ewma(df['TR'], span = n, min_periods = n)
          return df

上記のコードはエラーを出しませんが、正しい値も与えません。Excelで同じデータシリーズのATR値を手動で計算した場合と比較したところ、値が異なっていました

           ATR excel formula-
             Current ATR = [(Prior ATR x 13) + Current TR] / 14

             - Multiply the previous 14-day ATR by 13.
             - Add the most recent day's TR value.
             - Divide the total by 14

これは私がサンプルとして使用したデータシリーズです

           start='2016-1-1'
           end='2016-10-30'
           auro=web.DataReader('AUROPHARMA.NS','yahoo',start,end)
4

2 に答える 2