Skip to content

Instantly share code, notes, and snippets.

@manuelinfosec
Created June 26, 2022 14:20
Show Gist options
  • Save manuelinfosec/e82160e524bd58580f7f75a1d8507cd0 to your computer and use it in GitHub Desktop.
Save manuelinfosec/e82160e524bd58580f7f75a1d8507cd0 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"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