Last active
October 26, 2018 15:00
-
-
Save nagishin/d5818e9d71dc9a86b49e2b51f2fdeb5d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### 機能一覧\n", | |
"<font color=\"DodgerBlue\">[約定履歴取得]</font>\n", | |
"```python\n", | |
" get_trades(exchange=Exchange.BitMEX, ut_from=None, ut_to=None,\n", | |
" reverse=False, tstype=\"UTS\")\n", | |
"```\n", | |
"<font color=\"DodgerBlue\">[自注文の約定履歴取得]</font>\n", | |
"```python\n", | |
" get_executions(exchange=Exchange.BitMEX, ut_from=None, ut_to=None,\n", | |
" reverse=False, tstype=\"UTS\")\n", | |
"```\n", | |
"<font color=\"DodgerBlue\">[証拠金推移取得(bitFlyerのみ)]</font>\n", | |
"```python\n", | |
" get_collaterals(ut_from=None, ut_to=None, reverse=False, tstype=\"UTS\")\n", | |
"```\n", | |
"<font color=\"DodgerBlue\">[OHLCV取得]</font>\n", | |
"```python\n", | |
" get_ohlcv(exchange=Exchange.BitMEX, period=\"1m\", count=1000,\n", | |
" reverse=False, tstype=\"UTS\")\n", | |
"```\n", | |
"<font color=\"DodgerBlue\">[四本値取得]</font>\n", | |
"```python\n", | |
" get_ohlcv_col(exchange=Exchange.BitMEX, period=\"1m\", col=\"close\",\n", | |
" count=1000, reverse=False) \n", | |
"```\n", | |
"<font color=\"DodgerBlue\">[オーダーブック取得]</font>\n", | |
"```python\n", | |
" get_orderbook(exchange=Exchange.BitMEX, depth=10)\n", | |
"```\n", | |
"<font color=\"DodgerBlue\">[価格情報取得]</font>\n", | |
"```python\n", | |
" get_ticker(exchange=Exchange.BitMEX)\n", | |
"```\n", | |
"<font color=\"DodgerBlue\">[ポジション情報]</font>\n", | |
"```python\n", | |
" get_position(exchange=Exchange.BitMEX)\n", | |
"```\n", | |
"<font color=\"DodgerBlue\">[残高情報取得]</font>\n", | |
"```python\n", | |
" get_balance(exchange=Exchange.BitMEX)\n", | |
"```\n", | |
"<font color=\"DodgerBlue\">[約定履歴から指定期間のOHLCVを生成]</font>\n", | |
"```python\n", | |
" trades_to_ohlcv(df, period=\"1H\", label=\"left\")\n", | |
"```\n", | |
"<font color=\"DodgerBlue\">[OHLCVを指定期間にリサンプリング]</font>\n", | |
"```python\n", | |
" resample_ohlcv(df, period=\"1H\", label=\"left\")\n", | |
"```\n", | |
"<font color=\"DodgerBlue\">[DataFrameのtimestamp列を指定period単位に丸める]</font>\n", | |
"```python\n", | |
" round_timestamp(df, col=\"index\", period=60)\n", | |
"```\n", | |
"<font color=\"DodgerBlue\">[DataFrameをソート]</font>\n", | |
"```python\n", | |
" sort_df(df, by=\"index\", ascending=True, reset_index=False)\n", | |
"```\n", | |
"<font color=\"DodgerBlue\">[DataFrameを反転]</font>\n", | |
"```python\n", | |
" reverse_df(df, axis=\"index\", reset_index=False)\n", | |
"```\n", | |
"<font color=\"DodgerBlue\">[日付変換]</font>\n", | |
"```python\n", | |
" dt_to_ut(dt, unit=\"s\")\n", | |
" ut_to_dt(ut, unit=\"s\", tz=None)\n", | |
" dt_to_str(dt, fmt=\"%Y-%m-%dT%H:%M:%S.%fZ\")\n", | |
" str_to_dt(str_dt, fmt=\"%Y-%m-%dT%H:%M:%S.%fZ\", tz=None)\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### 機能解説" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# coding: utf-8\n", | |
"from datetime import datetime\n", | |
"import time, pytz\n", | |
"import pandas as pd\n", | |
"import numpy as np\n", | |
"from data_tools import Exchange as exc # 取引所Enumクラス\n", | |
"from data_tools import DataTools as dtl # データ取得・編集ツールクラス" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### 約定履歴取得\n", | |
"```python\n", | |
"get_trades(exchange=Exchange.BitMEX, ut_from=None, ut_to=None,\n", | |
" reverse=False, tstype=\"UTS\")\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" exchange(Exchange(enum)) 処理対象取引所\n", | |
" ut_from(int) 取得開始 UnixTime (None : 1時間前時刻)\n", | |
" ut_to(int) 取得終了 UnixTime (None : 現在時刻)\n", | |
" reverse(bool) 並び順(True:新->古, False:古->新)\n", | |
" tstype(string) timestampデータ型\n", | |
" \"UTMS\":UnixTime(ミリ秒)\n", | |
" \"UTS\" :UnixTime(秒)\n", | |
" \"DT\" :datetime\n", | |
" \"STMS\":日付文字列(%Y-%m-%dT%H:%M:%S.%fZ)\n", | |
" \"STS\" :日付文字列(%Y-%m-%dT%H:%M:%S)\n", | |
"[return]\n", | |
" DataFrame\n", | |
" columns=[\"timestamp\", \"side\", \"price\", \"size\"]\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Success API request. time: 2018-10-26 14:43:02.760000+00:00 get_trades: 215 RateLimit: 299/300 Reset: 1540564988\n", | |
"[BitMEX trades: 215]\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/usr/local/lib/python3.6/site-packages/bravado_core/spec.py:271: Warning: guid format is not registered with bravado-core!\n", | |
" category=Warning,\n" | |
] | |
}, | |
{ | |
"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>price</th>\n", | |
" <th>size</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>1540564686</td>\n", | |
" <td>Sell</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>2000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>1540564689</td>\n", | |
" <td>Sell</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>300</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>1540564693</td>\n", | |
" <td>Sell</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>20000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>1540564693</td>\n", | |
" <td>Buy</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>4000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>1540564695</td>\n", | |
" <td>Sell</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>500</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp side price size\n", | |
"0 1540564686 Sell 6395.5 2000\n", | |
"1 1540564689 Sell 6395.5 300\n", | |
"2 1540564693 Sell 6395.5 20000\n", | |
"3 1540564693 Buy 6396.0 4000\n", | |
"4 1540564695 Sell 6395.5 500" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Find last_id(522825692).\n", | |
"Now getting trades. count:500 time:2018-10-26T14:42:50.513\n", | |
"Now getting trades. count:1000 time:2018-10-26T14:42:25.327\n", | |
"Now getting trades. count:1500 time:2018-10-26T14:42:04.903\n", | |
"Now getting trades. count:2000 time:2018-10-26T14:41:38.453\n", | |
"Now getting trades. count:2500 time:2018-10-26T14:41:20.827\n", | |
"Now getting trades. count:3000 time:2018-10-26T14:41:10.157\n", | |
"Now getting trades. count:3500 time:2018-10-26T14:40:59.877\n", | |
"Now getting trades. count:4000 time:2018-10-26T14:40:53.033\n", | |
"Now getting trades. count:4500 time:2018-10-26T14:40:38.36\n", | |
"Now getting trades. count:5000 time:2018-10-26T14:40:25.313\n", | |
"Now getting trades. count:5500 time:2018-10-26T14:40:10.91\n", | |
"Now getting trades. count:6000 time:2018-10-26T14:39:49.783\n", | |
"Now getting trades. count:6500 time:2018-10-26T14:39:24.287\n", | |
"Now getting trades. count:7000 time:2018-10-26T14:39:07.207\n", | |
"Now getting trades. count:7500 time:2018-10-26T14:38:47.677\n", | |
"Now getting trades. count:8000 time:2018-10-26T14:38:34.413\n", | |
"Now getting trades. count:8500 time:2018-10-26T14:38:16.257\n", | |
"Now getting trades. count:9000 time:2018-10-26T14:38:03.07\n", | |
"Completed getting trades. count:9000 time:2018-10-26T14:38:03.07\n", | |
"[bitFlyer trades: 8891]\n" | |
] | |
}, | |
{ | |
"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>price</th>\n", | |
" <th>size</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2018-10-26 14:43:05.747000+00:00</td>\n", | |
" <td>SELL</td>\n", | |
" <td>733462.0</td>\n", | |
" <td>0.01</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2018-10-26 14:43:05.637000+00:00</td>\n", | |
" <td>SELL</td>\n", | |
" <td>733462.0</td>\n", | |
" <td>0.10</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2018-10-26 14:43:05.603000+00:00</td>\n", | |
" <td>SELL</td>\n", | |
" <td>733462.0</td>\n", | |
" <td>0.42</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2018-10-26 14:43:05.603000+00:00</td>\n", | |
" <td>SELL</td>\n", | |
" <td>733469.0</td>\n", | |
" <td>0.07</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2018-10-26 14:43:05.543000+00:00</td>\n", | |
" <td>BUY</td>\n", | |
" <td>733477.0</td>\n", | |
" <td>0.01</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp side price size\n", | |
"0 2018-10-26 14:43:05.747000+00:00 SELL 733462.0 0.01\n", | |
"1 2018-10-26 14:43:05.637000+00:00 SELL 733462.0 0.10\n", | |
"2 2018-10-26 14:43:05.603000+00:00 SELL 733462.0 0.42\n", | |
"3 2018-10-26 14:43:05.603000+00:00 SELL 733469.0 0.07\n", | |
"4 2018-10-26 14:43:05.543000+00:00 BUY 733477.0 0.01" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# 取得期間\n", | |
"to_time = int(time.time()) # 現在時刻UnixTime\n", | |
"from_time = to_time - 5 * 60 # 5分前UnixTime\n", | |
"\n", | |
"# BitMEX\n", | |
"df_trades_bm = dtl.get_trades(exchange=exc.BitMEX, ut_from=from_time, ut_to=to_time,\n", | |
" reverse=False, tstype=\"UTS\")\n", | |
"print(\"[BitMEX trades: %d]\" % len(df_trades_bm.index))\n", | |
"display(df_trades_bm.head())\n", | |
"\n", | |
"# bitFlyer\n", | |
"df_trades_bf = dtl.get_trades(exchange=exc.bitFlyer, ut_from=from_time, ut_to=to_time,\n", | |
" reverse=True, tstype=\"DT\")\n", | |
"print(\"[bitFlyer trades: %d]\" % len(df_trades_bf.index))\n", | |
"display(df_trades_bf.head())" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### 自注文の約定履歴取得\n", | |
"```python\n", | |
"get_executions(exchange=Exchange.BitMEX, ut_from=None, ut_to=None,\n", | |
" reverse=False, tstype=\"UTS\")\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" exchange(Exchange(enum)) 処理対象取引所\n", | |
" ut_from(int) 取得開始 UnixTime (None : 1時間前時刻)\n", | |
" ut_to(int) 取得終了 UnixTime (None : 現在時刻)\n", | |
" reverse(bool) 並び順(True:新->古, False:古->新)\n", | |
" tstype(string) timestampデータ型\n", | |
" \"UTMS\":UnixTime(ミリ秒)\n", | |
" \"UTS\" :UnixTime(秒)\n", | |
" \"DT\" :datetime\n", | |
" \"STMS\":日付文字列(%Y-%m-%dT%H:%M:%S.%fZ)\n", | |
" \"STS\" :日付文字列(%Y-%m-%dT%H:%M:%S)\n", | |
"[return]\n", | |
" DataFrame\n", | |
" columns=[\"timestamp\", \"side\", \"price\", \"size\", \"comm\"]\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[BitMEX exec: 0]\n" | |
] | |
}, | |
{ | |
"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>price</th>\n", | |
" <th>size</th>\n", | |
" <th>comm</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
"Empty DataFrame\n", | |
"Columns: [timestamp, side, price, size, comm]\n", | |
"Index: []" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Find last_id(521683412).\n", | |
"Now getting execs. count:500 time:2018-10-26T00:39:34.94\n", | |
"Completed getting execs. count:500 time:2018-10-26T00:39:34.94\n", | |
"[bitFlyer exec: 9]\n" | |
] | |
}, | |
{ | |
"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>price</th>\n", | |
" <th>size</th>\n", | |
" <th>comm</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2018-10-26 14:40:00.957000+00:00</td>\n", | |
" <td>BUY</td>\n", | |
" <td>733101.0</td>\n", | |
" <td>0.300000</td>\n", | |
" <td>0.0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2018-10-26 14:41:04.483000+00:00</td>\n", | |
" <td>SELL</td>\n", | |
" <td>733327.0</td>\n", | |
" <td>0.300000</td>\n", | |
" <td>0.0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2018-10-26 14:41:19.563000+00:00</td>\n", | |
" <td>SELL</td>\n", | |
" <td>733457.0</td>\n", | |
" <td>0.250383</td>\n", | |
" <td>0.0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2018-10-26 14:41:20.670000+00:00</td>\n", | |
" <td>SELL</td>\n", | |
" <td>733457.0</td>\n", | |
" <td>0.023894</td>\n", | |
" <td>0.0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2018-10-26 14:41:20.827000+00:00</td>\n", | |
" <td>SELL</td>\n", | |
" <td>733457.0</td>\n", | |
" <td>0.025723</td>\n", | |
" <td>0.0</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp side price size comm\n", | |
"0 2018-10-26 14:40:00.957000+00:00 BUY 733101.0 0.300000 0.0\n", | |
"1 2018-10-26 14:41:04.483000+00:00 SELL 733327.0 0.300000 0.0\n", | |
"2 2018-10-26 14:41:19.563000+00:00 SELL 733457.0 0.250383 0.0\n", | |
"3 2018-10-26 14:41:20.670000+00:00 SELL 733457.0 0.023894 0.0\n", | |
"4 2018-10-26 14:41:20.827000+00:00 SELL 733457.0 0.025723 0.0" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# 取得期間\n", | |
"to_time = int(time.time()) # 現在時刻UnixTime\n", | |
"from_time = to_time - 5 * 60 # 5分前UnixTime\n", | |
"\n", | |
"# BitMEX\n", | |
"df_exec_bm = dtl.get_executions(exchange=exc.BitMEX, ut_from=from_time, ut_to=to_time,\n", | |
" reverse=False, tstype=\"UTS\")\n", | |
"print(\"[BitMEX exec: %d]\" % len(df_exec_bm.index))\n", | |
"display(df_exec_bm.head())\n", | |
"\n", | |
"# bitFlyer\n", | |
"df_exec_bf = dtl.get_executions(exchange=exc.bitFlyer, ut_from=from_time, ut_to=to_time,\n", | |
" reverse=False, tstype=\"DT\")\n", | |
"print(\"[bitFlyer exec: %d]\" % len(df_exec_bf.index))\n", | |
"display(df_exec_bf.head())" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### 証拠金推移取得(bitFlyerのみ)\n", | |
"```python\n", | |
"get_collaterals(ut_from=None, ut_to=None, reverse=False, tstype=\"UTS\")\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" ut_from(int) 取得開始 UnixTime (None : 1時間前時刻)\n", | |
" ut_to(int) 取得終了 UnixTime (None : 現在時刻)\n", | |
" reverse(bool) 並び順(True:新->古, False:古->新)\n", | |
" tstype(string) timestampデータ型\n", | |
" \"UTMS\":UnixTime(ミリ秒)\n", | |
" \"UTS\" :UnixTime(秒)\n", | |
" \"DT\" :datetime\n", | |
" \"STMS\":日付文字列(%Y-%m-%dT%H:%M:%S.%fZ)\n", | |
" \"STS\" :日付文字列(%Y-%m-%dT%H:%M:%S)\n", | |
"[return]\n", | |
" DataFrame\n", | |
" columns=[\"timestamp\", \"change\", \"amount\"]\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Find last_id(17270).\n", | |
"Now getting colls. count:500 time:2018-10-25T08:23:40.553\n", | |
"Completed getting colls. count:500 time:2018-10-25T08:23:40.553\n", | |
"[bitFlyer coll: 3]\n" | |
] | |
}, | |
{ | |
"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>change</th>\n", | |
" <th>amount</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>1540564864</td>\n", | |
" <td>68.0</td>\n", | |
" <td>76468.0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>1540564898</td>\n", | |
" <td>68.0</td>\n", | |
" <td>76536.0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>1540564936</td>\n", | |
" <td>68.0</td>\n", | |
" <td>76604.0</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp change amount\n", | |
"0 1540564864 68.0 76468.0\n", | |
"1 1540564898 68.0 76536.0\n", | |
"2 1540564936 68.0 76604.0" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# 取得期間\n", | |
"to_time = int(time.time()) # 現在時刻UnixTime\n", | |
"from_time = to_time - 5 * 60 # 5分前UnixTime\n", | |
"\n", | |
"# bitFlyer\n", | |
"df_coll_bf = dtl.get_collaterals(ut_from=from_time, ut_to=to_time,\n", | |
" reverse=False, tstype=\"UTS\")\n", | |
"print(\"[bitFlyer coll: %d]\" % len(df_coll_bf.index))\n", | |
"display(df_coll_bf.head())" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### OHLCV取得\n", | |
"```python\n", | |
"get_ohlcv(exchange=Exchange.BitMEX, period=\"1m\", count=1000,\n", | |
" reverse=False, tstype=\"UTS\")\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" exchange(Exchange(enum)) 処理対象取引所\n", | |
" period(string) 時間足(1m, 3m, 5m, 15m, 30m,\n", | |
" 1h, 2h, 3h, 4h, 6h, 8h, 12h, 1d)\n", | |
" count(int) 取得行数\n", | |
" reverse(bool) 並び順(True:新->古, False:古->新)\n", | |
" tstype(string) timestampデータ型\n", | |
" \"UTMS\":UnixTime(ミリ秒)\n", | |
" \"UTS\" :UnixTime(秒)\n", | |
" \"DT\" :datetime\n", | |
" \"STMS\":日付文字列(%Y-%m-%dT%H:%M:%S.%fZ)\n", | |
" \"STS\" :日付文字列(%Y-%m-%dT%H:%M:%S)\n", | |
"[return]\n", | |
" DataFrame\n", | |
" columns=[\"timestamp\", \"open\", \"high\", \"low\", \"close\", \"volume\"]\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[BitMEX ohlcv: 1000]\n" | |
] | |
}, | |
{ | |
"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>open</th>\n", | |
" <th>high</th>\n", | |
" <th>low</th>\n", | |
" <th>close</th>\n", | |
" <th>volume</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>1540505040</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>60108</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>1540505100</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>86305</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>1540505160</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>27621</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>1540505220</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>21739</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>1540505280</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>88933</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp open high low close volume\n", | |
"0 1540505040 6400.0 6400.5 6400.0 6400.0 60108\n", | |
"1 1540505100 6400.0 6400.5 6400.0 6400.5 86305\n", | |
"2 1540505160 6400.5 6400.5 6400.0 6400.0 27621\n", | |
"3 1540505220 6400.0 6400.5 6400.0 6400.0 21739\n", | |
"4 1540505280 6400.0 6400.5 6400.0 6400.0 88933" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[bitFlyer ohlcv: 200]\n" | |
] | |
}, | |
{ | |
"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>open</th>\n", | |
" <th>high</th>\n", | |
" <th>low</th>\n", | |
" <th>close</th>\n", | |
" <th>volume</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2018-10-26 14:00:00</td>\n", | |
" <td>735738</td>\n", | |
" <td>736562</td>\n", | |
" <td>733333</td>\n", | |
" <td>734167</td>\n", | |
" <td>9488.410</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2018-10-26 13:00:00</td>\n", | |
" <td>736433</td>\n", | |
" <td>736673</td>\n", | |
" <td>735555</td>\n", | |
" <td>735750</td>\n", | |
" <td>5311.239</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2018-10-26 12:00:00</td>\n", | |
" <td>736241</td>\n", | |
" <td>737100</td>\n", | |
" <td>736100</td>\n", | |
" <td>736443</td>\n", | |
" <td>4266.680</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2018-10-26 11:00:00</td>\n", | |
" <td>736450</td>\n", | |
" <td>736798</td>\n", | |
" <td>735219</td>\n", | |
" <td>736241</td>\n", | |
" <td>5736.741</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2018-10-26 10:00:00</td>\n", | |
" <td>738242</td>\n", | |
" <td>738613</td>\n", | |
" <td>736317</td>\n", | |
" <td>736463</td>\n", | |
" <td>10863.747</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp open high low close volume\n", | |
"0 2018-10-26 14:00:00 735738 736562 733333 734167 9488.410\n", | |
"1 2018-10-26 13:00:00 736433 736673 735555 735750 5311.239\n", | |
"2 2018-10-26 12:00:00 736241 737100 736100 736443 4266.680\n", | |
"3 2018-10-26 11:00:00 736450 736798 735219 736241 5736.741\n", | |
"4 2018-10-26 10:00:00 738242 738613 736317 736463 10863.747" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# BitMEX\n", | |
"df_ohlcv_bm = dtl.get_ohlcv(exchange=exc.BitMEX, period=\"1m\", count=1000,\n", | |
" reverse=False, tstype=\"UTS\")\n", | |
"print(\"[BitMEX ohlcv: %d]\" % len(df_ohlcv_bm.index))\n", | |
"display(df_ohlcv_bm.head())\n", | |
"\n", | |
"# bitFlyer\n", | |
"df_ohlcv_bf = dtl.get_ohlcv(exchange=exc.bitFlyer, period=\"1h\", count=200,\n", | |
" reverse=True, tstype=\"DT\")\n", | |
"print(\"[bitFlyer ohlcv: %d]\" % len(df_ohlcv_bf.index))\n", | |
"display(df_ohlcv_bf.head())" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### 四本値取得\n", | |
"```python\n", | |
"get_ohlcv_col(exchange=Exchange.BitMEX, period=\"1m\", col=\"close\",\n", | |
" count=1000, reverse=False) \n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" exchange(Exchange(enum)) 処理対象取引所\n", | |
" period(string) 時間足(1m, 3m, 5m, 15m, 30m,\n", | |
" 1h, 2h, 3h, 4h, 6h, 8h, 12h, 1d)\n", | |
" col(string) 取得する列名\n", | |
" count(int) 取得行数\n", | |
" reverse(bool) 並び順(True:新->古, False:古->新)\n", | |
"[return]\n", | |
" ndarray\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[BitMEX open: 50]\n", | |
"[6417.5 6418. 6418. 6417.5 6417.5 6418. 6419.5 6419. 6419. 6419.\n", | |
" 6419. 6419. 6419.5 6418. 6417. 6416.5 6415. 6415. 6412.5 6411.5\n", | |
" 6411.5 6411. 6411.5 6407. 6409.5 6409.5 6409. 6409. 6409.5 6409.\n", | |
" 6409. 6409. 6411.5 6411.5 6409.5 6403.5 6399.5 6398. 6398. 6399.\n", | |
" 6399. 6397.5 6397.5 6398. 6394.5 6392.5 6395.5 6395.5 6396. 6396. ]\n", | |
"\n", | |
"[bitFlyer close: 50]\n", | |
"[733579 732688 734167 734419 735000 736152 735750 735975 735808 735791\n", | |
" 736443 736405 736783 736637 736241 736400 736500 736420 736463 736796\n", | |
" 736618 737826 738253 734165 733834 734145 734213 734252 734395 734288\n", | |
" 735025 734969 734658 734913 734449 734366 734534 734812 734444 734042\n", | |
" 733465 733500 733744 734471 734437 734868 734459 734196 734698 734724]\n" | |
] | |
} | |
], | |
"source": [ | |
"# 始値リスト取得(BitMEX)\n", | |
"ary_open_bm = dtl.get_ohlcv_col(exchange=exc.BitMEX, period=\"5m\", col=\"open\",\n", | |
" count=50, reverse=False)\n", | |
"print(\"[BitMEX open: %d]\" % len(ary_open_bm))\n", | |
"print(ary_open_bm)\n", | |
"\n", | |
"# 終値リスト取得(bitFlyer)\n", | |
"ary_close_bf = dtl.get_ohlcv_col(exchange=exc.bitFlyer, period=\"15m\", col=\"close\",\n", | |
" count=50, reverse=True)\n", | |
"print(\"\\n[bitFlyer close: %d]\" % len(ary_close_bf))\n", | |
"print(ary_close_bf)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### オーダーブック取得\n", | |
"```python\n", | |
"get_orderbook(exchange=Exchange.BitMEX, depth=10)\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" exchange(Exchange(enum)) 処理対象取引所\n", | |
" depth(int) bids/asksをそれぞれ取得する件数\n", | |
"[return]\n", | |
" dict{\"bids\":[[\"price\", \"size\"]], \"asks\":[[\"price\", \"size\"]]}\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[BitMEX orderbook asks:10 bids:10]\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"'[asks]'" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"[[6400.5, 122503],\n", | |
" [6400.0, 412642],\n", | |
" [6399.5, 171084],\n", | |
" [6399.0, 781949],\n", | |
" [6398.5, 309483],\n", | |
" [6398.0, 411556],\n", | |
" [6397.5, 151627],\n", | |
" [6397.0, 642472],\n", | |
" [6396.5, 114618],\n", | |
" [6396.0, 2138323]]" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"'[bids]'" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"[[6395.5, 6035872],\n", | |
" [6395.0, 713876],\n", | |
" [6394.5, 22274],\n", | |
" [6394.0, 143074],\n", | |
" [6393.5, 51997],\n", | |
" [6393.0, 239023],\n", | |
" [6392.5, 444565],\n", | |
" [6392.0, 1483128],\n", | |
" [6391.5, 165218],\n", | |
" [6391.0, 1257555]]" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[bitFlyer orderbook asks:10 bids:10]\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"'[asks]'" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"[[733468.0, 0.01],\n", | |
" [733471.0, 0.10048893],\n", | |
" [733473.0, 0.1],\n", | |
" [733474.0, 0.05],\n", | |
" [733475.0, 0.1],\n", | |
" [733477.0, 0.47],\n", | |
" [733478.0, 1.1029963],\n", | |
" [733482.0, 0.01],\n", | |
" [733489.0, 0.601],\n", | |
" [733490.0, 5.10986665]]" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"'[bids]'" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"[[733435.0, 0.09135019],\n", | |
" [733431.0, 0.2],\n", | |
" [733430.0, 0.14],\n", | |
" [733424.0, 0.2],\n", | |
" [733423.0, 0.54],\n", | |
" [733422.0, 0.561],\n", | |
" [733420.0, 0.05],\n", | |
" [733419.0, 0.2],\n", | |
" [733417.0, 0.05],\n", | |
" [733416.0, 0.21]]" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# BitMEX\n", | |
"dct_ob_bm = dtl.get_orderbook(exchange=exc.BitMEX, depth=10)\n", | |
"print(\"[BitMEX orderbook asks:%d bids:%d]\" %\n", | |
" (len(dct_ob_bm[\"asks\"]), len(dct_ob_bm[\"bids\"])))\n", | |
"display(\"[asks]\", dct_ob_bm[\"asks\"])\n", | |
"display(\"[bids]\", dct_ob_bm[\"bids\"])\n", | |
"\n", | |
"# bitFlyer\n", | |
"dct_ob_bf = dtl.get_orderbook(exchange=exc.bitFlyer, depth=10)\n", | |
"print(\"[bitFlyer orderbook asks:%d bids:%d]\" %\n", | |
" (len(dct_ob_bf[\"asks\"]), len(dct_ob_bf[\"bids\"])))\n", | |
"display(\"[asks]\", dct_ob_bf[\"asks\"])\n", | |
"display(\"[bids]\", dct_ob_bf[\"bids\"])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### 価格情報取得\n", | |
"```python\n", | |
"get_ticker(exchange=Exchange.BitMEX)\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" exchange(Exchange(enum)) 処理対象取引所\n", | |
"[return]\n", | |
" dict{\"last\", \"bid\", \"ask\"}\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[BitMEX ticker] last:6396.0 bid:6395.5 ask:6396.0\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/usr/local/lib/python3.6/site-packages/bravado_core/spec.py:271: Warning: JSON format is not registered with bravado-core!\n", | |
" category=Warning,\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[bitFlyer ticker] last:733435.0 bid:733454.0 ask:733468.0\n" | |
] | |
} | |
], | |
"source": [ | |
"# BitMEX\n", | |
"ticker_bm = dtl.get_ticker(exchange=exc.BitMEX)\n", | |
"print(\"[BitMEX ticker] last:{last} bid:{bid} ask:{ask}\".format(**ticker_bm))\n", | |
"\n", | |
"# bitFlyer\n", | |
"ticker_bf = dtl.get_ticker(exchange=exc.bitFlyer)\n", | |
"print(\"[bitFlyer ticker] last:{last} bid:{bid} ask:{ask}\".format(**ticker_bf))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### ポジション情報取得\n", | |
"```python\n", | |
"get_position(exchange=Exchange.BitMEX)\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" exchange(Exchange(enum)) 処理対象取引所\n", | |
"[return]\n", | |
" dict{\"size\", \"avr_entry\"}\n", | |
" (size : Buy -> +, Sell -> -)\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[BitMEX position] size:0 avr_entry:0\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/usr/local/lib/python3.6/site-packages/bravado_core/spec.py:271: Warning: JSON format is not registered with bravado-core!\n", | |
" category=Warning,\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[bitFlyer position] size:0.3 avr_entry:733394\n" | |
] | |
} | |
], | |
"source": [ | |
"# BitMEX\n", | |
"pos_bm = dtl.get_position(exchange=exc.BitMEX)\n", | |
"print(\"[BitMEX position] size:{size} avr_entry:{avr_entry}\".format(**pos_bm))\n", | |
"\n", | |
"# bitFlyer\n", | |
"pos_bf = dtl.get_position(exchange=exc.bitFlyer)\n", | |
"print(\"[bitFlyer position] size:{size} avr_entry:{avr_entry}\".format(**pos_bf))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### 残高情報取得\n", | |
"```python\n", | |
"get_balance(exchange=Exchange.BitMEX)\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" exchange(Exchange(enum)) 処理対象取引所\n", | |
"[return]\n", | |
" float/int\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[BitMEX balance] 0.01169473\n", | |
"[bitFlyer balance] 47277\n" | |
] | |
} | |
], | |
"source": [ | |
"# BitMEX\n", | |
"balance_bm = dtl.get_balance(exchange=exc.BitMEX)\n", | |
"print(\"[BitMEX balance] {}\".format(balance_bm))\n", | |
"\n", | |
"# bitFlyer\n", | |
"balance_bf = dtl.get_balance(exchange=exc.bitFlyer)\n", | |
"print(\"[bitFlyer balance] {}\".format(balance_bf))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### 約定履歴から指定期間のOHLCVを生成\n", | |
"```python\n", | |
"trades_to_ohlcv(df, period=\"1H\", label=\"left\")\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" df(DataFrame) 約定履歴(\"timestamp\":Datetimeindexであること)\n", | |
" columns=[\"timestamp\", \"price\", \"size\"]\n", | |
" period(string) 指定期間(\"1S\":1秒, \"1T\":1分, \"1H\":1時間, \"1D\":1日)\n", | |
" label(string) 変換後のtimestamp(\"left\":期間開始時刻, \"right\":期間終了時刻)\n", | |
"[return]\n", | |
" DataFrame\n", | |
" columns=[\"timestamp\", \"open\", \"high\", \"low\", \"close\", \"volume\"]\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/usr/local/lib/python3.6/site-packages/bravado_core/spec.py:271: Warning: guid format is not registered with bravado-core!\n", | |
" category=Warning,\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Success API request. time: 2018-10-26 14:42:35.904000+00:00 get_trades: 500 RateLimit: 296/300 Reset: 1540565008\n", | |
"Success API request. time: 2018-10-26 14:43:25.640000+00:00 get_trades: 538 RateLimit: 296/300 Reset: 1540565008\n" | |
] | |
}, | |
{ | |
"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>side</th>\n", | |
" <th>price</th>\n", | |
" <th>size</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>timestamp</th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>2018-10-26 14:33:27.619000+00:00</th>\n", | |
" <td>Sell</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>23000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-26 14:33:31.492000+00:00</th>\n", | |
" <td>Sell</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>1000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-26 14:33:32.941000+00:00</th>\n", | |
" <td>Sell</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>1000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-26 14:33:34.048000+00:00</th>\n", | |
" <td>Buy</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>2131</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-26 14:33:34.048000+00:00</th>\n", | |
" <td>Buy</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>200</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" side price size\n", | |
"timestamp \n", | |
"2018-10-26 14:33:27.619000+00:00 Sell 6395.5 23000\n", | |
"2018-10-26 14:33:31.492000+00:00 Sell 6395.5 1000\n", | |
"2018-10-26 14:33:32.941000+00:00 Sell 6395.5 1000\n", | |
"2018-10-26 14:33:34.048000+00:00 Buy 6396.0 2131\n", | |
"2018-10-26 14:33:34.048000+00:00 Buy 6396.0 200" | |
] | |
}, | |
"metadata": {}, | |
"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>timestamp</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>2018-10-26 14:33:00+00:00</th>\n", | |
" <td>6395.5</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>94363</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-26 14:34:00+00:00</th>\n", | |
" <td>6395.5</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>138123</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-26 14:35:00+00:00</th>\n", | |
" <td>6395.5</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>106647</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-26 14:36:00+00:00</th>\n", | |
" <td>6395.5</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>2994438</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-26 14:37:00+00:00</th>\n", | |
" <td>6395.5</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>168630</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" open high low close volume\n", | |
"timestamp \n", | |
"2018-10-26 14:33:00+00:00 6395.5 6396.0 6395.5 6396.0 94363\n", | |
"2018-10-26 14:34:00+00:00 6395.5 6396.0 6395.5 6396.0 138123\n", | |
"2018-10-26 14:35:00+00:00 6395.5 6396.0 6395.5 6396.0 106647\n", | |
"2018-10-26 14:36:00+00:00 6395.5 6396.0 6395.5 6396.0 2994438\n", | |
"2018-10-26 14:37:00+00:00 6395.5 6396.0 6395.5 6395.5 168630" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# BitMEX約定履歴取得\n", | |
"to_time = int(time.time()) # 現在時刻UnixTime\n", | |
"from_time = to_time - 10 * 60 # 10分前UnixTime\n", | |
"df_trades = dtl.get_trades(exchange=exc.BitMEX, ut_from=from_time, ut_to=to_time,\n", | |
" reverse=False, tstype=\"DT\")\n", | |
"df_trades.set_index([\"timestamp\"], inplace=True)\n", | |
"display(df_trades.head())\n", | |
"\n", | |
"# 約定履歴から1m足OHLCV生成\n", | |
"df_ohlcv = dtl.trades_to_ohlcv(df_trades, period=\"1T\", label=\"left\")\n", | |
"display(df_ohlcv.head())" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### OHLCVを指定期間にリサンプリング\n", | |
"```python\n", | |
"resample_ohlcv(df, period=\"1H\", label=\"left\")\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" df(DataFrame) 変換するOHLCV(\"timestamp\":Datetimeindexであること)\n", | |
" columns=[\"timestamp\", \"open\", \"high\", \"low\", \"close\", \"volume\"]\n", | |
" period(string) 指定期間(\"1S\":1秒, \"1T\":1分, \"1H\":1時間, \"1D\":1日)\n", | |
" label(string) 変換後のtimestamp(\"left\":期間開始時刻, \"right\":期間終了時刻)\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"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>timestamp</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>2018-10-25 22:04:00+00:00</th>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>60108</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-25 22:05:00+00:00</th>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>86305</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-25 22:06:00+00:00</th>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>27621</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-25 22:07:00+00:00</th>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>21739</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-25 22:08:00+00:00</th>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>88933</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" open high low close volume\n", | |
"timestamp \n", | |
"2018-10-25 22:04:00+00:00 6400.0 6400.5 6400.0 6400.0 60108\n", | |
"2018-10-25 22:05:00+00:00 6400.0 6400.5 6400.0 6400.5 86305\n", | |
"2018-10-25 22:06:00+00:00 6400.5 6400.5 6400.0 6400.0 27621\n", | |
"2018-10-25 22:07:00+00:00 6400.0 6400.5 6400.0 6400.0 21739\n", | |
"2018-10-25 22:08:00+00:00 6400.0 6400.5 6400.0 6400.0 88933" | |
] | |
}, | |
"metadata": {}, | |
"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>timestamp</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>2018-10-25 22:00:00+00:00</th>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>60108</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-25 22:05:00+00:00</th>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>337667</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-25 22:10:00+00:00</th>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>529709</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-25 22:15:00+00:00</th>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6400.5</td>\n", | |
" <td>1173384</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2018-10-25 22:20:00+00:00</th>\n", | |
" <td>6400.5</td>\n", | |
" <td>6403.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6403.0</td>\n", | |
" <td>3438894</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" open high low close volume\n", | |
"timestamp \n", | |
"2018-10-25 22:00:00+00:00 6400.0 6400.5 6400.0 6400.0 60108\n", | |
"2018-10-25 22:05:00+00:00 6400.0 6400.5 6400.0 6400.5 337667\n", | |
"2018-10-25 22:10:00+00:00 6400.5 6400.5 6400.0 6400.0 529709\n", | |
"2018-10-25 22:15:00+00:00 6400.0 6400.5 6400.0 6400.5 1173384\n", | |
"2018-10-25 22:20:00+00:00 6400.5 6403.5 6400.0 6403.0 3438894" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# BitMEX 1mOHLCV取得\n", | |
"df_ohlcv_1m = dtl.get_ohlcv(exchange=exc.BitMEX, period=\"1m\", count=1000,\n", | |
" reverse=False, tstype=\"DT\")\n", | |
"df_ohlcv_1m.set_index([\"timestamp\"], inplace=True)\n", | |
"display(df_ohlcv_1m.head())\n", | |
"\n", | |
"# 5m足にリサンプリング\n", | |
"df_ohlcv_5m = dtl.resample_ohlcv(df_ohlcv_1m, period=\"5T\", label=\"left\")\n", | |
"display(df_ohlcv_5m.head())" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### DataFrameのtimestamp列を指定period単位に丸める\n", | |
"```python\n", | |
"round_timestamp(df, col=\"index\", period=60)\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" df(DataFrame) 変換するtimestampを持つDataFrame\n", | |
" col(string) 変換するtimestamp列名(indexは\"index\")\n", | |
" period(int) 丸める期間(秒)\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/usr/local/lib/python3.6/site-packages/bravado_core/spec.py:271: Warning: guid format is not registered with bravado-core!\n", | |
" category=Warning,\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Success API request. time: 2018-10-26 14:42:35.904000+00:00 get_trades: 500 RateLimit: 294/300 Reset: 1540565008\n", | |
"Success API request. time: 2018-10-26 14:43:25.640000+00:00 get_trades: 538 RateLimit: 294/300 Reset: 1540565009\n" | |
] | |
}, | |
{ | |
"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>price</th>\n", | |
" <th>size</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2018-10-26 14:33:27.619000+00:00</td>\n", | |
" <td>Sell</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>23000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2018-10-26 14:33:31.492000+00:00</td>\n", | |
" <td>Sell</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>1000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2018-10-26 14:33:32.941000+00:00</td>\n", | |
" <td>Sell</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>1000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2018-10-26 14:33:34.048000+00:00</td>\n", | |
" <td>Buy</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>2131</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2018-10-26 14:33:34.048000+00:00</td>\n", | |
" <td>Buy</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>200</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp side price size\n", | |
"0 2018-10-26 14:33:27.619000+00:00 Sell 6395.5 23000\n", | |
"1 2018-10-26 14:33:31.492000+00:00 Sell 6395.5 1000\n", | |
"2 2018-10-26 14:33:32.941000+00:00 Sell 6395.5 1000\n", | |
"3 2018-10-26 14:33:34.048000+00:00 Buy 6396.0 2131\n", | |
"4 2018-10-26 14:33:34.048000+00:00 Buy 6396.0 200" | |
] | |
}, | |
"metadata": {}, | |
"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>price</th>\n", | |
" <th>size</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2018-10-26 14:33:00+00:00</td>\n", | |
" <td>Sell</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>23000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2018-10-26 14:33:00+00:00</td>\n", | |
" <td>Sell</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>1000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2018-10-26 14:33:00+00:00</td>\n", | |
" <td>Sell</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>1000</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2018-10-26 14:33:00+00:00</td>\n", | |
" <td>Buy</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>2131</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2018-10-26 14:33:00+00:00</td>\n", | |
" <td>Buy</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>200</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp side price size\n", | |
"0 2018-10-26 14:33:00+00:00 Sell 6395.5 23000\n", | |
"1 2018-10-26 14:33:00+00:00 Sell 6395.5 1000\n", | |
"2 2018-10-26 14:33:00+00:00 Sell 6395.5 1000\n", | |
"3 2018-10-26 14:33:00+00:00 Buy 6396.0 2131\n", | |
"4 2018-10-26 14:33:00+00:00 Buy 6396.0 200" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# BitMEX約定履歴取得\n", | |
"to_time = int(time.time()) # 現在時刻UnixTime\n", | |
"from_time = to_time - 10 * 60 # 10分前UnixTime\n", | |
"df_trades = dtl.get_trades(exchange=exc.BitMEX, ut_from=from_time, ut_to=to_time,\n", | |
" reverse=False, tstype=\"DT\")\n", | |
"display(df_trades.head())\n", | |
"\n", | |
"# timestamp列の時刻を1m単位に丸める\n", | |
"dtl.round_timestamp(df_trades, col=\"timestamp\", period=60)\n", | |
"display(df_trades.head())" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### DataFrameをソート\n", | |
"```python\n", | |
"sort_df(df, by=\"index\", ascending=True, reset_index=False)\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" df(DataFrame) ソートするDataFrame\n", | |
" by(string/list) ソートキー列名(複数はlistで指定)\n", | |
" ascending(bool/list) True:昇順, False:降順(by列数と項目数を合わせる)\n", | |
" reset_index(bool) インデックスリセット\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"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>open</th>\n", | |
" <th>high</th>\n", | |
" <th>low</th>\n", | |
" <th>close</th>\n", | |
" <th>volume</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2018-10-26 11:24:00+00:00</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>181348</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2018-10-26 11:25:00+00:00</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>128443</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2018-10-26 11:26:00+00:00</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>424200</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2018-10-26 11:27:00+00:00</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>30923</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2018-10-26 11:28:00+00:00</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>233314</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp open high low close volume\n", | |
"0 2018-10-26 11:24:00+00:00 6419.5 6419.5 6419.0 6419.0 181348\n", | |
"1 2018-10-26 11:25:00+00:00 6419.0 6419.5 6419.0 6419.0 128443\n", | |
"2 2018-10-26 11:26:00+00:00 6419.0 6419.5 6419.0 6419.0 424200\n", | |
"3 2018-10-26 11:27:00+00:00 6419.0 6419.5 6419.0 6419.0 30923\n", | |
"4 2018-10-26 11:28:00+00:00 6419.0 6419.5 6419.0 6419.0 233314" | |
] | |
}, | |
"metadata": {}, | |
"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>open</th>\n", | |
" <th>high</th>\n", | |
" <th>low</th>\n", | |
" <th>close</th>\n", | |
" <th>volume</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>131</th>\n", | |
" <td>2018-10-26 13:35:00+00:00</td>\n", | |
" <td>6399.5</td>\n", | |
" <td>6400.0</td>\n", | |
" <td>6392.0</td>\n", | |
" <td>6392.5</td>\n", | |
" <td>9848358</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>127</th>\n", | |
" <td>2018-10-26 13:31:00+00:00</td>\n", | |
" <td>6401.5</td>\n", | |
" <td>6401.5</td>\n", | |
" <td>6395.0</td>\n", | |
" <td>6398.0</td>\n", | |
" <td>9091067</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>125</th>\n", | |
" <td>2018-10-26 13:29:00+00:00</td>\n", | |
" <td>6409.0</td>\n", | |
" <td>6409.5</td>\n", | |
" <td>6402.0</td>\n", | |
" <td>6403.5</td>\n", | |
" <td>7367240</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>110</th>\n", | |
" <td>2018-10-26 13:14:00+00:00</td>\n", | |
" <td>6409.0</td>\n", | |
" <td>6411.5</td>\n", | |
" <td>6409.0</td>\n", | |
" <td>6411.5</td>\n", | |
" <td>5876442</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>62</th>\n", | |
" <td>2018-10-26 12:26:00+00:00</td>\n", | |
" <td>6411.0</td>\n", | |
" <td>6411.5</td>\n", | |
" <td>6408.5</td>\n", | |
" <td>6408.5</td>\n", | |
" <td>5747241</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp open high low close volume\n", | |
"131 2018-10-26 13:35:00+00:00 6399.5 6400.0 6392.0 6392.5 9848358\n", | |
"127 2018-10-26 13:31:00+00:00 6401.5 6401.5 6395.0 6398.0 9091067\n", | |
"125 2018-10-26 13:29:00+00:00 6409.0 6409.5 6402.0 6403.5 7367240\n", | |
"110 2018-10-26 13:14:00+00:00 6409.0 6411.5 6409.0 6411.5 5876442\n", | |
"62 2018-10-26 12:26:00+00:00 6411.0 6411.5 6408.5 6408.5 5747241" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# BitMEX 1mOHLCV取得\n", | |
"df_ohlcv = dtl.get_ohlcv(exchange=exc.BitMEX, period=\"1m\", count=200,\n", | |
" reverse=False, tstype=\"DT\")\n", | |
"display(df_ohlcv.head())\n", | |
"\n", | |
"# 出来高が大きい順にソート\n", | |
"dtl.sort_df(df_ohlcv, by=\"volume\", ascending=False, reset_index=False)\n", | |
"display(df_ohlcv.head())" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### DataFrameを反転\n", | |
"```python\n", | |
"reverse_df(df, axis=\"index\", reset_index=False)\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" df(DataFrame) 反転するDataFrame\n", | |
" axis(string) \"index\":行反転, \"column\":列反転\n", | |
" reset_index(bool) インデックスリセット\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"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>open</th>\n", | |
" <th>high</th>\n", | |
" <th>low</th>\n", | |
" <th>close</th>\n", | |
" <th>volume</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2018-10-26 11:24:00+00:00</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>181348</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2018-10-26 11:25:00+00:00</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>128443</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2018-10-26 11:26:00+00:00</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>424200</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2018-10-26 11:27:00+00:00</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>30923</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2018-10-26 11:28:00+00:00</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>233314</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp open high low close volume\n", | |
"0 2018-10-26 11:24:00+00:00 6419.5 6419.5 6419.0 6419.0 181348\n", | |
"1 2018-10-26 11:25:00+00:00 6419.0 6419.5 6419.0 6419.0 128443\n", | |
"2 2018-10-26 11:26:00+00:00 6419.0 6419.5 6419.0 6419.0 424200\n", | |
"3 2018-10-26 11:27:00+00:00 6419.0 6419.5 6419.0 6419.0 30923\n", | |
"4 2018-10-26 11:28:00+00:00 6419.0 6419.5 6419.0 6419.0 233314" | |
] | |
}, | |
"metadata": {}, | |
"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>open</th>\n", | |
" <th>high</th>\n", | |
" <th>low</th>\n", | |
" <th>close</th>\n", | |
" <th>volume</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>199</th>\n", | |
" <td>2018-10-26 14:43:00+00:00</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>51511</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>198</th>\n", | |
" <td>2018-10-26 14:42:00+00:00</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>133946</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>197</th>\n", | |
" <td>2018-10-26 14:41:00+00:00</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>246971</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>196</th>\n", | |
" <td>2018-10-26 14:40:00+00:00</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>169967</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>195</th>\n", | |
" <td>2018-10-26 14:39:00+00:00</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>6395.5</td>\n", | |
" <td>6396.0</td>\n", | |
" <td>73251</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp open high low close volume\n", | |
"199 2018-10-26 14:43:00+00:00 6396.0 6396.0 6395.5 6396.0 51511\n", | |
"198 2018-10-26 14:42:00+00:00 6396.0 6396.0 6395.5 6396.0 133946\n", | |
"197 2018-10-26 14:41:00+00:00 6396.0 6396.0 6395.5 6396.0 246971\n", | |
"196 2018-10-26 14:40:00+00:00 6396.0 6396.0 6395.5 6396.0 169967\n", | |
"195 2018-10-26 14:39:00+00:00 6395.5 6396.0 6395.5 6396.0 73251" | |
] | |
}, | |
"metadata": {}, | |
"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>volume</th>\n", | |
" <th>close</th>\n", | |
" <th>low</th>\n", | |
" <th>high</th>\n", | |
" <th>open</th>\n", | |
" <th>timestamp</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>181348</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>2018-10-26 11:24:00+00:00</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>128443</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>2018-10-26 11:25:00+00:00</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>424200</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>2018-10-26 11:26:00+00:00</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>30923</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>2018-10-26 11:27:00+00:00</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>233314</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>6419.5</td>\n", | |
" <td>6419.0</td>\n", | |
" <td>2018-10-26 11:28:00+00:00</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" volume close low high open timestamp\n", | |
"0 181348 6419.0 6419.0 6419.5 6419.5 2018-10-26 11:24:00+00:00\n", | |
"1 128443 6419.0 6419.0 6419.5 6419.0 2018-10-26 11:25:00+00:00\n", | |
"2 424200 6419.0 6419.0 6419.5 6419.0 2018-10-26 11:26:00+00:00\n", | |
"3 30923 6419.0 6419.0 6419.5 6419.0 2018-10-26 11:27:00+00:00\n", | |
"4 233314 6419.0 6419.0 6419.5 6419.0 2018-10-26 11:28:00+00:00" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# BitMEX 1mOHLCV取得\n", | |
"df_ohlcv = dtl.get_ohlcv(exchange=exc.BitMEX, period=\"1m\", count=200,\n", | |
" reverse=False, tstype=\"DT\")\n", | |
"display(df_ohlcv.head())\n", | |
"\n", | |
"# 行反転\n", | |
"df_ohlcv_rev = dtl.reverse_df(df_ohlcv, axis=\"index\", reset_index=False)\n", | |
"display(df_ohlcv_rev.head())\n", | |
"\n", | |
"# 列反転\n", | |
"df_ohlcv_rev = dtl.reverse_df(df_ohlcv, axis=\"column\", reset_index=False)\n", | |
"display(df_ohlcv_rev.head())" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"#### 日付変換\n", | |
"**[datetime -> UnixTime]**\n", | |
"```python\n", | |
"dt_to_ut(dt, unit=\"s\")\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" dt(datetime) 変換するdatetime\n", | |
" unit(string) \"s\"[sec], \"ms\"[msec]\n", | |
"[return]\n", | |
" int\n", | |
"```\n", | |
"<BR/>\n", | |
"**[UnixTime -> datetime]**\n", | |
"```python\n", | |
"ut_to_dt(ut, unit=\"s\", tz=None)\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" ut(int) 変換するUnixTime\n", | |
" unit(string) \"s\"[sec], \"ms\"[msec]\n", | |
" tz(string) 設定するタイムゾーン(入力時のみ設定)\n", | |
"[return]\n", | |
" datetime\n", | |
"```\n", | |
"<BR/>\n", | |
"**[datetime -> str]**\n", | |
"```python\n", | |
"dt_to_str(dt, fmt=\"%Y-%m-%dT%H:%M:%S.%fZ\")\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" dt(datetime/Series) 変換するdatetime/Series\n", | |
" fmt(string) 変換する文字列フォーマット\n", | |
"[return]\n", | |
" string/Series\n", | |
"```\n", | |
"<BR/>\n", | |
"**[str -> datetime]**\n", | |
"```python\n", | |
"str_to_dt(str_dt, fmt=\"%Y-%m-%dT%H:%M:%S.%fZ\", tz=None)\n", | |
"```\n", | |
"```\n", | |
"[@param]\n", | |
" str_dt(string) 変換する日付文字列\n", | |
" fmt(string) 変換する文字列フォーマット\n", | |
" tz(string) 設定するタイムゾーン(入力時のみ設定)\n", | |
"[return]\n", | |
" datetime\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"2018-10-26 14:43:29.236776+00:00 <class 'datetime.datetime'>\n", | |
"[datetime -> UnixTime] 1540565009 <class 'int'>\n", | |
"[UnixTime -> datetime] 2018-10-26 14:43:29 <class 'datetime.datetime'>\n", | |
"[datetime -> str ] 2018/10/26 14:43:29 <class 'str'>\n", | |
"[str -> datetime] 2018-10-26 14:43:29+00:00 <class 'datetime.datetime'>\n" | |
] | |
} | |
], | |
"source": [ | |
"# datetime現在時刻\n", | |
"dt_now = datetime.now(pytz.utc)\n", | |
"print(dt_now, type(dt_now))\n", | |
"\n", | |
"# datetime -> UnixTime\n", | |
"ut_now = dtl.dt_to_ut(dt_now, unit=\"s\")\n", | |
"print(\"[datetime -> UnixTime]\", ut_now, type(ut_now))\n", | |
"\n", | |
"# UnixTime -> datetime\n", | |
"dt_now2 = dtl.ut_to_dt(ut_now, unit=\"s\", tz=None)\n", | |
"print(\"[UnixTime -> datetime]\", dt_now2, type(dt_now2))\n", | |
"\n", | |
"# datetime -> str\n", | |
"str_now = dtl.dt_to_str(dt_now, fmt=\"%Y/%m/%d %H:%M:%S\")\n", | |
"print(\"[datetime -> str ]\", str_now, type(str_now))\n", | |
"\n", | |
"# str -> datetime\n", | |
"dt_now3 = dtl.str_to_dt(str_now, fmt=\"%Y/%m/%d %H:%M:%S\", tz=pytz.utc)\n", | |
"print(\"[str -> datetime]\", dt_now3, type(dt_now3))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Success API request. time: 2018-10-26 14:43:28.381000+00:00 get_trades: 47 RateLimit: 293/300 Reset: 1540565010\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/usr/local/lib/python3.6/site-packages/bravado_core/spec.py:271: Warning: guid format is not registered with bravado-core!\n", | |
" category=Warning,\n" | |
] | |
}, | |
{ | |
"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", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2018-10-26 14:42:32.319000+00:00</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp\n", | |
"0 2018-10-26 14:42:31.918000+00:00\n", | |
"1 2018-10-26 14:42:31.918000+00:00\n", | |
"2 2018-10-26 14:42:31.918000+00:00\n", | |
"3 2018-10-26 14:42:31.918000+00:00\n", | |
"4 2018-10-26 14:42:32.319000+00:00" | |
] | |
}, | |
"metadata": {}, | |
"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>dt_to_ut</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2018-10-26 14:42:32.319000+00:00</td>\n", | |
" <td>1540564952</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp dt_to_ut\n", | |
"0 2018-10-26 14:42:31.918000+00:00 1540564951\n", | |
"1 2018-10-26 14:42:31.918000+00:00 1540564951\n", | |
"2 2018-10-26 14:42:31.918000+00:00 1540564951\n", | |
"3 2018-10-26 14:42:31.918000+00:00 1540564951\n", | |
"4 2018-10-26 14:42:32.319000+00:00 1540564952" | |
] | |
}, | |
"metadata": {}, | |
"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>dt_to_ut</th>\n", | |
" <th>ut_to_dt</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2018-10-26 14:42:32.319000+00:00</td>\n", | |
" <td>1540564952</td>\n", | |
" <td>2018-10-26 14:42:32</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp dt_to_ut ut_to_dt\n", | |
"0 2018-10-26 14:42:31.918000+00:00 1540564951 2018-10-26 14:42:31\n", | |
"1 2018-10-26 14:42:31.918000+00:00 1540564951 2018-10-26 14:42:31\n", | |
"2 2018-10-26 14:42:31.918000+00:00 1540564951 2018-10-26 14:42:31\n", | |
"3 2018-10-26 14:42:31.918000+00:00 1540564951 2018-10-26 14:42:31\n", | |
"4 2018-10-26 14:42:32.319000+00:00 1540564952 2018-10-26 14:42:32" | |
] | |
}, | |
"metadata": {}, | |
"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>dt_to_ut</th>\n", | |
" <th>ut_to_dt</th>\n", | |
" <th>dt_to_str</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" <td>2018/10/26 14:42:31</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" <td>2018/10/26 14:42:31</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" <td>2018/10/26 14:42:31</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" <td>2018/10/26 14:42:31</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2018-10-26 14:42:32.319000+00:00</td>\n", | |
" <td>1540564952</td>\n", | |
" <td>2018-10-26 14:42:32</td>\n", | |
" <td>2018/10/26 14:42:32</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp dt_to_ut ut_to_dt \\\n", | |
"0 2018-10-26 14:42:31.918000+00:00 1540564951 2018-10-26 14:42:31 \n", | |
"1 2018-10-26 14:42:31.918000+00:00 1540564951 2018-10-26 14:42:31 \n", | |
"2 2018-10-26 14:42:31.918000+00:00 1540564951 2018-10-26 14:42:31 \n", | |
"3 2018-10-26 14:42:31.918000+00:00 1540564951 2018-10-26 14:42:31 \n", | |
"4 2018-10-26 14:42:32.319000+00:00 1540564952 2018-10-26 14:42:32 \n", | |
"\n", | |
" dt_to_str \n", | |
"0 2018/10/26 14:42:31 \n", | |
"1 2018/10/26 14:42:31 \n", | |
"2 2018/10/26 14:42:31 \n", | |
"3 2018/10/26 14:42:31 \n", | |
"4 2018/10/26 14:42:32 " | |
] | |
}, | |
"metadata": {}, | |
"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>dt_to_ut</th>\n", | |
" <th>ut_to_dt</th>\n", | |
" <th>dt_to_str</th>\n", | |
" <th>str_to_dt</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" <td>2018/10/26 14:42:31</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" <td>2018/10/26 14:42:31</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" <td>2018/10/26 14:42:31</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>2018-10-26 14:42:31.918000+00:00</td>\n", | |
" <td>1540564951</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" <td>2018/10/26 14:42:31</td>\n", | |
" <td>2018-10-26 14:42:31</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>2018-10-26 14:42:32.319000+00:00</td>\n", | |
" <td>1540564952</td>\n", | |
" <td>2018-10-26 14:42:32</td>\n", | |
" <td>2018/10/26 14:42:32</td>\n", | |
" <td>2018-10-26 14:42:32</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" timestamp dt_to_ut ut_to_dt \\\n", | |
"0 2018-10-26 14:42:31.918000+00:00 1540564951 2018-10-26 14:42:31 \n", | |
"1 2018-10-26 14:42:31.918000+00:00 1540564951 2018-10-26 14:42:31 \n", | |
"2 2018-10-26 14:42:31.918000+00:00 1540564951 2018-10-26 14:42:31 \n", | |
"3 2018-10-26 14:42:31.918000+00:00 1540564951 2018-10-26 14:42:31 \n", | |
"4 2018-10-26 14:42:32.319000+00:00 1540564952 2018-10-26 14:42:32 \n", | |
"\n", | |
" dt_to_str str_to_dt \n", | |
"0 2018/10/26 14:42:31 2018-10-26 14:42:31 \n", | |
"1 2018/10/26 14:42:31 2018-10-26 14:42:31 \n", | |
"2 2018/10/26 14:42:31 2018-10-26 14:42:31 \n", | |
"3 2018/10/26 14:42:31 2018-10-26 14:42:31 \n", | |
"4 2018/10/26 14:42:32 2018-10-26 14:42:32 " | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"timestamp <class 'pandas._libs.tslib.Timestamp'>\n", | |
"dt_to_ut <class 'numpy.int64'>\n", | |
"ut_to_dt <class 'pandas._libs.tslib.Timestamp'>\n", | |
"dt_to_str <class 'str'>\n", | |
"str_to_dt <class 'pandas._libs.tslib.Timestamp'>\n" | |
] | |
} | |
], | |
"source": [ | |
"# BitMEX約定履歴取得\n", | |
"to_time = int(time.time()) # 現在時刻UnixTime\n", | |
"from_time = to_time - 60 # 1分前UnixTime\n", | |
"df_trades = dtl.get_trades(exchange=exc.BitMEX, ut_from=from_time, ut_to=to_time,\n", | |
" reverse=False, tstype=\"DT\")\n", | |
"df = df_trades[[\"timestamp\"]].copy()\n", | |
"display(df.head())\n", | |
"\n", | |
"# datetime -> UnixTime\n", | |
"df[\"dt_to_ut\"] = dtl.dt_to_ut(df[\"timestamp\"], unit=\"s\")\n", | |
"display(df.head())\n", | |
"\n", | |
"# UnixTime -> datetime\n", | |
"df[\"ut_to_dt\"] = dtl.ut_to_dt(df[\"dt_to_ut\"], unit=\"s\", tz=None)\n", | |
"display(df.head())\n", | |
"\n", | |
"# datetime -> str\n", | |
"df[\"dt_to_str\"] = dtl.dt_to_str(df[\"timestamp\"], fmt=\"%Y/%m/%d %H:%M:%S\")\n", | |
"display(df.head())\n", | |
"\n", | |
"# str -> datetime\n", | |
"df[\"str_to_dt\"] = dtl.str_to_dt(df[\"dt_to_str\"], fmt=\"%Y/%m/%d %H:%M:%S\", tz=pytz.utc)\n", | |
"display(df.head())\n", | |
"\n", | |
"# データ型確認\n", | |
"for i in range(len(df.columns)):\n", | |
" print(df.columns[i], type(df.iloc[0, i]))" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.6.2" | |
}, | |
"toc": { | |
"nav_menu": {}, | |
"number_sections": true, | |
"sideBar": true, | |
"skip_h1_title": false, | |
"title_cell": "Table of Contents", | |
"title_sidebar": "Contents", | |
"toc_cell": false, | |
"toc_position": {}, | |
"toc_section_display": true, | |
"toc_window_display": false | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment