Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.59 KB | None | 0 0
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 37,
  6. "metadata": {},
  7. "outputs": [
  8. {
  9. "data": {
  10. "text/html": [
  11. "<div>\n",
  12. "<style scoped>\n",
  13. " .dataframe tbody tr th:only-of-type {\n",
  14. " vertical-align: middle;\n",
  15. " }\n",
  16. "\n",
  17. " .dataframe tbody tr th {\n",
  18. " vertical-align: top;\n",
  19. " }\n",
  20. "\n",
  21. " .dataframe thead th {\n",
  22. " text-align: right;\n",
  23. " }\n",
  24. "</style>\n",
  25. "<table border=\"1\" class=\"dataframe\">\n",
  26. " <thead>\n",
  27. " <tr style=\"text-align: right;\">\n",
  28. " <th></th>\n",
  29. " <th>timestamp</th>\n",
  30. " <th>open</th>\n",
  31. " <th>high</th>\n",
  32. " <th>low</th>\n",
  33. " <th>close</th>\n",
  34. " <th>volume</th>\n",
  35. " <th>date</th>\n",
  36. " </tr>\n",
  37. " </thead>\n",
  38. " <tbody>\n",
  39. " <tr>\n",
  40. " <th>0</th>\n",
  41. " <td>1553145720000</td>\n",
  42. " <td>4020</td>\n",
  43. " <td>4020.5</td>\n",
  44. " <td>4019.5</td>\n",
  45. " <td>4019.5</td>\n",
  46. " <td>581188</td>\n",
  47. " <td>2019-03-21 05:22:00</td>\n",
  48. " </tr>\n",
  49. " <tr>\n",
  50. " <th>1</th>\n",
  51. " <td>1553145660000</td>\n",
  52. " <td>4020</td>\n",
  53. " <td>4020.5</td>\n",
  54. " <td>4020.0</td>\n",
  55. " <td>4020.0</td>\n",
  56. " <td>183212</td>\n",
  57. " <td>2019-03-21 05:21:00</td>\n",
  58. " </tr>\n",
  59. " <tr>\n",
  60. " <th>2</th>\n",
  61. " <td>1553145600000</td>\n",
  62. " <td>4021</td>\n",
  63. " <td>4021.0</td>\n",
  64. " <td>4020.0</td>\n",
  65. " <td>4020.0</td>\n",
  66. " <td>696643</td>\n",
  67. " <td>2019-03-21 05:20:00</td>\n",
  68. " </tr>\n",
  69. " <tr>\n",
  70. " <th>3</th>\n",
  71. " <td>1553145540000</td>\n",
  72. " <td>4021</td>\n",
  73. " <td>4021.5</td>\n",
  74. " <td>4021.0</td>\n",
  75. " <td>4021.0</td>\n",
  76. " <td>272889</td>\n",
  77. " <td>2019-03-21 05:19:00</td>\n",
  78. " </tr>\n",
  79. " </tbody>\n",
  80. "</table>\n",
  81. "</div>"
  82. ],
  83. "text/plain": [
  84. " timestamp open high low close volume date\n",
  85. "0 1553145720000 4020 4020.5 4019.5 4019.5 581188 2019-03-21 05:22:00\n",
  86. "1 1553145660000 4020 4020.5 4020.0 4020.0 183212 2019-03-21 05:21:00\n",
  87. "2 1553145600000 4021 4021.0 4020.0 4020.0 696643 2019-03-21 05:20:00\n",
  88. "3 1553145540000 4021 4021.5 4021.0 4021.0 272889 2019-03-21 05:19:00"
  89. ]
  90. },
  91. "metadata": {},
  92. "output_type": "display_data"
  93. }
  94. ],
  95. "source": [
  96. "# coding: utf-8\n",
  97. "import ccxt\n",
  98. "import time\n",
  99. "from datetime import datetime\n",
  100. "import pandas as pd\n",
  101. "from IPython.display import display\n",
  102. "\n",
  103. "# ccxt BitMEXオブジェクト\n",
  104. "bitmex = ccxt.bitmex()\n",
  105. "# BTC/USDのOHLCVデータ取得\n",
  106. "lst_ohlcv = bitmex.fetch_ohlcv('BTC/USD', timeframe='1m', limit=5, params={'reverse': True})\n",
  107. "# 未確定足を削除\n",
  108. "lst_ohlcv = lst_ohlcv[1:]\n",
  109. "# DataFrame化して表示\n",
  110. "df = pd.DataFrame(lst_ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])\n",
  111. "df['date'] = pd.to_datetime(df['timestamp'] , unit='ms')\n",
  112. "display(df)\n"
  113. ]
  114. },
  115. {
  116. "cell_type": "code",
  117. "execution_count": 38,
  118. "metadata": {},
  119. "outputs": [
  120. {
  121. "name": "stdout",
  122. "output_type": "stream",
  123. "text": [
  124. "取得済の最新timestamp : 1553145720000\n",
  125. "現在足切り替わりまでのsleep時間 : 51.891093492507935\n",
  126. "確定した最新足取得時刻 : 2019-03-21 05:23:00.123182\n"
  127. ]
  128. },
  129. {
  130. "data": {
  131. "text/html": [
  132. "<div>\n",
  133. "<style scoped>\n",
  134. " .dataframe tbody tr th:only-of-type {\n",
  135. " vertical-align: middle;\n",
  136. " }\n",
  137. "\n",
  138. " .dataframe tbody tr th {\n",
  139. " vertical-align: top;\n",
  140. " }\n",
  141. "\n",
  142. " .dataframe thead th {\n",
  143. " text-align: right;\n",
  144. " }\n",
  145. "</style>\n",
  146. "<table border=\"1\" class=\"dataframe\">\n",
  147. " <thead>\n",
  148. " <tr style=\"text-align: right;\">\n",
  149. " <th></th>\n",
  150. " <th>timestamp</th>\n",
  151. " <th>open</th>\n",
  152. " <th>high</th>\n",
  153. " <th>low</th>\n",
  154. " <th>close</th>\n",
  155. " <th>volume</th>\n",
  156. " <th>date</th>\n",
  157. " </tr>\n",
  158. " </thead>\n",
  159. " <tbody>\n",
  160. " <tr>\n",
  161. " <th>0</th>\n",
  162. " <td>1553145780000</td>\n",
  163. " <td>4019.5</td>\n",
  164. " <td>4019.5</td>\n",
  165. " <td>4018.5</td>\n",
  166. " <td>4018.5</td>\n",
  167. " <td>396838</td>\n",
  168. " <td>2019-03-21 05:23:00</td>\n",
  169. " </tr>\n",
  170. " <tr>\n",
  171. " <th>1</th>\n",
  172. " <td>1553145720000</td>\n",
  173. " <td>4020.0</td>\n",
  174. " <td>4020.5</td>\n",
  175. " <td>4019.5</td>\n",
  176. " <td>4019.5</td>\n",
  177. " <td>581188</td>\n",
  178. " <td>2019-03-21 05:22:00</td>\n",
  179. " </tr>\n",
  180. " <tr>\n",
  181. " <th>2</th>\n",
  182. " <td>1553145660000</td>\n",
  183. " <td>4020.0</td>\n",
  184. " <td>4020.5</td>\n",
  185. " <td>4020.0</td>\n",
  186. " <td>4020.0</td>\n",
  187. " <td>183212</td>\n",
  188. " <td>2019-03-21 05:21:00</td>\n",
  189. " </tr>\n",
  190. " <tr>\n",
  191. " <th>3</th>\n",
  192. " <td>1553145600000</td>\n",
  193. " <td>4021.0</td>\n",
  194. " <td>4021.0</td>\n",
  195. " <td>4020.0</td>\n",
  196. " <td>4020.0</td>\n",
  197. " <td>696643</td>\n",
  198. " <td>2019-03-21 05:20:00</td>\n",
  199. " </tr>\n",
  200. " <tr>\n",
  201. " <th>4</th>\n",
  202. " <td>1553145540000</td>\n",
  203. " <td>4021.0</td>\n",
  204. " <td>4021.5</td>\n",
  205. " <td>4021.0</td>\n",
  206. " <td>4021.0</td>\n",
  207. " <td>272889</td>\n",
  208. " <td>2019-03-21 05:19:00</td>\n",
  209. " </tr>\n",
  210. " </tbody>\n",
  211. "</table>\n",
  212. "</div>"
  213. ],
  214. "text/plain": [
  215. " timestamp open high low close volume date\n",
  216. "0 1553145780000 4019.5 4019.5 4018.5 4018.5 396838 2019-03-21 05:23:00\n",
  217. "1 1553145720000 4020.0 4020.5 4019.5 4019.5 581188 2019-03-21 05:22:00\n",
  218. "2 1553145660000 4020.0 4020.5 4020.0 4020.0 183212 2019-03-21 05:21:00\n",
  219. "3 1553145600000 4021.0 4021.0 4020.0 4020.0 696643 2019-03-21 05:20:00\n",
  220. "4 1553145540000 4021.0 4021.5 4021.0 4021.0 272889 2019-03-21 05:19:00"
  221. ]
  222. },
  223. "metadata": {},
  224. "output_type": "display_data"
  225. },
  226. {
  227. "name": "stdout",
  228. "output_type": "stream",
  229. "text": [
  230. "現在足切り替わりまでのsleep時間 : 59.85912299156189\n"
  231. ]
  232. },
  233. {
  234. "ename": "KeyboardInterrupt",
  235. "evalue": "",
  236. "output_type": "error",
  237. "traceback": [
  238. "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
  239. "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
  240. "\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",
  241. "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
  242. ]
  243. }
  244. ],
  245. "source": [
  246. "# 取得済の最新足timestamp\n",
  247. "last_timestamp = lst_ohlcv[0][0]\n",
  248. "print(\"取得済の最新timestamp : \", last_timestamp)\n",
  249. "\n",
  250. "while True:\n",
  251. " # 現在UnixTimeが次足timestampを超えたら, 新たなOHLCV取得\n",
  252. " if last_timestamp + 60 * 1000 < int(time.time() * 1000):\n",
  253. " # BTC/USDのOHLCVデータ取得\n",
  254. " ohlcvs = bitmex.fetch_ohlcv('BTC/USD', timeframe='1m', limit=limit, params=params)\n",
  255. " # OHLCVが取得できなかったり, 取得した最新足timestampが新しくなかったら1秒待ってから再取得\n",
  256. " if len(ohlcvs) < 2 or last_timestamp >= ohlcvs[1][0]:\n",
  257. " time.sleep(1)\n",
  258. " continue\n",
  259. "\n",
  260. " # lst_ohlcvの先頭に取得した最新足を追加\n",
  261. " lst_ohlcv = [ohlcvs[1]] + lst_ohlcv\n",
  262. " # DataFrame化して表示\n",
  263. " print(\"確定した最新足取得時刻 : \", datetime.now())\n",
  264. " df = pd.DataFrame(lst_ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])\n",
  265. " df['date'] = pd.to_datetime(df['timestamp'] , unit='ms')\n",
  266. " display(df)\n",
  267. "\n",
  268. " # 次の足切り替わりまでsleep\n",
  269. " sleep_sec = 60 - time.time() % 60\n",
  270. " print(\"現在足切り替わりまでのsleep時間 : \", round(sleep_sec))\n",
  271. " if sleep_sec > 0:\n",
  272. " time.sleep(sleep_sec)\n"
  273. ]
  274. }
  275. ],
  276. "metadata": {
  277. "kernelspec": {
  278. "display_name": "Python 3",
  279. "language": "python",
  280. "name": "python3"
  281. },
  282. "language_info": {
  283. "codemirror_mode": {
  284. "name": "ipython",
  285. "version": 3
  286. },
  287. "file_extension": ".py",
  288. "mimetype": "text/x-python",
  289. "name": "python",
  290. "nbconvert_exporter": "python",
  291. "pygments_lexer": "ipython3",
  292. "version": "3.6.2"
  293. },
  294. "toc": {
  295. "nav_menu": {},
  296. "number_sections": true,
  297. "sideBar": true,
  298. "skip_h1_title": false,
  299. "title_cell": "Table of Contents",
  300. "title_sidebar": "Contents",
  301. "toc_cell": false,
  302. "toc_position": {},
  303. "toc_section_display": true,
  304. "toc_window_display": false
  305. }
  306. },
  307. "nbformat": 4,
  308. "nbformat_minor": 2
  309. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement