アノマリーを計算する。
import pandas as pd
import numpy as np
df = pd.read_pickle('../pytester_data/pickle/' + "USDJPY_M1.pkl")
print(df)
#前回始値から今回始値までの変化量のカラムを作る。
df["open_change"] = np.nan
opens = df["open"].values
changes = df["open_change"].values
for n in range(1,len(opens)):
#単位:pips
changes[n] = 100 * (opens[n] - opens[n-1])
#changes[n] = 100 * (opens[n] - opens[n-1]) / opens[n-1]
print(df)
total = 0
with open("anomary_result.csv","w") as f:
for h in range(24):
for min in range(60):
#0時0分は前回からの変化量を取得しない。
if h==0 and min==0:
continue
df2 = df[(df["hour"]==h)&(df["minute"]==min)]
sample = len(df2)
sum = df2["open_change"].sum()
result = sum / sample
total += result
time = str(h) + ":" + str(min)
f.write(time + "," + str(round(result,3)) + "," + str(round(total,3)))
f.write("\n")
出力結果
頂点は9時55分の始値。
あとがき
終値基準で変化量を計算すると、
9:55の値は9:55の終値つまり9:56:00の値となり1分ずれてしまうから、
それを防ぐために始値で計算したけども、
終値でやった方がスマートに書けるのでそうするべきだった。
記事の後で直す部分
・pickleからだと不親切なのでcsvに直す。
・データの形式張った方がいいかも。
・通貨ペア名を別に入れる?
コメント
コメントを投稿