2016-10-26 10 views
0

ATRは、指定された期間の真の範囲の平均です。真の範囲は、私は次のようでこれを計算している意味(高 - 低)である:PythonでのOHLCデータの平均真値域(ATR)の計算

df['High'].subtract(df['Low']).rolling(distance).mean() 

短期間(または上記の例の「距離」)が必要とされている場合しかし、ATRは非常にビクビクすることができ、すなわちでいくつかの数字の間に大きな散発的なギャップが現れる。

実際のATR方程式はこれを認識し、次の操作を行って、それを滑らか:

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

は、しかし、私は、すなわち、列幅の操作、私は上記のやったのと同じ方法で、これを実行する方法がわからないと思います。

私のオリジナルの方法からTRとATR(10)を含むサンプルデータ:

Date  Time   Open High Low  Close TR  ATR 
30/09/16 14:45:00+00:00 1.1216 1.1221 1.1208 1.1209 0.0013 0.0013 
30/09/16 15:00:00+00:00 1.1209 1.1211 1.1203 1.1205 0.0008 0.0013 
30/09/16 15:15:00+00:00 1.1205 1.1216 1.1204 1.1216 0.0012 0.0013 
30/09/16 15:30:00+00:00 1.1217 1.1222 1.1213 1.1216 0.0008 0.0013 
30/09/16 15:45:00+00:00 1.1216 1.1240 1.1216 1.1240 0.0025 0.0015 
30/09/16 16:00:00+00:00 1.1239 1.1246 1.1228 1.1242 0.0019 0.0015 
30/09/16 16:15:00+00:00 1.1242 1.1251 1.1235 1.1240 0.0016 0.0016 
30/09/16 16:30:00+00:00 1.1240 1.1240 1.1234 1.1236 0.0007 0.0014 
30/09/16 16:45:00+00:00 1.1237 1.1245 1.1235 1.1238 0.0009 0.0012 
30/09/16 17:00:00+00:00 1.1238 1.1239 1.1231 1.1233 0.0008 0.0012 
30/09/16 17:15:00+00:00 1.1233 1.1245 1.1232 1.1240 0.0013 0.0012 
30/09/16 17:30:00+00:00 1.1240 1.1242 1.1228 1.1230 0.0013 0.0013 
30/09/16 17:45:00+00:00 1.1230 1.1230 1.1221 1.1227 0.0009 0.0013 
30/09/16 18:00:00+00:00 1.1227 1.1232 1.1227 1.1232 0.0005 0.0012 
30/09/16 18:15:00+00:00 1.1232 1.1232 1.1227 1.1227 0.0005 0.0010 
30/09/16 18:30:00+00:00 1.1227 1.1231 1.1225 1.1231 0.0006 0.0009 
30/09/16 18:45:00+00:00 1.1231 1.1237 1.1230 1.1232 0.0007 0.0008 
30/09/16 19:00:00+00:00 1.1232 1.1233 1.1229 1.1231 0.0004 0.0008 
30/09/16 19:15:00+00:00 1.1231 1.1234 1.1230 1.1230 0.0004 0.0007 
30/09/16 19:30:00+00:00 1.1231 1.1234 1.1230 1.1234 0.0004 0.0007 
30/09/16 19:45:00+00:00 1.1233 1.1240 1.1230 1.1239 0.0010 0.0007 
30/09/16 20:00:00+00:00 1.1239 1.1242 1.1237 1.1238 0.0005 0.0006 
30/09/16 20:15:00+00:00 1.1238 1.1240 1.1235 1.1237 0.0005 0.0006 
30/09/16 20:30:00+00:00 1.1237 1.1238 1.1235 1.1235 0.0003 0.0005 
30/09/16 20:45:00+00:00 1.1235 1.1236 1.1233 1.1233 0.0003 0.0005 
30/09/16 21:00:00+00:00 1.1233 1.1238 1.1233 1.1237 0.0006 0.0005 
30/09/16 21:15:00+00:00 1.1237 1.1244 1.1237 1.1242 0.0008 0.0005 
30/09/16 21:30:00+00:00 1.1242 1.1243 1.1239 1.1239 0.0004 0.0005 
30/09/16 21:45:00+00:00 1.1239 1.1244 1.1236 1.1241 0.0008 0.0006 
+0

あなたはいくつかのサンプルデータと所望の出力を追加することはできますか? – jezrael

+0

jezのサンプルデータを追加 – cardycakes

答えて

1

TRを参照してください右の計算ではありません - ATRが、ここで私はそれを行うだろうかです:

ここで、α= 2 /(スパン+ 1)

df['ATR'] = df['TR'].ewm(span = 10).mean()

そうしないと、簡単にあなたが自分の平滑だ行うことができる必要がありますこのように:

df['ATR'] = (df['ATR'].shift(1)*13 + df['TR'])/14

Pandas ewm