Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 37,
- "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",
- " <th>date</th>\n",
- " </tr>\n",
- " </thead>\n",
- " <tbody>\n",
- " <tr>\n",
- " <th>0</th>\n",
- " <td>1553145720000</td>\n",
- " <td>4020</td>\n",
- " <td>4020.5</td>\n",
- " <td>4019.5</td>\n",
- " <td>4019.5</td>\n",
- " <td>581188</td>\n",
- " <td>2019-03-21 05:22:00</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>1</th>\n",
- " <td>1553145660000</td>\n",
- " <td>4020</td>\n",
- " <td>4020.5</td>\n",
- " <td>4020.0</td>\n",
- " <td>4020.0</td>\n",
- " <td>183212</td>\n",
- " <td>2019-03-21 05:21:00</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>2</th>\n",
- " <td>1553145600000</td>\n",
- " <td>4021</td>\n",
- " <td>4021.0</td>\n",
- " <td>4020.0</td>\n",
- " <td>4020.0</td>\n",
- " <td>696643</td>\n",
- " <td>2019-03-21 05:20:00</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>3</th>\n",
- " <td>1553145540000</td>\n",
- " <td>4021</td>\n",
- " <td>4021.5</td>\n",
- " <td>4021.0</td>\n",
- " <td>4021.0</td>\n",
- " <td>272889</td>\n",
- " <td>2019-03-21 05:19:00</td>\n",
- " </tr>\n",
- " </tbody>\n",
- "</table>\n",
- "</div>"
- ],
- "text/plain": [
- " timestamp open high low close volume date\n",
- "0 1553145720000 4020 4020.5 4019.5 4019.5 581188 2019-03-21 05:22:00\n",
- "1 1553145660000 4020 4020.5 4020.0 4020.0 183212 2019-03-21 05:21:00\n",
- "2 1553145600000 4021 4021.0 4020.0 4020.0 696643 2019-03-21 05:20:00\n",
- "3 1553145540000 4021 4021.5 4021.0 4021.0 272889 2019-03-21 05:19:00"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# coding: utf-8\n",
- "import ccxt\n",
- "import time\n",
- "from datetime import datetime\n",
- "import pandas as pd\n",
- "from IPython.display import display\n",
- "\n",
- "# ccxt BitMEXオブジェクト\n",
- "bitmex = ccxt.bitmex()\n",
- "# BTC/USDのOHLCVデータ取得\n",
- "lst_ohlcv = bitmex.fetch_ohlcv('BTC/USD', timeframe='1m', limit=5, params={'reverse': True})\n",
- "# 未確定足を削除\n",
- "lst_ohlcv = lst_ohlcv[1:]\n",
- "# DataFrame化して表示\n",
- "df = pd.DataFrame(lst_ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])\n",
- "df['date'] = pd.to_datetime(df['timestamp'] , unit='ms')\n",
- "display(df)\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 38,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "取得済の最新timestamp : 1553145720000\n",
- "現在足切り替わりまでのsleep時間 : 51.891093492507935\n",
- "確定した最新足取得時刻 : 2019-03-21 05:23:00.123182\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",
- " <th>date</th>\n",
- " </tr>\n",
- " </thead>\n",
- " <tbody>\n",
- " <tr>\n",
- " <th>0</th>\n",
- " <td>1553145780000</td>\n",
- " <td>4019.5</td>\n",
- " <td>4019.5</td>\n",
- " <td>4018.5</td>\n",
- " <td>4018.5</td>\n",
- " <td>396838</td>\n",
- " <td>2019-03-21 05:23:00</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>1</th>\n",
- " <td>1553145720000</td>\n",
- " <td>4020.0</td>\n",
- " <td>4020.5</td>\n",
- " <td>4019.5</td>\n",
- " <td>4019.5</td>\n",
- " <td>581188</td>\n",
- " <td>2019-03-21 05:22:00</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>2</th>\n",
- " <td>1553145660000</td>\n",
- " <td>4020.0</td>\n",
- " <td>4020.5</td>\n",
- " <td>4020.0</td>\n",
- " <td>4020.0</td>\n",
- " <td>183212</td>\n",
- " <td>2019-03-21 05:21:00</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>3</th>\n",
- " <td>1553145600000</td>\n",
- " <td>4021.0</td>\n",
- " <td>4021.0</td>\n",
- " <td>4020.0</td>\n",
- " <td>4020.0</td>\n",
- " <td>696643</td>\n",
- " <td>2019-03-21 05:20:00</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>4</th>\n",
- " <td>1553145540000</td>\n",
- " <td>4021.0</td>\n",
- " <td>4021.5</td>\n",
- " <td>4021.0</td>\n",
- " <td>4021.0</td>\n",
- " <td>272889</td>\n",
- " <td>2019-03-21 05:19:00</td>\n",
- " </tr>\n",
- " </tbody>\n",
- "</table>\n",
- "</div>"
- ],
- "text/plain": [
- " timestamp open high low close volume date\n",
- "0 1553145780000 4019.5 4019.5 4018.5 4018.5 396838 2019-03-21 05:23:00\n",
- "1 1553145720000 4020.0 4020.5 4019.5 4019.5 581188 2019-03-21 05:22:00\n",
- "2 1553145660000 4020.0 4020.5 4020.0 4020.0 183212 2019-03-21 05:21:00\n",
- "3 1553145600000 4021.0 4021.0 4020.0 4020.0 696643 2019-03-21 05:20:00\n",
- "4 1553145540000 4021.0 4021.5 4021.0 4021.0 272889 2019-03-21 05:19:00"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "現在足切り替わりまでのsleep時間 : 59.85912299156189\n"
- ]
- },
- {
- "ename": "KeyboardInterrupt",
- "evalue": "",
- "output_type": "error",
- "traceback": [
- "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
- "\u001b[0;32m<ipython-input-38-23186fcd7990>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"現在足切り替わりまでのsleep時間 : \"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msleep_sec\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msleep_sec\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 27\u001b[0;31m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msleep_sec\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
- "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
- ]
- }
- ],
- "source": [
- "# 取得済の最新足timestamp\n",
- "last_timestamp = lst_ohlcv[0][0]\n",
- "print(\"取得済の最新timestamp : \", last_timestamp)\n",
- "\n",
- "while True:\n",
- " # 現在UnixTimeが次足timestampを超えたら, 新たなOHLCV取得\n",
- " if last_timestamp + 60 * 1000 < int(time.time() * 1000):\n",
- " # BTC/USDのOHLCVデータ取得\n",
- " ohlcvs = bitmex.fetch_ohlcv('BTC/USD', timeframe='1m', limit=limit, params=params)\n",
- " # OHLCVが取得できなかったり, 取得した最新足timestampが新しくなかったら1秒待ってから再取得\n",
- " if len(ohlcvs) < 2 or last_timestamp >= ohlcvs[1][0]:\n",
- " time.sleep(1)\n",
- " continue\n",
- "\n",
- " # lst_ohlcvの先頭に取得した最新足を追加\n",
- " lst_ohlcv = [ohlcvs[1]] + lst_ohlcv\n",
- " # DataFrame化して表示\n",
- " print(\"確定した最新足取得時刻 : \", datetime.now())\n",
- " df = pd.DataFrame(lst_ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])\n",
- " df['date'] = pd.to_datetime(df['timestamp'] , unit='ms')\n",
- " display(df)\n",
- "\n",
- " # 次の足切り替わりまでsleep\n",
- " sleep_sec = 60 - time.time() % 60\n",
- " print(\"現在足切り替わりまでのsleep時間 : \", round(sleep_sec))\n",
- " if sleep_sec > 0:\n",
- " time.sleep(sleep_sec)\n"
- ]
- }
- ],
- "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
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement