#!/usr/bin/env python # coding: utf-8 # # python-highcharts # # * [python-highcharts/candlestick-and-volume.ipynb at developer · kyper-data/python-highcharts · GitHub](https://github.com/kyper-data/python-highcharts/blob/developer/examples/ipynb/highstock/candlestick-and-volume.ipynb) # In[1]: import pandas as pd import requests from highcharts import Highstock #from highcharts.highstock.highstock_helper import jsonp_loader # In[2]: headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134' } r = requests.get('https://fx.minkabu.jp/api/v2/bar/USDJPY/daily.json?count=240', headers=headers) r.raise_for_status() r.json()[:10] # In[3]: df = pd.DataFrame(data=r.json(), columns=['time', 'open', 'high', 'low', 'close']) df.head() # In[4]: # [From Timestamps to Epoch](https://pandas.pydata.org/pandas-docs/stable/timeseries.html#from-timestamps-to-epoch) utc = pd.to_datetime(df['time'], unit='ms') utc3 = utc + pd.DateOffset(hours=3) epoch = (utc3 - pd.Timestamp("1970-01-01")) / pd.Timedelta('1ms') data1 = { 'time': epoch.astype('int64').values, 'open': df['open'].astype('float64').values, 'high': df['high'].astype('float64').values, 'low': df['low'].astype('float64').values, 'close': df['close'].astype('float64').values} columns1 = ['time', 'open', 'high', 'low', 'close'] df2 = pd.DataFrame(data=data1, columns=columns1) df2.head() # In[5]: H = Highstock() H.add_data_set(df2.values.tolist(), 'candlestick', '米ドル/円') options = { 'rangeSelector': { 'selected': 1 }, 'title': { 'text': '米ドル/円 daily' } } H.set_dict_options(options) H