Skip to content

Instantly share code, notes, and snippets.

@nagishin
Last active October 26, 2018 15:00
Show Gist options
  • Save nagishin/d5818e9d71dc9a86b49e2b51f2fdeb5d to your computer and use it in GitHub Desktop.
Save nagishin/d5818e9d71dc9a86b49e2b51f2fdeb5d to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"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