cryptowatchからbitflyer(ビットフライヤー)のOHLCV(ローソク足)を時間範囲指定して取得する方法

cryptowatchからのOHLCV取得は、Rest APIを使用するためHTTP通信(requests)を行う必要があります。
requestsがインストールされていない場合は、以下のようにpipを使用してインストールしてください。他にも、numpy、pandasも計算や取得したデータ整形に使用しますのでなければインストールしてください。

$ pip install requests
$ pip install numpy
$ pip install pandas

こちらのコードを使えば、cryptowatchから取得する時間範囲を指定して取得するためcryptowatchの呼び出し制限に引っかかりにくくなります。
また、pandasでの整形表示のほか、cryptowatchでの取得形式は[1541674020, 756705, 757077, 756639, 756969, 211.58610546, 160138021.02853683]という感じで、足ごとにTIME、OPEN、HIGH、LOW、CLOSE、VOLUMEの情報が取得できますが、移動平均線MAなどを計算したい場合にはCLOSEのみのリストが欲しい時がありますので、それに合わせて分解転置してリスト形式で取得するようにもしました。

urlを変更することでbitflyer以外の取引所のOHLCVを取得することができます。
設定値(初期設定は1分足の最新時刻から10分間)を適宜変更して、以下のコードをコピペして実行してください。

import requests
import time
import numpy as np
import pandas as pd
from datetime import datetime, timedelta
import json

# 設定値
#--------
period = 60  # 取得するローソク足の時間指定(秒)
term = 10    # 取得するOHLCVデータ期間(分)

def getOHLCV(periods,getterm):

    url = 'https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc'
    unixTime = lambda y,m,d,h,min: int(time.mktime(datetime(y,m,d,h,min).timetuple()))
    # 現在時刻
    now = datetime.now() + timedelta(seconds=periods)
    y,m,d,h,min = now.year, now.month, now.day, now.hour, now.minute
    # 取得する差分時刻
    at = datetime.now() - timedelta(minutes=getterm)
    ay,am,ad,ah,amin = at.year, at.month, at.day, at.hour, at.minute
    
    query = {
        'periods':periods,
        'before':unixTime(y,m,d,h,min),
        'after':unixTime(ay,am,ad,ah,amin),
        }
    res = json.loads(requests.get(url,params=query).text)
    result = res["result"][str(periods)]
    return result

if __name__ == "__main__":
    
    # cryptowatchからOHLCV情報を取得
    res_ohlcv = getOHLCV(period,term)
    print(res_ohlcv)
    
    # Pandasで整形
    #---------------------------------------
    timestamp,open,high,low,close,volume = [],[],[],[],[],[]
    for i in res_ohlcv:
        timestamp.append(i[0])
        open.append(i[1])
        high.append(i[2])
        low.append(i[3])
        close.append(i[4])
        volume.append(i[5])
        
    df = pd.DataFrame({'TIME':timestamp,'OPEN':open, 'HIGH':high, 'LOW':low, 'CLOSE':close, 'VOLUME':volume})
    df.set_index('TIME',inplace = True) # TIMEをindexに指定
    print(df)
    
    # List形式でO/H/L/C/Vを個別分解して取得
    #---------------------------------------
    ohlcv_ary = np.asarray(res_ohlcv) # Numpy で行列取得
    ohlcv_aryT = ohlcv_ary.T # 転置して各要素に分解
    # OHLCVをそれぞれ個別に取得
    list_open = ohlcv_aryT[1]   # OPEN
    list_high = ohlcv_aryT[2]   # HIGH
    list_low = ohlcv_aryT[3]    # LOW
    list_close = ohlcv_aryT[4]  # CLOSE
    list_volume = ohlcv_aryT[5] # VOLUME
    print("OPEN  :",list_open)
    print("HIGH  :",list_high)
    print("LOW   :",list_low)
    print("CLOSE :",list_close)
    print("VOLUME:",list_volume)

実行すると、以下のようなに表示されるかと思います。

[[1541674020, 756705, 757077, 756639, 756969, 211.58610546, 160138021.02853683], [1541674080, 756979, 756994, 756729, 756774, 171.47014223, 129776263.95356181], [1541674140, 756768, 756831, 756641, 756782, 76.86325195, 58166012.75318729], [1541674200, 756783, 757043, 756783, 757043, 93.75858208, 70967235.82320642], [1541674260, 757044, 757510, 756857, 757304, 171.69064452, 129990604.10756028], [1541674320, 757304, 757600, 756513, 756949, 239.01402182, 180969337.1874491], [1541674380, 756934, 757066, 756600, 756700, 228.42929356, 172862703.28737897], [1541674440, 756700, 756788, 756608, 756761, 93.28746608, 70592772.91406853], [1541674500, 756744, 756817, 756211, 756234, 121.75317791, 92115951.69996502], [1541674560, 756189, 756600, 756076, 756513, 201.34018067, 152290300.00508207], [1541674620, 756541, 756570, 756399, 756570, 94.41838611, 71425112.22481966]]
             CLOSE    HIGH     LOW    OPEN      VOLUME
TIME
1541674020  756969  757077  756639  756705  211.586105
1541674080  756774  756994  756729  756979  171.470142
1541674140  756782  756831  756641  756768   76.863252
1541674200  757043  757043  756783  756783   93.758582
1541674260  757304  757510  756857  757044  171.690645
1541674320  756949  757600  756513  757304  239.014022
1541674380  756700  757066  756600  756934  228.429294
1541674440  756761  756788  756608  756700   93.287466
1541674500  756234  756817  756211  756744  121.753178
1541674560  756513  756600  756076  756189  201.340181
1541674620  756570  756570  756399  756541   94.418386
OPEN  : [756705. 756979. 756768. 756783. 757044. 757304. 756934. 756700. 756744.
 756189. 756541.]
HIGH  : [757077. 756994. 756831. 757043. 757510. 757600. 757066. 756788. 756817.
 756600. 756570.]
LOW   : [756639. 756729. 756641. 756783. 756857. 756513. 756600. 756608. 756211.
 756076. 756399.]
CLOSE : [756969. 756774. 756782. 757043. 757304. 756949. 756700. 756761. 756234.
 756513. 756570.]
VOLUME: [211.58610546 171.47014223  76.86325195  93.75858208 171.69064452
 239.01402182 228.42929356  93.28746608 121.75317791 201.34018067
  94.41838611]

getOHLCVのurlを変更することで各取引所に対応することができます。

■bitflyerFX
https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc

■bitflyer現物
https://api.cryptowat.ch/markets/bitflyer/btcjpy/ohlc

■BITMEX
https://api.cryptowat.ch/markets/bitmex/btcusd-perpetual-futures/ohlc

■Quoine Liguid
https://api.cryptowat.ch/markets/quoine/btcjpy/ohlc

■Bitfinex
https://api.cryptowat.ch/markets/bitfinex/btcusd/ohlc

※以下からcryptowatchから取得できる取引所や通貨のurlを探すことができます。
https://api.cryptowat.ch/pairs/btc