Created
June 26, 2022 14:20
-
-
Save manuelinfosec/e82160e524bd58580f7f75a1d8507cd0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 54, | |
"id": "9d5b8bad", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import requests\n", | |
"import json\n", | |
"import datetime as dt\n", | |
"import pandas as pd" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 55, | |
"id": "6fcb702d", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"url = 'https://api.binance.com/'\n", | |
"endpoint = 'api/v3/klines'\n", | |
"\n", | |
"base = 'BTC'\n", | |
"quote = 'USDT' \n", | |
"\n", | |
"symbol = base+quote\n", | |
"interval = '1d'\n", | |
"limit = 1000\n", | |
"\n", | |
"start = dt.datetime(2020,1,1); end = dt.datetime(2020,2,1)\n", | |
"startTime = int(dt.datetime.timestamp(start)*1000); endTime = int(dt.datetime.timestamp(end)*1000)\n", | |
"fromtime = lambda time: dt.datetime.fromtimestamp(time[0]/1000).strftime('%a %d %b, %Y %H:%M:%S')\n", | |
"totime = lambda time: dt.datetime.fromtimestamp(time[6]/1000).strftime('%a %d %b, %Y %H:%M:%S')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 60, | |
"id": "59e923b2", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"href = f\"{url}{endpoint}?symbol={symbol}&interval={interval}&startTime={startTime}&endTime={endTime}&limit={limit}\"\n", | |
"data = requests.get(href).json()\n", | |
"open_times = list(map(fromtime, data)); close_times = list(map(totime,data))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 87, | |
"id": "f5d7078b", | |
"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>OpenTime</th>\n", | |
" <th>Open</th>\n", | |
" <th>High</th>\n", | |
" <th>Low</th>\n", | |
" <th>Close</th>\n", | |
" <th>CloseTime</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>Wed 01 Jan, 2020 01:00:00</td>\n", | |
" <td>7195.24</td>\n", | |
" <td>7255.00</td>\n", | |
" <td>7175.15</td>\n", | |
" <td>7200.85</td>\n", | |
" <td>Thu 02 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>Thu 02 Jan, 2020 01:00:00</td>\n", | |
" <td>7200.77</td>\n", | |
" <td>7212.50</td>\n", | |
" <td>6924.74</td>\n", | |
" <td>6965.71</td>\n", | |
" <td>Fri 03 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>Fri 03 Jan, 2020 01:00:00</td>\n", | |
" <td>6965.49</td>\n", | |
" <td>7405.00</td>\n", | |
" <td>6871.04</td>\n", | |
" <td>7344.96</td>\n", | |
" <td>Sat 04 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>Sat 04 Jan, 2020 01:00:00</td>\n", | |
" <td>7345.00</td>\n", | |
" <td>7404.00</td>\n", | |
" <td>7272.21</td>\n", | |
" <td>7354.11</td>\n", | |
" <td>Sun 05 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>Sun 05 Jan, 2020 01:00:00</td>\n", | |
" <td>7354.19</td>\n", | |
" <td>7495.00</td>\n", | |
" <td>7318.00</td>\n", | |
" <td>7358.75</td>\n", | |
" <td>Mon 06 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>5</th>\n", | |
" <td>Mon 06 Jan, 2020 01:00:00</td>\n", | |
" <td>7357.64</td>\n", | |
" <td>7795.34</td>\n", | |
" <td>7346.76</td>\n", | |
" <td>7758.00</td>\n", | |
" <td>Tue 07 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>6</th>\n", | |
" <td>Tue 07 Jan, 2020 01:00:00</td>\n", | |
" <td>7758.90</td>\n", | |
" <td>8207.68</td>\n", | |
" <td>7723.71</td>\n", | |
" <td>8145.28</td>\n", | |
" <td>Wed 08 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>7</th>\n", | |
" <td>Wed 08 Jan, 2020 01:00:00</td>\n", | |
" <td>8145.92</td>\n", | |
" <td>8455.00</td>\n", | |
" <td>7870.00</td>\n", | |
" <td>8055.98</td>\n", | |
" <td>Thu 09 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>8</th>\n", | |
" <td>Thu 09 Jan, 2020 01:00:00</td>\n", | |
" <td>8054.72</td>\n", | |
" <td>8055.96</td>\n", | |
" <td>7750.00</td>\n", | |
" <td>7817.76</td>\n", | |
" <td>Fri 10 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>9</th>\n", | |
" <td>Fri 10 Jan, 2020 01:00:00</td>\n", | |
" <td>7817.74</td>\n", | |
" <td>8199.00</td>\n", | |
" <td>7672.00</td>\n", | |
" <td>8197.02</td>\n", | |
" <td>Sat 11 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>10</th>\n", | |
" <td>Sat 11 Jan, 2020 01:00:00</td>\n", | |
" <td>8198.86</td>\n", | |
" <td>8286.34</td>\n", | |
" <td>8003.16</td>\n", | |
" <td>8020.01</td>\n", | |
" <td>Sun 12 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>11</th>\n", | |
" <td>Sun 12 Jan, 2020 01:00:00</td>\n", | |
" <td>8020.01</td>\n", | |
" <td>8197.00</td>\n", | |
" <td>7960.00</td>\n", | |
" <td>8184.98</td>\n", | |
" <td>Mon 13 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>12</th>\n", | |
" <td>Mon 13 Jan, 2020 01:00:00</td>\n", | |
" <td>8184.97</td>\n", | |
" <td>8196.00</td>\n", | |
" <td>8055.89</td>\n", | |
" <td>8110.34</td>\n", | |
" <td>Tue 14 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>13</th>\n", | |
" <td>Tue 14 Jan, 2020 01:00:00</td>\n", | |
" <td>8110.34</td>\n", | |
" <td>8880.00</td>\n", | |
" <td>8105.54</td>\n", | |
" <td>8810.01</td>\n", | |
" <td>Wed 15 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>14</th>\n", | |
" <td>Wed 15 Jan, 2020 01:00:00</td>\n", | |
" <td>8814.64</td>\n", | |
" <td>8916.48</td>\n", | |
" <td>8564.00</td>\n", | |
" <td>8821.41</td>\n", | |
" <td>Thu 16 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>15</th>\n", | |
" <td>Thu 16 Jan, 2020 01:00:00</td>\n", | |
" <td>8820.01</td>\n", | |
" <td>8859.81</td>\n", | |
" <td>8586.00</td>\n", | |
" <td>8720.01</td>\n", | |
" <td>Fri 17 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>16</th>\n", | |
" <td>Fri 17 Jan, 2020 01:00:00</td>\n", | |
" <td>8720.15</td>\n", | |
" <td>9041.65</td>\n", | |
" <td>8672.44</td>\n", | |
" <td>8913.28</td>\n", | |
" <td>Sat 18 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>17</th>\n", | |
" <td>Sat 18 Jan, 2020 01:00:00</td>\n", | |
" <td>8913.27</td>\n", | |
" <td>8988.88</td>\n", | |
" <td>8806.38</td>\n", | |
" <td>8915.96</td>\n", | |
" <td>Sun 19 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>18</th>\n", | |
" <td>Sun 19 Jan, 2020 01:00:00</td>\n", | |
" <td>8915.09</td>\n", | |
" <td>9198.98</td>\n", | |
" <td>8466.00</td>\n", | |
" <td>8701.70</td>\n", | |
" <td>Mon 20 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>19</th>\n", | |
" <td>Mon 20 Jan, 2020 01:00:00</td>\n", | |
" <td>8701.72</td>\n", | |
" <td>8746.99</td>\n", | |
" <td>8521.28</td>\n", | |
" <td>8642.35</td>\n", | |
" <td>Tue 21 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>20</th>\n", | |
" <td>Tue 21 Jan, 2020 01:00:00</td>\n", | |
" <td>8642.35</td>\n", | |
" <td>8789.00</td>\n", | |
" <td>8488.00</td>\n", | |
" <td>8736.03</td>\n", | |
" <td>Wed 22 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>21</th>\n", | |
" <td>Wed 22 Jan, 2020 01:00:00</td>\n", | |
" <td>8736.04</td>\n", | |
" <td>8818.00</td>\n", | |
" <td>8590.00</td>\n", | |
" <td>8682.36</td>\n", | |
" <td>Thu 23 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>22</th>\n", | |
" <td>Thu 23 Jan, 2020 01:00:00</td>\n", | |
" <td>8682.77</td>\n", | |
" <td>8691.81</td>\n", | |
" <td>8306.39</td>\n", | |
" <td>8404.52</td>\n", | |
" <td>Fri 24 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>23</th>\n", | |
" <td>Fri 24 Jan, 2020 01:00:00</td>\n", | |
" <td>8404.52</td>\n", | |
" <td>8528.02</td>\n", | |
" <td>8238.00</td>\n", | |
" <td>8439.00</td>\n", | |
" <td>Sat 25 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>24</th>\n", | |
" <td>Sat 25 Jan, 2020 01:00:00</td>\n", | |
" <td>8438.99</td>\n", | |
" <td>8451.26</td>\n", | |
" <td>8254.90</td>\n", | |
" <td>8340.58</td>\n", | |
" <td>Sun 26 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>25</th>\n", | |
" <td>Sun 26 Jan, 2020 01:00:00</td>\n", | |
" <td>8340.01</td>\n", | |
" <td>8618.13</td>\n", | |
" <td>8293.66</td>\n", | |
" <td>8615.00</td>\n", | |
" <td>Mon 27 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>26</th>\n", | |
" <td>Mon 27 Jan, 2020 01:00:00</td>\n", | |
" <td>8614.39</td>\n", | |
" <td>9000.00</td>\n", | |
" <td>8535.00</td>\n", | |
" <td>8907.57</td>\n", | |
" <td>Tue 28 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>27</th>\n", | |
" <td>Tue 28 Jan, 2020 01:00:00</td>\n", | |
" <td>8907.57</td>\n", | |
" <td>9400.00</td>\n", | |
" <td>8862.40</td>\n", | |
" <td>9374.21</td>\n", | |
" <td>Wed 29 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>28</th>\n", | |
" <td>Wed 29 Jan, 2020 01:00:00</td>\n", | |
" <td>9375.34</td>\n", | |
" <td>9449.24</td>\n", | |
" <td>9216.00</td>\n", | |
" <td>9301.53</td>\n", | |
" <td>Thu 30 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>29</th>\n", | |
" <td>Thu 30 Jan, 2020 01:00:00</td>\n", | |
" <td>9301.57</td>\n", | |
" <td>9578.00</td>\n", | |
" <td>9204.44</td>\n", | |
" <td>9513.21</td>\n", | |
" <td>Fri 31 Jan, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>30</th>\n", | |
" <td>Fri 31 Jan, 2020 01:00:00</td>\n", | |
" <td>9511.52</td>\n", | |
" <td>9530.22</td>\n", | |
" <td>9210.01</td>\n", | |
" <td>9352.89</td>\n", | |
" <td>Sat 01 Feb, 2020 00:59:59</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" OpenTime Open High Low Close \\\n", | |
"0 Wed 01 Jan, 2020 01:00:00 7195.24 7255.00 7175.15 7200.85 \n", | |
"1 Thu 02 Jan, 2020 01:00:00 7200.77 7212.50 6924.74 6965.71 \n", | |
"2 Fri 03 Jan, 2020 01:00:00 6965.49 7405.00 6871.04 7344.96 \n", | |
"3 Sat 04 Jan, 2020 01:00:00 7345.00 7404.00 7272.21 7354.11 \n", | |
"4 Sun 05 Jan, 2020 01:00:00 7354.19 7495.00 7318.00 7358.75 \n", | |
"5 Mon 06 Jan, 2020 01:00:00 7357.64 7795.34 7346.76 7758.00 \n", | |
"6 Tue 07 Jan, 2020 01:00:00 7758.90 8207.68 7723.71 8145.28 \n", | |
"7 Wed 08 Jan, 2020 01:00:00 8145.92 8455.00 7870.00 8055.98 \n", | |
"8 Thu 09 Jan, 2020 01:00:00 8054.72 8055.96 7750.00 7817.76 \n", | |
"9 Fri 10 Jan, 2020 01:00:00 7817.74 8199.00 7672.00 8197.02 \n", | |
"10 Sat 11 Jan, 2020 01:00:00 8198.86 8286.34 8003.16 8020.01 \n", | |
"11 Sun 12 Jan, 2020 01:00:00 8020.01 8197.00 7960.00 8184.98 \n", | |
"12 Mon 13 Jan, 2020 01:00:00 8184.97 8196.00 8055.89 8110.34 \n", | |
"13 Tue 14 Jan, 2020 01:00:00 8110.34 8880.00 8105.54 8810.01 \n", | |
"14 Wed 15 Jan, 2020 01:00:00 8814.64 8916.48 8564.00 8821.41 \n", | |
"15 Thu 16 Jan, 2020 01:00:00 8820.01 8859.81 8586.00 8720.01 \n", | |
"16 Fri 17 Jan, 2020 01:00:00 8720.15 9041.65 8672.44 8913.28 \n", | |
"17 Sat 18 Jan, 2020 01:00:00 8913.27 8988.88 8806.38 8915.96 \n", | |
"18 Sun 19 Jan, 2020 01:00:00 8915.09 9198.98 8466.00 8701.70 \n", | |
"19 Mon 20 Jan, 2020 01:00:00 8701.72 8746.99 8521.28 8642.35 \n", | |
"20 Tue 21 Jan, 2020 01:00:00 8642.35 8789.00 8488.00 8736.03 \n", | |
"21 Wed 22 Jan, 2020 01:00:00 8736.04 8818.00 8590.00 8682.36 \n", | |
"22 Thu 23 Jan, 2020 01:00:00 8682.77 8691.81 8306.39 8404.52 \n", | |
"23 Fri 24 Jan, 2020 01:00:00 8404.52 8528.02 8238.00 8439.00 \n", | |
"24 Sat 25 Jan, 2020 01:00:00 8438.99 8451.26 8254.90 8340.58 \n", | |
"25 Sun 26 Jan, 2020 01:00:00 8340.01 8618.13 8293.66 8615.00 \n", | |
"26 Mon 27 Jan, 2020 01:00:00 8614.39 9000.00 8535.00 8907.57 \n", | |
"27 Tue 28 Jan, 2020 01:00:00 8907.57 9400.00 8862.40 9374.21 \n", | |
"28 Wed 29 Jan, 2020 01:00:00 9375.34 9449.24 9216.00 9301.53 \n", | |
"29 Thu 30 Jan, 2020 01:00:00 9301.57 9578.00 9204.44 9513.21 \n", | |
"30 Fri 31 Jan, 2020 01:00:00 9511.52 9530.22 9210.01 9352.89 \n", | |
"\n", | |
" CloseTime \n", | |
"0 Thu 02 Jan, 2020 00:59:59 \n", | |
"1 Fri 03 Jan, 2020 00:59:59 \n", | |
"2 Sat 04 Jan, 2020 00:59:59 \n", | |
"3 Sun 05 Jan, 2020 00:59:59 \n", | |
"4 Mon 06 Jan, 2020 00:59:59 \n", | |
"5 Tue 07 Jan, 2020 00:59:59 \n", | |
"6 Wed 08 Jan, 2020 00:59:59 \n", | |
"7 Thu 09 Jan, 2020 00:59:59 \n", | |
"8 Fri 10 Jan, 2020 00:59:59 \n", | |
"9 Sat 11 Jan, 2020 00:59:59 \n", | |
"10 Sun 12 Jan, 2020 00:59:59 \n", | |
"11 Mon 13 Jan, 2020 00:59:59 \n", | |
"12 Tue 14 Jan, 2020 00:59:59 \n", | |
"13 Wed 15 Jan, 2020 00:59:59 \n", | |
"14 Thu 16 Jan, 2020 00:59:59 \n", | |
"15 Fri 17 Jan, 2020 00:59:59 \n", | |
"16 Sat 18 Jan, 2020 00:59:59 \n", | |
"17 Sun 19 Jan, 2020 00:59:59 \n", | |
"18 Mon 20 Jan, 2020 00:59:59 \n", | |
"19 Tue 21 Jan, 2020 00:59:59 \n", | |
"20 Wed 22 Jan, 2020 00:59:59 \n", | |
"21 Thu 23 Jan, 2020 00:59:59 \n", | |
"22 Fri 24 Jan, 2020 00:59:59 \n", | |
"23 Sat 25 Jan, 2020 00:59:59 \n", | |
"24 Sun 26 Jan, 2020 00:59:59 \n", | |
"25 Mon 27 Jan, 2020 00:59:59 \n", | |
"26 Tue 28 Jan, 2020 00:59:59 \n", | |
"27 Wed 29 Jan, 2020 00:59:59 \n", | |
"28 Thu 30 Jan, 2020 00:59:59 \n", | |
"29 Fri 31 Jan, 2020 00:59:59 \n", | |
"30 Sat 01 Feb, 2020 00:59:59 " | |
] | |
}, | |
"execution_count": 87, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"data_df = pd.DataFrame(data,columns = [\"OpenTime\", \"Open\", \"High\", \"Low\", \"Close\",f\"{base} Volume\",\"CloseTime\",f\"{quote} Volume\",\"No. of trades\", f\"Taker Buy ({base})\", f\"Taker Buy ({quote})\", \"Ignore\"]).iloc[:, :5]\n", | |
"data_df['OpenTime'] = open_times\n", | |
"data_df['CloseTime'] = close_times\n", | |
"\n", | |
"data_df.iloc[:, 1:5] = data_df.iloc[:, 1:5].astype(float).round(decimals=2)\n", | |
"\n", | |
"data_df" | |
] | |
} | |
], | |
"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.9.4" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 5 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment