Skip to content

Instantly share code, notes, and snippets.

@nagishin
Created October 5, 2018 16:42
Show Gist options
  • Save nagishin/16abcf64e0b5448643d1db215ddb7193 to your computer and use it in GitHub Desktop.
Save nagishin/16abcf64e0b5448643d1db215ddb7193 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'1h'"
]
},
"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>EMA50</th>\n",
" <th>EMA100</th>\n",
" <th>EMA150</th>\n",
" <th>EMA200</th>\n",
" <th>SMA100</th>\n",
" <th>SMA200</th>\n",
" <th>SMA365</th>\n",
" </tr>\n",
" <tr>\n",
" <th>datetime</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2018-10-05 21:00:00+09:00</th>\n",
" <td>1538740800</td>\n",
" <td>6533.423291</td>\n",
" <td>6533.612891</td>\n",
" <td>6537.183763</td>\n",
" <td>6538.830897</td>\n",
" <td>6526.240</td>\n",
" <td>6555.8575</td>\n",
" <td>6564.472603</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-10-05 22:00:00+09:00</th>\n",
" <td>1538744400</td>\n",
" <td>6533.798848</td>\n",
" <td>6533.798774</td>\n",
" <td>6537.260800</td>\n",
" <td>6538.872381</td>\n",
" <td>6525.645</td>\n",
" <td>6556.2000</td>\n",
" <td>6564.857534</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-10-05 23:00:00+09:00</th>\n",
" <td>1538748000</td>\n",
" <td>6534.316540</td>\n",
" <td>6534.060185</td>\n",
" <td>6537.389796</td>\n",
" <td>6538.953253</td>\n",
" <td>6525.180</td>\n",
" <td>6556.6325</td>\n",
" <td>6565.300000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-10-06 00:00:00+09:00</th>\n",
" <td>1538751600</td>\n",
" <td>6535.049225</td>\n",
" <td>6534.435231</td>\n",
" <td>6537.596553</td>\n",
" <td>6539.093021</td>\n",
" <td>6525.060</td>\n",
" <td>6557.0575</td>\n",
" <td>6565.754795</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-10-06 01:00:00+09:00</th>\n",
" <td>1538755200</td>\n",
" <td>6535.753177</td>\n",
" <td>6534.802850</td>\n",
" <td>6537.800573</td>\n",
" <td>6539.231399</td>\n",
" <td>6524.850</td>\n",
" <td>6557.5550</td>\n",
" <td>6566.154795</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" timestamp EMA50 EMA100 EMA150 \\\n",
"datetime \n",
"2018-10-05 21:00:00+09:00 1538740800 6533.423291 6533.612891 6537.183763 \n",
"2018-10-05 22:00:00+09:00 1538744400 6533.798848 6533.798774 6537.260800 \n",
"2018-10-05 23:00:00+09:00 1538748000 6534.316540 6534.060185 6537.389796 \n",
"2018-10-06 00:00:00+09:00 1538751600 6535.049225 6534.435231 6537.596553 \n",
"2018-10-06 01:00:00+09:00 1538755200 6535.753177 6534.802850 6537.800573 \n",
"\n",
" EMA200 SMA100 SMA200 SMA365 \n",
"datetime \n",
"2018-10-05 21:00:00+09:00 6538.830897 6526.240 6555.8575 6564.472603 \n",
"2018-10-05 22:00:00+09:00 6538.872381 6525.645 6556.2000 6564.857534 \n",
"2018-10-05 23:00:00+09:00 6538.953253 6525.180 6556.6325 6565.300000 \n",
"2018-10-06 00:00:00+09:00 6539.093021 6525.060 6557.0575 6565.754795 \n",
"2018-10-06 01:00:00+09:00 6539.231399 6524.850 6557.5550 6566.154795 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'4h'"
]
},
"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>EMA50</th>\n",
" <th>EMA100</th>\n",
" <th>EMA150</th>\n",
" <th>EMA200</th>\n",
" <th>SMA100</th>\n",
" <th>SMA200</th>\n",
" <th>SMA365</th>\n",
" </tr>\n",
" <tr>\n",
" <th>datetime</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2018-10-05 09:00:00+09:00</th>\n",
" <td>1538697600</td>\n",
" <td>6538.847681</td>\n",
" <td>6541.722802</td>\n",
" <td>6554.309922</td>\n",
" <td>6574.840917</td>\n",
" <td>6541.525</td>\n",
" <td>6570.9050</td>\n",
" <td>6577.291781</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-10-05 13:00:00+09:00</th>\n",
" <td>1538712000</td>\n",
" <td>6538.873262</td>\n",
" <td>6541.678786</td>\n",
" <td>6554.113764</td>\n",
" <td>6574.489266</td>\n",
" <td>6544.120</td>\n",
" <td>6567.3150</td>\n",
" <td>6576.208219</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-10-05 17:00:00+09:00</th>\n",
" <td>1538726400</td>\n",
" <td>6538.878232</td>\n",
" <td>6541.625741</td>\n",
" <td>6553.913582</td>\n",
" <td>6574.136139</td>\n",
" <td>6545.980</td>\n",
" <td>6564.0275</td>\n",
" <td>6574.886301</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-10-05 21:00:00+09:00</th>\n",
" <td>1538740800</td>\n",
" <td>6539.059478</td>\n",
" <td>6541.662855</td>\n",
" <td>6553.775654</td>\n",
" <td>6573.831301</td>\n",
" <td>6548.375</td>\n",
" <td>6560.8000</td>\n",
" <td>6573.632877</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-10-06 01:00:00+09:00</th>\n",
" <td>1538755200</td>\n",
" <td>6539.606165</td>\n",
" <td>6541.887353</td>\n",
" <td>6553.765380</td>\n",
" <td>6573.624025</td>\n",
" <td>6550.620</td>\n",
" <td>6557.4250</td>\n",
" <td>6572.372603</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" timestamp EMA50 EMA100 EMA150 \\\n",
"datetime \n",
"2018-10-05 09:00:00+09:00 1538697600 6538.847681 6541.722802 6554.309922 \n",
"2018-10-05 13:00:00+09:00 1538712000 6538.873262 6541.678786 6554.113764 \n",
"2018-10-05 17:00:00+09:00 1538726400 6538.878232 6541.625741 6553.913582 \n",
"2018-10-05 21:00:00+09:00 1538740800 6539.059478 6541.662855 6553.775654 \n",
"2018-10-06 01:00:00+09:00 1538755200 6539.606165 6541.887353 6553.765380 \n",
"\n",
" EMA200 SMA100 SMA200 SMA365 \n",
"datetime \n",
"2018-10-05 09:00:00+09:00 6574.840917 6541.525 6570.9050 6577.291781 \n",
"2018-10-05 13:00:00+09:00 6574.489266 6544.120 6567.3150 6576.208219 \n",
"2018-10-05 17:00:00+09:00 6574.136139 6545.980 6564.0275 6574.886301 \n",
"2018-10-05 21:00:00+09:00 6573.831301 6548.375 6560.8000 6573.632877 \n",
"2018-10-06 01:00:00+09:00 6573.624025 6550.620 6557.4250 6572.372603 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'1d'"
]
},
"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>EMA50</th>\n",
" <th>EMA100</th>\n",
" <th>EMA150</th>\n",
" <th>EMA200</th>\n",
" <th>SMA100</th>\n",
" <th>SMA200</th>\n",
" <th>SMA365</th>\n",
" </tr>\n",
" <tr>\n",
" <th>datetime</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2018-10-01 09:00:00+09:00</th>\n",
" <td>1538352000</td>\n",
" <td>6646.604410</td>\n",
" <td>6878.154839</td>\n",
" <td>7140.903685</td>\n",
" <td>7308.594834</td>\n",
" <td>6744.185</td>\n",
" <td>7341.1125</td>\n",
" <td>8608.277534</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-10-02 09:00:00+09:00</th>\n",
" <td>1538438400</td>\n",
" <td>6643.639531</td>\n",
" <td>6872.072565</td>\n",
" <td>7133.355289</td>\n",
" <td>7301.255463</td>\n",
" <td>6748.245</td>\n",
" <td>7332.7150</td>\n",
" <td>8614.272603</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-10-03 09:00:00+09:00</th>\n",
" <td>1538524800</td>\n",
" <td>6638.104647</td>\n",
" <td>6864.754296</td>\n",
" <td>7124.999586</td>\n",
" <td>7293.307520</td>\n",
" <td>6751.770</td>\n",
" <td>7323.9750</td>\n",
" <td>8620.065753</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-10-04 09:00:00+09:00</th>\n",
" <td>1538611200</td>\n",
" <td>6631.316230</td>\n",
" <td>6856.838370</td>\n",
" <td>7116.257866</td>\n",
" <td>7285.065523</td>\n",
" <td>6753.905</td>\n",
" <td>7317.0550</td>\n",
" <td>8625.947123</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2018-10-05 09:00:00+09:00</th>\n",
" <td>1538697600</td>\n",
" <td>6628.245005</td>\n",
" <td>6850.821768</td>\n",
" <td>7108.797494</td>\n",
" <td>7277.781174</td>\n",
" <td>6758.695</td>\n",
" <td>7308.8750</td>\n",
" <td>8632.357260</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" timestamp EMA50 EMA100 EMA150 \\\n",
"datetime \n",
"2018-10-01 09:00:00+09:00 1538352000 6646.604410 6878.154839 7140.903685 \n",
"2018-10-02 09:00:00+09:00 1538438400 6643.639531 6872.072565 7133.355289 \n",
"2018-10-03 09:00:00+09:00 1538524800 6638.104647 6864.754296 7124.999586 \n",
"2018-10-04 09:00:00+09:00 1538611200 6631.316230 6856.838370 7116.257866 \n",
"2018-10-05 09:00:00+09:00 1538697600 6628.245005 6850.821768 7108.797494 \n",
"\n",
" EMA200 SMA100 SMA200 SMA365 \n",
"datetime \n",
"2018-10-01 09:00:00+09:00 7308.594834 6744.185 7341.1125 8608.277534 \n",
"2018-10-02 09:00:00+09:00 7301.255463 6748.245 7332.7150 8614.272603 \n",
"2018-10-03 09:00:00+09:00 7293.307520 6751.770 7323.9750 8620.065753 \n",
"2018-10-04 09:00:00+09:00 7285.065523 6753.905 7317.0550 8625.947123 \n",
"2018-10-05 09:00:00+09:00 7277.781174 6758.695 7308.8750 8632.357260 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# -*- coding: utf-8 -*-\n",
"from datetime import datetime\n",
"import numpy as np\n",
"import pandas as pd\n",
"from tools import Tools as util\n",
"\n",
"periods = {\"1h\" : 1, \"4h\" : 4, \"1d\" : 24} # 取得したい時間足\n",
"ema_terms = [50, 100, 150, 200] # EMA期間リスト\n",
"sma_terms = [100, 200, 365] # SMA期間リスト\n",
"\n",
"# 結果出力に必要な列リスト\n",
"columns = [\"timestamp\"]\n",
"for term in ema_terms:\n",
" columns.append(\"EMA\" + str(term))\n",
"for term in sma_terms:\n",
" columns.append(\"SMA\" + str(term))\n",
"\n",
"dict_df_ohlcv = {}\n",
"for period in periods.keys():\n",
" # OHLCV取得\n",
" df = util.get_ohlcv_df(period=period, count=2200, reverse=False, partial=False)\n",
" # UnixTimeから日付変換してindexに設定\n",
" df[\"datetime\"] = pd.to_datetime(df[\"timestamp\"], unit=\"s\")\n",
" df = df.set_index(\"datetime\")\n",
" df.index = df.index.tz_localize(\"UTC\")\n",
" df.index = df.index.tz_convert(\"Asia/Tokyo\")\n",
" # EMA計算\n",
" for term in ema_terms:\n",
" df[\"EMA\" + str(term)] = df[\"close\"].ewm(span=term).mean()\n",
" # SMA計算\n",
" for term in sma_terms:\n",
" df[\"SMA\" + str(term)] = df[\"close\"].rolling(window=term, min_periods=1).mean()\n",
" # 必要な列だけにしてdict格納\n",
" dict_df_ohlcv[period] = df[columns]\n",
" # データ表示\n",
" display(period, dict_df_ohlcv[period].tail())\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"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>period</th>\n",
" <th>indicator</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1538755200</td>\n",
" <td>1h</td>\n",
" <td>EMA50</td>\n",
" <td>6535.753177</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1538755200</td>\n",
" <td>1h</td>\n",
" <td>EMA100</td>\n",
" <td>6534.802850</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1538755200</td>\n",
" <td>1h</td>\n",
" <td>EMA150</td>\n",
" <td>6537.800573</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1538755200</td>\n",
" <td>1h</td>\n",
" <td>EMA200</td>\n",
" <td>6539.231399</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1538755200</td>\n",
" <td>1h</td>\n",
" <td>SMA100</td>\n",
" <td>6524.850000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>1538755200</td>\n",
" <td>1h</td>\n",
" <td>SMA200</td>\n",
" <td>6557.555000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>1538755200</td>\n",
" <td>1h</td>\n",
" <td>SMA365</td>\n",
" <td>6566.154795</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>1538755200</td>\n",
" <td>4h</td>\n",
" <td>EMA50</td>\n",
" <td>6539.606165</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>1538755200</td>\n",
" <td>4h</td>\n",
" <td>EMA100</td>\n",
" <td>6541.887353</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>1538755200</td>\n",
" <td>4h</td>\n",
" <td>EMA150</td>\n",
" <td>6553.765380</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>1538755200</td>\n",
" <td>4h</td>\n",
" <td>EMA200</td>\n",
" <td>6573.624025</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>1538755200</td>\n",
" <td>4h</td>\n",
" <td>SMA100</td>\n",
" <td>6550.620000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>1538755200</td>\n",
" <td>4h</td>\n",
" <td>SMA200</td>\n",
" <td>6557.425000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>1538755200</td>\n",
" <td>4h</td>\n",
" <td>SMA365</td>\n",
" <td>6572.372603</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>1538697600</td>\n",
" <td>1d</td>\n",
" <td>EMA50</td>\n",
" <td>6628.245005</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>1538697600</td>\n",
" <td>1d</td>\n",
" <td>EMA100</td>\n",
" <td>6850.821768</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>1538697600</td>\n",
" <td>1d</td>\n",
" <td>EMA150</td>\n",
" <td>7108.797494</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>1538697600</td>\n",
" <td>1d</td>\n",
" <td>EMA200</td>\n",
" <td>7277.781174</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>1538697600</td>\n",
" <td>1d</td>\n",
" <td>SMA100</td>\n",
" <td>6758.695000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>1538697600</td>\n",
" <td>1d</td>\n",
" <td>SMA200</td>\n",
" <td>7308.875000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>1538697600</td>\n",
" <td>1d</td>\n",
" <td>SMA365</td>\n",
" <td>8632.357260</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" timestamp period indicator price\n",
"0 1538755200 1h EMA50 6535.753177\n",
"1 1538755200 1h EMA100 6534.802850\n",
"2 1538755200 1h EMA150 6537.800573\n",
"3 1538755200 1h EMA200 6539.231399\n",
"4 1538755200 1h SMA100 6524.850000\n",
"5 1538755200 1h SMA200 6557.555000\n",
"6 1538755200 1h SMA365 6566.154795\n",
"7 1538755200 4h EMA50 6539.606165\n",
"8 1538755200 4h EMA100 6541.887353\n",
"9 1538755200 4h EMA150 6553.765380\n",
"10 1538755200 4h EMA200 6573.624025\n",
"11 1538755200 4h SMA100 6550.620000\n",
"12 1538755200 4h SMA200 6557.425000\n",
"13 1538755200 4h SMA365 6572.372603\n",
"14 1538697600 1d EMA50 6628.245005\n",
"15 1538697600 1d EMA100 6850.821768\n",
"16 1538697600 1d EMA150 7108.797494\n",
"17 1538697600 1d EMA200 7277.781174\n",
"18 1538697600 1d SMA100 6758.695000\n",
"19 1538697600 1d SMA200 7308.875000\n",
"20 1538697600 1d SMA365 8632.357260"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# -*- coding: utf-8 -*-\n",
"from datetime import datetime\n",
"import numpy as np\n",
"import pandas as pd\n",
"from tools import Tools as util\n",
"from collections import OrderedDict\n",
"\n",
"periods = [\"1h\", \"4h\", \"1d\"] # 取得したい時間足\n",
"ema_terms = [50, 100, 150, 200] # EMA期間リスト\n",
"sma_terms = [100, 200, 365] # SMA期間リスト\n",
"lst_output = [] # 出力する結果格納リスト\n",
"\n",
"for period in periods:\n",
" # OHLCV取得\n",
" df = util.get_ohlcv_df(period=period, count=2200, reverse=False, partial=False)\n",
" # EMA計算\n",
" for term in ema_terms:\n",
" ema = df[\"close\"].ewm(span=term).mean()\n",
" lst_output.append([df.iloc[-1, 0], period, \"EMA\" + str(term), ema.iloc[-1]])\n",
" # SMA計算\n",
" for term in sma_terms:\n",
" sma = df[\"close\"].rolling(window=term, min_periods=1).mean()\n",
" lst_output.append([df.iloc[-1, 0], period, \"SMA\" + str(term), sma.iloc[-1]])\n",
"\n",
"# DataFrame化\n",
"df_output = pd.DataFrame(lst_output, columns=[\"timestamp\", \"period\", \"indicator\", \"price\"])\n",
"# データ表示\n",
"display(df_output)"
]
},
{
"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>period</th>\n",
" <th>EMA50</th>\n",
" <th>EMA100</th>\n",
" <th>EMA150</th>\n",
" <th>EMA200</th>\n",
" <th>SMA100</th>\n",
" <th>SMA200</th>\n",
" <th>SMA365</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1538755200</td>\n",
" <td>1h</td>\n",
" <td>6535.753177</td>\n",
" <td>6534.802850</td>\n",
" <td>6537.800573</td>\n",
" <td>6539.231399</td>\n",
" <td>6524.850</td>\n",
" <td>6557.555</td>\n",
" <td>6566.154795</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1538755200</td>\n",
" <td>4h</td>\n",
" <td>6539.606165</td>\n",
" <td>6541.887353</td>\n",
" <td>6553.765380</td>\n",
" <td>6573.624025</td>\n",
" <td>6550.620</td>\n",
" <td>6557.425</td>\n",
" <td>6572.372603</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1538697600</td>\n",
" <td>1d</td>\n",
" <td>6628.245005</td>\n",
" <td>6850.821768</td>\n",
" <td>7108.797494</td>\n",
" <td>7277.781174</td>\n",
" <td>6758.695</td>\n",
" <td>7308.875</td>\n",
" <td>8632.357260</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" timestamp period EMA50 EMA100 EMA150 EMA200 \\\n",
"0 1538755200 1h 6535.753177 6534.802850 6537.800573 6539.231399 \n",
"1 1538755200 4h 6539.606165 6541.887353 6553.765380 6573.624025 \n",
"2 1538697600 1d 6628.245005 6850.821768 7108.797494 7277.781174 \n",
"\n",
" SMA100 SMA200 SMA365 \n",
"0 6524.850 6557.555 6566.154795 \n",
"1 6550.620 6557.425 6572.372603 \n",
"2 6758.695 7308.875 8632.357260 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# -*- coding: utf-8 -*-\n",
"from datetime import datetime\n",
"import numpy as np\n",
"import pandas as pd\n",
"from tools import Tools as util\n",
"from collections import OrderedDict\n",
"\n",
"periods = [\"1h\", \"4h\", \"1d\"] # 取得したい時間足\n",
"ema_terms = [50, 100, 150, 200] # EMA期間リスト\n",
"sma_terms = [100, 200, 365] # SMA期間リスト\n",
"lst_output = [] # 出力する結果格納リスト\n",
"\n",
"# 結果出力に必要な列リスト\n",
"columns = [\"timestamp\", \"period\"]\n",
"for term in ema_terms:\n",
" columns.append(\"EMA\" + str(term))\n",
"for term in sma_terms:\n",
" columns.append(\"SMA\" + str(term))\n",
"\n",
"for period in periods:\n",
" # OHLCV取得\n",
" df = util.get_ohlcv_df(period=period, count=2200, reverse=False, partial=False)\n",
" lst = [df.iloc[-1, 0], period]\n",
" # EMA計算\n",
" for term in ema_terms:\n",
" ema = df[\"close\"].ewm(span=term).mean()\n",
" lst.append(ema.iloc[-1])\n",
" # SMA計算\n",
" for term in sma_terms:\n",
" sma = df[\"close\"].rolling(window=term, min_periods=1).mean()\n",
" lst.append(sma.iloc[-1])\n",
" lst_output.append(lst)\n",
"\n",
"# DataFrame化\n",
"df_output = pd.DataFrame(lst_output, columns=columns)\n",
"# データ表示\n",
"display(df_output)"
]
}
],
"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