Skip to content

Instantly share code, notes, and snippets.

@nagishin
Last active June 9, 2021 20:15
Show Gist options
  • Save nagishin/32df2846946ad52364c71d6a95b74e9a to your computer and use it in GitHub Desktop.
Save nagishin/32df2846946ad52364c71d6a95b74e9a to your computer and use it in GitHub Desktop.
trades_to_ohlcv.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "trades_to_ohlcv.ipynb",
"provenance": [],
"collapsed_sections": [],
"authorship_tag": "ABX9TyPl+GjtSrmmeZAFAAKqYGiH",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/nagishin/32df2846946ad52364c71d6a95b74e9a/trades_to_ohlcv.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "NZv385qywjvy"
},
"source": [
"## bybitの日別約定履歴csvを取得"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 450
},
"id": "CXzvd1mhwhnt",
"outputId": "fd2d2215-0b49-4ed3-ac3b-dbc37e84b862"
},
"source": [
"from datetime import datetime\n",
"import pandas as pd\n",
"\n",
"symbol = 'BTCUSD' # 通貨ペア\n",
"date = '2021-05-25' # 取得日\n",
"\n",
"# 約定履歴csvを取得してDataFrameに読み込み\n",
"df_trade = pd.read_csv(f'https://public.bybit.com/trading/{symbol}/{symbol}{date}.csv.gz',\n",
" compression='gzip',\n",
" usecols=['timestamp', 'side', 'price', 'size'],\n",
" dtype={'timestamp':'float', 'side':'str', 'price':'float', 'size':'int'})\n",
"\n",
"# UnixTime(timestamp)からdatetime列生成\n",
"df_trade['datetime'] = pd.to_datetime(df_trade['timestamp'], unit='s', utc=True)\n",
"\n",
"# datetimeをindexに設定 (resampleのため)\n",
"df_trade.set_index('datetime', inplace=True)\n",
"\n",
"display(df_trade)"
],
"execution_count": 1,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>timestamp</th>\n",
" <th>side</th>\n",
" <th>size</th>\n",
" <th>price</th>\n",
" </tr>\n",
" <tr>\n",
" <th>datetime</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2021-05-25 23:59:59.995100975+00:00</th>\n",
" <td>1.621987e+09</td>\n",
" <td>Buy</td>\n",
" <td>1</td>\n",
" <td>38368.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 23:59:59.990932941+00:00</th>\n",
" <td>1.621987e+09</td>\n",
" <td>Buy</td>\n",
" <td>1</td>\n",
" <td>38368.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 23:59:59.968966961+00:00</th>\n",
" <td>1.621987e+09</td>\n",
" <td>Sell</td>\n",
" <td>279</td>\n",
" <td>38367.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 23:59:59.693799973+00:00</th>\n",
" <td>1.621987e+09</td>\n",
" <td>Buy</td>\n",
" <td>1</td>\n",
" <td>38368.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 23:59:59.677196980+00:00</th>\n",
" <td>1.621987e+09</td>\n",
" <td>Buy</td>\n",
" <td>1</td>\n",
" <td>38368.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 00:00:00.461596012+00:00</th>\n",
" <td>1.621901e+09</td>\n",
" <td>Sell</td>\n",
" <td>17088</td>\n",
" <td>38841.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 00:00:00.301676989+00:00</th>\n",
" <td>1.621901e+09</td>\n",
" <td>Buy</td>\n",
" <td>5797</td>\n",
" <td>38842.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 00:00:00.247475863+00:00</th>\n",
" <td>1.621901e+09</td>\n",
" <td>Buy</td>\n",
" <td>5952</td>\n",
" <td>38842.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 00:00:00.247475863+00:00</th>\n",
" <td>1.621901e+09</td>\n",
" <td>Buy</td>\n",
" <td>48</td>\n",
" <td>38842.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 00:00:00.191513062+00:00</th>\n",
" <td>1.621901e+09</td>\n",
" <td>Buy</td>\n",
" <td>760</td>\n",
" <td>38842.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>959632 rows × 4 columns</p>\n",
"</div>"
],
"text/plain": [
" timestamp side size price\n",
"datetime \n",
"2021-05-25 23:59:59.995100975+00:00 1.621987e+09 Buy 1 38368.0\n",
"2021-05-25 23:59:59.990932941+00:00 1.621987e+09 Buy 1 38368.0\n",
"2021-05-25 23:59:59.968966961+00:00 1.621987e+09 Sell 279 38367.5\n",
"2021-05-25 23:59:59.693799973+00:00 1.621987e+09 Buy 1 38368.0\n",
"2021-05-25 23:59:59.677196980+00:00 1.621987e+09 Buy 1 38368.0\n",
"... ... ... ... ...\n",
"2021-05-25 00:00:00.461596012+00:00 1.621901e+09 Sell 17088 38841.5\n",
"2021-05-25 00:00:00.301676989+00:00 1.621901e+09 Buy 5797 38842.0\n",
"2021-05-25 00:00:00.247475863+00:00 1.621901e+09 Buy 5952 38842.0\n",
"2021-05-25 00:00:00.247475863+00:00 1.621901e+09 Buy 48 38842.0\n",
"2021-05-25 00:00:00.191513062+00:00 1.621901e+09 Buy 760 38842.0\n",
"\n",
"[959632 rows x 4 columns]"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lRH-JW6lw5-S"
},
"source": [
"## 約定履歴 -> OHLCVリサンプリング"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 824
},
"id": "_r5ztbZGwvK3",
"outputId": "0102be0b-1d23-47e6-d7c6-498307f8ae20"
},
"source": [
"period = '1H' # 時間足\n",
"\n",
"# 約定履歴 -> OHLCV\n",
"df_ohlcv = df_trade.resample(period).agg({\n",
" 'price' : 'ohlc',\n",
" 'size' : 'sum',}).ffill()\n",
"# 列名編集\n",
"df_ohlcv.columns = ['open', 'high', 'low', 'close', 'volume']\n",
"# 前足 終値を始値に設定\n",
"df_ohlcv.iloc[1:, 0] = df_ohlcv['close'].shift(1)[1:]\n",
"\n",
"display(df_ohlcv)"
],
"execution_count": 2,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>open</th>\n",
" <th>high</th>\n",
" <th>low</th>\n",
" <th>close</th>\n",
" <th>volume</th>\n",
" </tr>\n",
" <tr>\n",
" <th>datetime</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2021-05-25 00:00:00+00:00</th>\n",
" <td>38842.0</td>\n",
" <td>39800.0</td>\n",
" <td>38575.5</td>\n",
" <td>39429.5</td>\n",
" <td>251366615</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 01:00:00+00:00</th>\n",
" <td>39429.5</td>\n",
" <td>39563.5</td>\n",
" <td>38704.5</td>\n",
" <td>38853.0</td>\n",
" <td>185848920</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 02:00:00+00:00</th>\n",
" <td>38853.0</td>\n",
" <td>38959.0</td>\n",
" <td>38078.5</td>\n",
" <td>38150.0</td>\n",
" <td>242639395</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 03:00:00+00:00</th>\n",
" <td>38150.0</td>\n",
" <td>38461.5</td>\n",
" <td>37858.5</td>\n",
" <td>38364.5</td>\n",
" <td>190122605</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 04:00:00+00:00</th>\n",
" <td>38364.5</td>\n",
" <td>38734.0</td>\n",
" <td>37657.5</td>\n",
" <td>38416.0</td>\n",
" <td>200476806</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 05:00:00+00:00</th>\n",
" <td>38416.0</td>\n",
" <td>38494.5</td>\n",
" <td>37924.0</td>\n",
" <td>38403.5</td>\n",
" <td>146059096</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 06:00:00+00:00</th>\n",
" <td>38403.5</td>\n",
" <td>39229.5</td>\n",
" <td>38163.0</td>\n",
" <td>38914.5</td>\n",
" <td>159442986</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 07:00:00+00:00</th>\n",
" <td>38914.5</td>\n",
" <td>39218.0</td>\n",
" <td>38670.5</td>\n",
" <td>39006.5</td>\n",
" <td>146303629</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 08:00:00+00:00</th>\n",
" <td>39006.5</td>\n",
" <td>39134.0</td>\n",
" <td>38059.0</td>\n",
" <td>38182.0</td>\n",
" <td>182759208</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 09:00:00+00:00</th>\n",
" <td>38182.0</td>\n",
" <td>38289.5</td>\n",
" <td>37810.0</td>\n",
" <td>37988.0</td>\n",
" <td>137152315</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 10:00:00+00:00</th>\n",
" <td>37988.0</td>\n",
" <td>37988.0</td>\n",
" <td>36711.0</td>\n",
" <td>37166.5</td>\n",
" <td>347804476</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 11:00:00+00:00</th>\n",
" <td>37166.5</td>\n",
" <td>37490.5</td>\n",
" <td>36536.0</td>\n",
" <td>36574.5</td>\n",
" <td>267042715</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 12:00:00+00:00</th>\n",
" <td>36574.5</td>\n",
" <td>37244.5</td>\n",
" <td>36495.0</td>\n",
" <td>37182.5</td>\n",
" <td>289325876</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 13:00:00+00:00</th>\n",
" <td>37182.5</td>\n",
" <td>37930.5</td>\n",
" <td>36993.5</td>\n",
" <td>37535.5</td>\n",
" <td>282190247</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 14:00:00+00:00</th>\n",
" <td>37535.5</td>\n",
" <td>38184.5</td>\n",
" <td>37422.5</td>\n",
" <td>37701.5</td>\n",
" <td>216911099</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 15:00:00+00:00</th>\n",
" <td>37701.5</td>\n",
" <td>38522.5</td>\n",
" <td>37163.0</td>\n",
" <td>38312.5</td>\n",
" <td>509591600</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 16:00:00+00:00</th>\n",
" <td>38312.5</td>\n",
" <td>38333.0</td>\n",
" <td>37694.0</td>\n",
" <td>37838.0</td>\n",
" <td>178559740</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 17:00:00+00:00</th>\n",
" <td>37838.0</td>\n",
" <td>38054.0</td>\n",
" <td>37532.0</td>\n",
" <td>37983.0</td>\n",
" <td>122300186</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 18:00:00+00:00</th>\n",
" <td>37983.0</td>\n",
" <td>38300.0</td>\n",
" <td>37803.0</td>\n",
" <td>37929.5</td>\n",
" <td>101572896</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 19:00:00+00:00</th>\n",
" <td>37929.5</td>\n",
" <td>37989.5</td>\n",
" <td>37172.0</td>\n",
" <td>37316.0</td>\n",
" <td>133295995</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 20:00:00+00:00</th>\n",
" <td>37316.0</td>\n",
" <td>37833.5</td>\n",
" <td>37301.5</td>\n",
" <td>37665.5</td>\n",
" <td>136366542</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 21:00:00+00:00</th>\n",
" <td>37665.5</td>\n",
" <td>38159.0</td>\n",
" <td>37486.5</td>\n",
" <td>37981.0</td>\n",
" <td>106146474</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 22:00:00+00:00</th>\n",
" <td>37981.0</td>\n",
" <td>38745.5</td>\n",
" <td>37969.5</td>\n",
" <td>38435.5</td>\n",
" <td>146145387</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 23:00:00+00:00</th>\n",
" <td>38435.5</td>\n",
" <td>38479.0</td>\n",
" <td>38001.0</td>\n",
" <td>38368.0</td>\n",
" <td>153047285</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" open high low close volume\n",
"datetime \n",
"2021-05-25 00:00:00+00:00 38842.0 39800.0 38575.5 39429.5 251366615\n",
"2021-05-25 01:00:00+00:00 39429.5 39563.5 38704.5 38853.0 185848920\n",
"2021-05-25 02:00:00+00:00 38853.0 38959.0 38078.5 38150.0 242639395\n",
"2021-05-25 03:00:00+00:00 38150.0 38461.5 37858.5 38364.5 190122605\n",
"2021-05-25 04:00:00+00:00 38364.5 38734.0 37657.5 38416.0 200476806\n",
"2021-05-25 05:00:00+00:00 38416.0 38494.5 37924.0 38403.5 146059096\n",
"2021-05-25 06:00:00+00:00 38403.5 39229.5 38163.0 38914.5 159442986\n",
"2021-05-25 07:00:00+00:00 38914.5 39218.0 38670.5 39006.5 146303629\n",
"2021-05-25 08:00:00+00:00 39006.5 39134.0 38059.0 38182.0 182759208\n",
"2021-05-25 09:00:00+00:00 38182.0 38289.5 37810.0 37988.0 137152315\n",
"2021-05-25 10:00:00+00:00 37988.0 37988.0 36711.0 37166.5 347804476\n",
"2021-05-25 11:00:00+00:00 37166.5 37490.5 36536.0 36574.5 267042715\n",
"2021-05-25 12:00:00+00:00 36574.5 37244.5 36495.0 37182.5 289325876\n",
"2021-05-25 13:00:00+00:00 37182.5 37930.5 36993.5 37535.5 282190247\n",
"2021-05-25 14:00:00+00:00 37535.5 38184.5 37422.5 37701.5 216911099\n",
"2021-05-25 15:00:00+00:00 37701.5 38522.5 37163.0 38312.5 509591600\n",
"2021-05-25 16:00:00+00:00 38312.5 38333.0 37694.0 37838.0 178559740\n",
"2021-05-25 17:00:00+00:00 37838.0 38054.0 37532.0 37983.0 122300186\n",
"2021-05-25 18:00:00+00:00 37983.0 38300.0 37803.0 37929.5 101572896\n",
"2021-05-25 19:00:00+00:00 37929.5 37989.5 37172.0 37316.0 133295995\n",
"2021-05-25 20:00:00+00:00 37316.0 37833.5 37301.5 37665.5 136366542\n",
"2021-05-25 21:00:00+00:00 37665.5 38159.0 37486.5 37981.0 106146474\n",
"2021-05-25 22:00:00+00:00 37981.0 38745.5 37969.5 38435.5 146145387\n",
"2021-05-25 23:00:00+00:00 38435.5 38479.0 38001.0 38368.0 153047285"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7nn01BWnzBp2"
},
"source": [
"## 売買別出来高集計"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 824
},
"id": "tcXA6xwZy9GB",
"outputId": "ccf93433-3cd0-4f7a-d26b-45f6e6e6cad5"
},
"source": [
"# 約定サイズを売買分類\n",
"df_trade['buy_size'] = df_trade['size'].where(df_trade['side'] == 'Buy', 0)\n",
"df_trade['sell_size'] = df_trade['size'].where(df_trade['side'] == 'Sell', 0)\n",
"\n",
"# 約定履歴 -> OHLCV(売買別volume)\n",
"df_ohlcv2 = df_trade.resample(period).agg({\n",
" 'price' : 'ohlc',\n",
" 'buy_size' : 'sum',\n",
" 'sell_size' : 'sum',}).ffill()\n",
"# 列名編集\n",
"df_ohlcv2.columns = ['open', 'high', 'low', 'close', 'buy_vol', 'sell_vol']\n",
"# 前足 終値を始値に設定\n",
"df_ohlcv.iloc[1:, 0] = df_ohlcv['close'].shift(1)[1:]\n",
"\n",
"display(df_ohlcv2)"
],
"execution_count": 3,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>open</th>\n",
" <th>high</th>\n",
" <th>low</th>\n",
" <th>close</th>\n",
" <th>buy_vol</th>\n",
" <th>sell_vol</th>\n",
" </tr>\n",
" <tr>\n",
" <th>datetime</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2021-05-25 00:00:00+00:00</th>\n",
" <td>38842.0</td>\n",
" <td>39800.0</td>\n",
" <td>38575.5</td>\n",
" <td>39429.5</td>\n",
" <td>129240413</td>\n",
" <td>122126202</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 01:00:00+00:00</th>\n",
" <td>39429.0</td>\n",
" <td>39563.5</td>\n",
" <td>38704.5</td>\n",
" <td>38853.0</td>\n",
" <td>88196805</td>\n",
" <td>97652115</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 02:00:00+00:00</th>\n",
" <td>38853.5</td>\n",
" <td>38959.0</td>\n",
" <td>38078.5</td>\n",
" <td>38150.0</td>\n",
" <td>119382001</td>\n",
" <td>123257394</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 03:00:00+00:00</th>\n",
" <td>38144.5</td>\n",
" <td>38461.5</td>\n",
" <td>37858.5</td>\n",
" <td>38364.5</td>\n",
" <td>96396091</td>\n",
" <td>93726514</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 04:00:00+00:00</th>\n",
" <td>38363.5</td>\n",
" <td>38734.0</td>\n",
" <td>37657.5</td>\n",
" <td>38416.0</td>\n",
" <td>100311440</td>\n",
" <td>100165366</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 05:00:00+00:00</th>\n",
" <td>38416.0</td>\n",
" <td>38494.5</td>\n",
" <td>37924.0</td>\n",
" <td>38403.5</td>\n",
" <td>70000942</td>\n",
" <td>76058154</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 06:00:00+00:00</th>\n",
" <td>38403.5</td>\n",
" <td>39229.5</td>\n",
" <td>38163.0</td>\n",
" <td>38914.5</td>\n",
" <td>92984705</td>\n",
" <td>66458281</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 07:00:00+00:00</th>\n",
" <td>38914.5</td>\n",
" <td>39218.0</td>\n",
" <td>38670.5</td>\n",
" <td>39006.5</td>\n",
" <td>60985724</td>\n",
" <td>85317905</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 08:00:00+00:00</th>\n",
" <td>39006.0</td>\n",
" <td>39134.0</td>\n",
" <td>38059.0</td>\n",
" <td>38182.0</td>\n",
" <td>81839000</td>\n",
" <td>100920208</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 09:00:00+00:00</th>\n",
" <td>38181.5</td>\n",
" <td>38289.5</td>\n",
" <td>37810.0</td>\n",
" <td>37988.0</td>\n",
" <td>71435257</td>\n",
" <td>65717058</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 10:00:00+00:00</th>\n",
" <td>37988.0</td>\n",
" <td>37988.0</td>\n",
" <td>36711.0</td>\n",
" <td>37166.5</td>\n",
" <td>155642936</td>\n",
" <td>192161540</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 11:00:00+00:00</th>\n",
" <td>37166.5</td>\n",
" <td>37490.5</td>\n",
" <td>36536.0</td>\n",
" <td>36574.5</td>\n",
" <td>129119364</td>\n",
" <td>137923351</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 12:00:00+00:00</th>\n",
" <td>36575.5</td>\n",
" <td>37244.5</td>\n",
" <td>36495.0</td>\n",
" <td>37182.5</td>\n",
" <td>153805019</td>\n",
" <td>135520857</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 13:00:00+00:00</th>\n",
" <td>37182.5</td>\n",
" <td>37930.5</td>\n",
" <td>36993.5</td>\n",
" <td>37535.5</td>\n",
" <td>152578451</td>\n",
" <td>129611796</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 14:00:00+00:00</th>\n",
" <td>37536.0</td>\n",
" <td>38184.5</td>\n",
" <td>37422.5</td>\n",
" <td>37701.5</td>\n",
" <td>108675088</td>\n",
" <td>108236011</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 15:00:00+00:00</th>\n",
" <td>37701.0</td>\n",
" <td>38522.5</td>\n",
" <td>37163.0</td>\n",
" <td>38312.5</td>\n",
" <td>254746899</td>\n",
" <td>254844701</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 16:00:00+00:00</th>\n",
" <td>38311.0</td>\n",
" <td>38333.0</td>\n",
" <td>37694.0</td>\n",
" <td>37838.0</td>\n",
" <td>86029586</td>\n",
" <td>92530154</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 17:00:00+00:00</th>\n",
" <td>37837.5</td>\n",
" <td>38054.0</td>\n",
" <td>37532.0</td>\n",
" <td>37983.0</td>\n",
" <td>58535012</td>\n",
" <td>63765174</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 18:00:00+00:00</th>\n",
" <td>37983.0</td>\n",
" <td>38300.0</td>\n",
" <td>37803.0</td>\n",
" <td>37929.5</td>\n",
" <td>48859163</td>\n",
" <td>52713733</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 19:00:00+00:00</th>\n",
" <td>37929.0</td>\n",
" <td>37989.5</td>\n",
" <td>37172.0</td>\n",
" <td>37316.0</td>\n",
" <td>47625526</td>\n",
" <td>85670469</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 20:00:00+00:00</th>\n",
" <td>37315.5</td>\n",
" <td>37833.5</td>\n",
" <td>37301.5</td>\n",
" <td>37665.5</td>\n",
" <td>64042109</td>\n",
" <td>72324433</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 21:00:00+00:00</th>\n",
" <td>37665.0</td>\n",
" <td>38159.0</td>\n",
" <td>37486.5</td>\n",
" <td>37981.0</td>\n",
" <td>61688360</td>\n",
" <td>44458114</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 22:00:00+00:00</th>\n",
" <td>37981.0</td>\n",
" <td>38745.5</td>\n",
" <td>37969.5</td>\n",
" <td>38435.5</td>\n",
" <td>84125733</td>\n",
" <td>62019654</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 23:00:00+00:00</th>\n",
" <td>38435.5</td>\n",
" <td>38479.0</td>\n",
" <td>38001.0</td>\n",
" <td>38368.0</td>\n",
" <td>70390170</td>\n",
" <td>82657115</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" open high ... buy_vol sell_vol\n",
"datetime ... \n",
"2021-05-25 00:00:00+00:00 38842.0 39800.0 ... 129240413 122126202\n",
"2021-05-25 01:00:00+00:00 39429.0 39563.5 ... 88196805 97652115\n",
"2021-05-25 02:00:00+00:00 38853.5 38959.0 ... 119382001 123257394\n",
"2021-05-25 03:00:00+00:00 38144.5 38461.5 ... 96396091 93726514\n",
"2021-05-25 04:00:00+00:00 38363.5 38734.0 ... 100311440 100165366\n",
"2021-05-25 05:00:00+00:00 38416.0 38494.5 ... 70000942 76058154\n",
"2021-05-25 06:00:00+00:00 38403.5 39229.5 ... 92984705 66458281\n",
"2021-05-25 07:00:00+00:00 38914.5 39218.0 ... 60985724 85317905\n",
"2021-05-25 08:00:00+00:00 39006.0 39134.0 ... 81839000 100920208\n",
"2021-05-25 09:00:00+00:00 38181.5 38289.5 ... 71435257 65717058\n",
"2021-05-25 10:00:00+00:00 37988.0 37988.0 ... 155642936 192161540\n",
"2021-05-25 11:00:00+00:00 37166.5 37490.5 ... 129119364 137923351\n",
"2021-05-25 12:00:00+00:00 36575.5 37244.5 ... 153805019 135520857\n",
"2021-05-25 13:00:00+00:00 37182.5 37930.5 ... 152578451 129611796\n",
"2021-05-25 14:00:00+00:00 37536.0 38184.5 ... 108675088 108236011\n",
"2021-05-25 15:00:00+00:00 37701.0 38522.5 ... 254746899 254844701\n",
"2021-05-25 16:00:00+00:00 38311.0 38333.0 ... 86029586 92530154\n",
"2021-05-25 17:00:00+00:00 37837.5 38054.0 ... 58535012 63765174\n",
"2021-05-25 18:00:00+00:00 37983.0 38300.0 ... 48859163 52713733\n",
"2021-05-25 19:00:00+00:00 37929.0 37989.5 ... 47625526 85670469\n",
"2021-05-25 20:00:00+00:00 37315.5 37833.5 ... 64042109 72324433\n",
"2021-05-25 21:00:00+00:00 37665.0 38159.0 ... 61688360 44458114\n",
"2021-05-25 22:00:00+00:00 37981.0 38745.5 ... 84125733 62019654\n",
"2021-05-25 23:00:00+00:00 38435.5 38479.0 ... 70390170 82657115\n",
"\n",
"[24 rows x 6 columns]"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ZokOG1Y3xJki"
},
"source": [
"## OHLCVを上位時間足にダウンサンプリング"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 266
},
"id": "w7jFiQGcxI4q",
"outputId": "df9071b8-6433-4240-a593-c66fd213f317"
},
"source": [
"period = '4H' # 時間足\n",
"\n",
"df_ohlcv_4h = df_ohlcv.resample(period).agg({\n",
" 'open' : 'first',\n",
" 'high' : 'max',\n",
" 'low' : 'min',\n",
" 'close' : 'last',\n",
" 'volume' : 'sum',})\n",
"display(df_ohlcv_4h)"
],
"execution_count": 4,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>open</th>\n",
" <th>high</th>\n",
" <th>low</th>\n",
" <th>close</th>\n",
" <th>volume</th>\n",
" </tr>\n",
" <tr>\n",
" <th>datetime</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2021-05-25 00:00:00+00:00</th>\n",
" <td>38842.0</td>\n",
" <td>39800.0</td>\n",
" <td>37858.5</td>\n",
" <td>38364.5</td>\n",
" <td>869977535</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 04:00:00+00:00</th>\n",
" <td>38364.5</td>\n",
" <td>39229.5</td>\n",
" <td>37657.5</td>\n",
" <td>39006.5</td>\n",
" <td>652282517</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 08:00:00+00:00</th>\n",
" <td>39006.5</td>\n",
" <td>39134.0</td>\n",
" <td>36536.0</td>\n",
" <td>36574.5</td>\n",
" <td>934758714</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 12:00:00+00:00</th>\n",
" <td>36574.5</td>\n",
" <td>38522.5</td>\n",
" <td>36495.0</td>\n",
" <td>38312.5</td>\n",
" <td>1298018822</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 16:00:00+00:00</th>\n",
" <td>38312.5</td>\n",
" <td>38333.0</td>\n",
" <td>37172.0</td>\n",
" <td>37316.0</td>\n",
" <td>535728817</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2021-05-25 20:00:00+00:00</th>\n",
" <td>37316.0</td>\n",
" <td>38745.5</td>\n",
" <td>37301.5</td>\n",
" <td>38368.0</td>\n",
" <td>541705688</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" open high low close volume\n",
"datetime \n",
"2021-05-25 00:00:00+00:00 38842.0 39800.0 37858.5 38364.5 869977535\n",
"2021-05-25 04:00:00+00:00 38364.5 39229.5 37657.5 39006.5 652282517\n",
"2021-05-25 08:00:00+00:00 39006.5 39134.0 36536.0 36574.5 934758714\n",
"2021-05-25 12:00:00+00:00 36574.5 38522.5 36495.0 38312.5 1298018822\n",
"2021-05-25 16:00:00+00:00 38312.5 38333.0 37172.0 37316.0 535728817\n",
"2021-05-25 20:00:00+00:00 37316.0 38745.5 37301.5 38368.0 541705688"
]
},
"metadata": {
"tags": []
}
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment