アノマリーを計算する。



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に直す。

・データの形式張った方がいいかも。

・通貨ペア名を別に入れる?



コメント

このブログの人気の投稿

アノマリーEAの評価版 ここからDLできます。

GMOクリック証券のヒストリカルデータをpythonでダウンロードしてみる

株価の日足をスクレイピングする。