概要
前回は、このサイトのFXデータをPythonでローソク足表示させてみました。データは1分足のものを使っていましたが、任意の分足に変換したいことがあったので、その実装コードを残しておきます。
環境
前回と同じく以下です。
- Python 3.6 on Anaconda
 - Jupiter notebook on Anaconda
 
1分足データ表示
このサイトのHISTDATA_COM_ASCII_EURJPY_M1_201911.zipをグラフ表示します。データダウンロード後、以下を実行させて下さい。
import plotly.graph_objects as go
import pandas as pd
from datetime import datetime
df_one = df["2019-11-18": "2019-11-20"]
df_show = df_one
fig = go.Figure(data=[
    go.Candlestick(
        x=df_show.index,
        open=df_show.Open,
        high=df_show.High,
        low=df_show.Low,
        close=df_one.Close
    )
])
fig.show()
1分足から5分足に変換
以下でresampleを使って5分足に変換出来ます。rateを10T、1Hなど変更すれば、任意の足に変換可能です。
df_five = pd.DataFrame()
rule = "5T"
df_five["Open"] = df_one["Open"].resample(rule).first()
df_five["Close"] = df_one["Close"].resample(rule).last()
df_five["High"] = df_one["High"].resample(rule).max()
df_five["Low"] = df_one["Low"].resample(rule).min()
5分足データ表示
以下を実行して下さい。
df_show = df_five
fig = go.Figure(data=[
    go.Candlestick(
        x=df_show.index,
        open=df_show.Open,
        high=df_show.High,
        low=df_show.Low,
        close=df_show.Close
    )
])
fig.show()
一分足と5分足で違いがよくわからないので、長さと先頭を見比べて見ましょう。
1分足は、、、
print(df_one.shape)
print(df_one.head())
'''
output: 
(4319, 5)
                        Open     High      Low    Close  Volume
datetime                                                       
2019-11-18 00:00:00  120.360  120.371  120.360  120.368       0
2019-11-18 00:01:00  120.368  120.372  120.360  120.360       0
2019-11-18 00:02:00  120.361  120.362  120.360  120.360       0
2019-11-18 00:03:00  120.360  120.376  120.360  120.376       0
2019-11-18 00:04:00  120.377  120.380  120.374  120.376       0
'''
5分足は、、、
print(df_five.shape)
print(df_five.head())
'''
output:
(864, 4)
                        Open    Close     High      Low
datetime                                               
2019-11-18 00:00:00  120.360  120.376  120.380  120.360
2019-11-18 00:05:00  120.376  120.382  120.387  120.369
2019-11-18 00:10:00  120.381  120.361  120.381  120.352
2019-11-18 00:15:00  120.361  120.354  120.365  120.341
2019-11-18 00:20:00  120.354  120.349  120.354  120.341
'''
たいたい5分の一のサイズになっていて、刻みも5分になってますね。いいのではないでしょうか。
以上!

