Skip to content

Instantly share code, notes, and snippets.

@snippsat
Created May 16, 2020 18:09
Show Gist options
  • Save snippsat/423466b92899dc871db68304eae134d6 to your computer and use it in GitHub Desktop.
Save snippsat/423466b92899dc871db68304eae134d6 to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# use future imports for python 3.x forward compatibility\n",
"from __future__ import print_function\n",
"from __future__ import unicode_literals\n",
"from __future__ import division\n",
"from __future__ import absolute_import\n",
"\n",
"# other imports\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import datetime\n",
"from talib.abstract import *\n",
"\n",
"# project imports\n",
"import pinkfish as pf\n",
"\n",
"# format price data\n",
"pd.options.display.float_format = '{:0.2f}'.format\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# set size of inline plots\n",
"'''note: rcParams can't be in same cell as import matplotlib\n",
" or %matplotlib inline\n",
" \n",
" %matplotlib notebook: will lead to interactive plots embedded within\n",
" the notebook, you can zoom and resize the figure\n",
" \n",
" %matplotlib inline: only draw static images in the notebook\n",
"'''\n",
"plt.rcParams[\"figure.figsize\"] = (10, 7)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"symbol = '^GSPC'\n",
"#symbol = 'SPY'\n",
"#symbol = '^DJI'\n",
"#symbol = 'DJA'\n",
"#symbol = 'DIA'\n",
"#symbol = 'QQQ'\n",
"#symbol = 'IWM'\n",
"#symbol = 'TLT'\n",
"#symbol = 'GLD'\n",
"#symbol = 'AAPL'\n",
"#symbol = 'BBRY'\n",
"capital = 10000\n",
"#start = datetime.datetime(1900, 1, 1)\n",
"start = datetime.datetime.strptime(pf.SP500_BEGIN, '%Y-%m-%d')\n",
"end = datetime.datetime.now()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"use_adj = False"
]
},
{
"cell_type": "code",
"execution_count": 6,
"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>high</th>\n",
" <th>low</th>\n",
" <th>open</th>\n",
" <th>close</th>\n",
" <th>volume</th>\n",
" <th>adj_close</th>\n",
" </tr>\n",
" <tr>\n",
" <th>date</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>1971-01-04</th>\n",
" <td>92.19</td>\n",
" <td>90.64</td>\n",
" <td>92.15</td>\n",
" <td>91.15</td>\n",
" <td>10010000</td>\n",
" <td>91.15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1971-01-05</th>\n",
" <td>92.28</td>\n",
" <td>90.69</td>\n",
" <td>91.15</td>\n",
" <td>91.80</td>\n",
" <td>12600000</td>\n",
" <td>91.80</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1971-01-06</th>\n",
" <td>93.00</td>\n",
" <td>91.50</td>\n",
" <td>91.80</td>\n",
" <td>92.35</td>\n",
" <td>16960000</td>\n",
" <td>92.35</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1971-01-07</th>\n",
" <td>93.26</td>\n",
" <td>91.75</td>\n",
" <td>92.35</td>\n",
" <td>92.38</td>\n",
" <td>16460000</td>\n",
" <td>92.38</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1971-01-08</th>\n",
" <td>93.02</td>\n",
" <td>91.60</td>\n",
" <td>92.38</td>\n",
" <td>92.19</td>\n",
" <td>14100000</td>\n",
" <td>92.19</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" high low open close volume adj_close\n",
"date \n",
"1971-01-04 92.19 90.64 92.15 91.15 10010000 91.15\n",
"1971-01-05 92.28 90.69 91.15 91.80 12600000 91.80\n",
"1971-01-06 93.00 91.50 91.80 92.35 16960000 92.35\n",
"1971-01-07 93.26 91.75 92.35 92.38 16460000 92.38\n",
"1971-01-08 93.02 91.60 92.38 92.19 14100000 92.19"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ts = pf.fetch_timeseries(symbol)\n",
"ts = pf.select_tradeperiod(ts, start, end, use_adj)\n",
"ts.head()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"ename": "KeyError",
"evalue": "'sma50'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32mG:\\Anaconda3\\envs\\pink_env\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 2656\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2657\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2658\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
"\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
"\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
"\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
"\u001b[1;31mKeyError\u001b[0m: 'sma50'",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-7-70c98c27b630>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mts\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'close'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0maxes\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'close'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'k'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[0mts\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'sma50'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0maxes\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'sma50'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'r'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6\u001b[0m \u001b[0mts\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'sma200'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0maxes\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'sma200'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'b'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlegend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mloc\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'best'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mG:\\Anaconda3\\envs\\pink_env\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 2925\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnlevels\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2926\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2927\u001b[1;33m \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2928\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2929\u001b[0m \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mindexer\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mG:\\Anaconda3\\envs\\pink_env\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 2657\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2658\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2659\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_maybe_cast_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2660\u001b[0m \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtolerance\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtolerance\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2661\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mindexer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m1\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mindexer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msize\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
"\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
"\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
"\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
"\u001b[1;31mKeyError\u001b[0m: 'sma50'"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAmoAAAGPCAYAAADss/zTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdd5xU1d3H8c9vdylLB0HaIhgBFaQICD4QI5goCImgUQQrjygCYmyxoIn1sSVRMSrYBSui0YhKUVGstBVBwApSBellYWHref7YmXFmd2Z2Fqbt7Pf9eu2Lc889994fxODPU805h4iIiIgkn7REByAiIiIiwSlRExEREUlSStREREREkpQSNREREZEkpURNREREJEkpURMRERFJUhmJDiBWGjdu7Nq0aZPoMERERETK9eWXX25zzjUpXR+zRM3MagKfADU833ndOXebmd0OXAZs9TS92Tk3w/PMeGAkUAT8xTk321PfHZgMZAIzgKtcORvAtWnThuzs7Gj/tkRERESizszWBquPZY9aHnCKc26vmVUDPjOzmZ57Dznn/lUqwA7AMKAj0AL4wMzaO+eKgEnAKGA+JYnaAGAmIiIiIiksZnPUXIm9nstqnp9wvWCDganOuTzn3GpgJdDTzJoD9Zxz8zy9aM8DQ2IVt4iIiEiyiOliAjNLN7MlwBbgfefcAs+tcWb2tZk9a2YNPXUtgfV+j2/w1LX0lEvXi4iIiKS0mCZqzrki51xXIIuS3rHjKBnGPAroCmwCHvA0t2CvCFNfhpmNMrNsM8veunVrsCYiIiIilUZctudwzu0C5gIDnHObPQlcMfAU0NPTbAPQyu+xLGCjpz4rSH2w7zzpnOvhnOvRpEmZhRMiIiIilUrMEjUza2JmDTzlTOAPwHeeOWdeZwLLPeXpwDAzq2FmRwLtgIXOuU1AjpmdaGYGXAS8Fau4RURERJJFLFd9NgemmFk6JQnhNOfcO2b2gpl1pWT4cg1wOYBzboWZTQO+AQqBKzwrPgHG8Ov2HDPRik8RERGpAqyc7cgqrR49ejjtoyYiIiKVgZl96ZzrUbpeR0iJiIiIJCklaiIiIiJJSomaiIiISJJSoiYiIiKSpJSoiYiIiMTZ0qVLWbBgQbntYrk9h4iIiIgE0bVrVwDK231DPWoiIiIiSUqJmoiIiEiSUqImIiIiEkdFRUXlN/JQoiYiIiISRzNnRn4SphI1ERERkTj605/+FHFbJWoiIiIiSUqJmoiIiEiSUqImIiIikqSUqImIiIgkKSVqIiIiIklKiZqIiIhInJR3ZFRpStRERERE4uT111+vUHslaiIiIiJxokRNREREJElNmzatQu2VqImIiIgkKSVqIiIiInFy+eWXA3DllVfSoEGDctsrURMRERGJk8LCQlq0aEF6ejrFxcXltleiJiIiIhIne/fupU6dOqSlpSlRExEREUkmStREREREkpQSNREREZEktG3bNj7++GOqVaumRE1EREQkmdx0000AzJkzR4maiIiISDLJycnxlYuKiigsLCw3WVOiJiIiIhIHM2bM8JUfeOABAF544YWwzyhRExEREYmDvXv3AtCtWzcKCwsB2LlzZ9hnlKiJiIiIxFFmZqavbGZh2ypRExEREYmjo48+OuK2StRERERE4uiRRx6JuK0SNREREZEYy83N9ZVr1aoV8XNK1ERERERibP/+/QD861//qtBzStREREREYmzPnj0A5OfnB9RrMYGIiIhIgr3yyitAEvWomVlNM1toZkvNbIWZ3eGpb2Rm75vZj55fG/o9M97MVprZ92bW36++u5kt89z7t5WXfoqIiIgkWH5+PqNGjWLdunV07doVgKeffjqgTSJ71PKAU5xzXYCuwAAzOxG4CZjjnGsHzPFcY2YdgGFAR2AAMNHM0j3vmgSMAtp5fgbEMG4RERGRQ/biiy/y1FNPMXToUNavXw9UbGsOiGGi5krs9VxW8/w4YDAwxVM/BRjiKQ8Gpjrn8pxzq4GVQE8zaw7Uc87Nc8454Hm/Z0RERESS0siRIwFYsGABo0ePBqBhw4bhHikjpnPUzCzdzJYAW4D3nXMLgKbOuU0Anl8P9zRvCaz3e3yDp66lp1y6Ptj3RplZtpllb926Nbq/GREREZFDlFSJmnOuyDnXFciipHfsuDDNgw3SujD1wb73pHOuh3OuR5MmTSoesIiIiEgM1axZs0Lt47Lq0zm3C5hLydyyzZ7hTDy/bvE02wC08nssC9joqc8KUi8iIiKS0mK56rOJmTXwlDOBPwDfAdOBiz3NLgbe8pSnA8PMrIaZHUnJooGFnuHRHDM70bPa8yK/Z0RERERSVkYM390cmOJZuZkGTHPOvWNm84BpZjYSWAecA+CcW2Fm04BvgELgCudckeddY4DJQCYw0/MjIiIiknTWrVvHd999F7ZNvXr12LNnT7lDoTFL1JxzXwPHB6nfDvw+xDN3A3cHqc8Gws1vExEREUkKrVu3LrfNa6+9Rv/+/dm2bRtPPfVUyHax7FETERERSUlPPPEEs2fP5o033gioL9lJrHyNGjUC4Oabbw7bTomaiIiISAUUFRX59kWbN28e//M//+O7V/osz1AiPWRJZ32KiIiIVMCtt97qK+/evTvg3pdffhnRO5SoiYiIiMTAf//7X185LS0wlerXr19E71CiJiIiIhIDrVr9uu1rbm5uwD0NfYqIiIjEwRdffMHevXvL1NetW9dXzsnJifh9ixYt8pU3boxs734laiIiIiKl7Nq1iz59+jB8+PAy937++WdfubCwMODeYYcdFvR9d955Jz169PBdR3omuRI1ERERkVL2798PwPz588vUz5s3z3ftvx2Hc47t27cHfV+NGjUCrjX0KSIiInKQDhw4AJTdF+3pp58OuPa///3334d8X5MmTQKuSy9CCEWJmoiIiEgp3kUCpXvC/vKXvwRc+ydq3l64YC6++OKA60h71LThrYiIiEgpoRK10vwTtU8//bTM/aKiIgoLC8v0oGnoU0REROQgeXvHqlevHrbdqFGjWL16NQBHHXVUmftpaWlB36FETUREROQgeRO1atWqBb1/2223+cqPPvooUJK0RUqJmoiIiMhB8h4NtWPHDjZv3gzAunXrfPdHjhzpKz/44IM453x7ow0ePLjc9ytRExERETlIl1xyCVCyMW2zZs0AaN26NQCXXXZZmeHMH3/80Ve+5557yn2/EjURERGRg1S7du2w90onWhs2bPCVMzMzy32/EjURERGRg3TppZeGvJeZmenbZ82roKDAV65Vq1a571eiJiIiInKQSg9fFhUV+cq1atUqsxGu/331qImIiIjEUPPmzQOuvQsKoGTLjtKJ2tdff+0rexM175y2YLp16xZRHErURERERErp1atXwHXLli195Z07d5bpERs/frzv12rVqpGXlxewwKC0hg0b+sodO3YM2U6JmoiIiEgpe/bsCXnvvvvu44gjjgh675hjjgFKet1C7cFW2v333x/ynhI1ERERkVK8R0gFM3To0JBzzMo7ySCYcAe0K1ETERERKWXp0qUh71177bVl6tq2bQvAmWeeWeFvhUvUdCi7iIiIiJ+XXnrJd4RUaTfddFOZ+WsAWVlZ7Nmzp9xD3IMJtwJUiZqIiIiIny+++CJofVpaGvfee2/Qe3Pnzj2oYU/ve0PeO6g3ioiIiKSo9PT0oPXFxcVhn8vPzz+o7ylRExEREYnQI488EvNv+O/DFm7oU4maiIiISAKpR01EREQkymbNmnXQz/r3oilRExERETlE06dPD7ju378/EydO9F2ff/75Eb/Lf+gzLy8vZDslaiIiIiJ+srKyGDFiRJn6P/3pT2XqzjnnHF/5xBNPPKjv+R/oXpoSNRERERGP/fv3s2HDBtasWRNRe/9hy4KCgoi/4z/0GWqVKShRExEREfE55ZRTAGjevHlE7f2TrEmTJkX8Ha36FBEREamg+fPnA/DOO+8E1Hft2jVoe/9ErXXr1gf1Tf+krTSdTCAiIiICbNiwwVe+5ppruPDCC9m+fTtpaWm0b98+6DP+iVqoUwuC8e9F0xFSIiIiIuVYu3atr3zeeefRtm1b32HrofgnanXr1o34W/69aNqeQ0RERKQcN910EwA33HADRx99dETP+CdqNWvWPKjvao6aiIiISDl69uwJVGwI07837GATtbDvj/obPcyslZl9ZGbfmtkKM7vKU3+7mf1sZks8PwP9nhlvZivN7Hsz6+9X393Mlnnu/dvCpZ4iIiIiB2HLli20adMm7FBkaf4pSfXq1Q/qu4mao1YIXOecW2xmdYEvzex9z72HnHP/8m9sZh2AYUBHoAXwgZm1d84VAZOAUcB8YAYwAJgZw9hFRESkivnhhx+oU6fOQT9/sP1ICUnUnHObgE2eco6ZfQu0DPPIYGCqcy4PWG1mK4GeZrYGqOecmwdgZs8DQ1CiJiIiIlGSm5vLwoULE/LthM9RM7M2wPHAAk/VODP72syeNbOGnrqWwHq/xzZ46lp6yqXrg31nlJllm1n21q1bo/g7EBERkVS2cuXKhH07oYmamdUB/gNc7ZzbQ8kw5lFAV0p63B7wNg3yuAtTX7bSuSedcz2ccz2aNGlyyLGLiIhI6ps1axZdunQBYMqUKQf9nnAb14aTsO05zKwaJUnaS865NwCcc5udc0XOuWLgKaCnp/kGoJXf41nARk99VpB6ERERkUN2+umn+8odOnSIyzfr1avnK2dmZoZsF8tVnwY8A3zrnHvQr97/8KwzgeWe8nRgmJnVMLMjgXbAQs9ctxwzO9HzzouAt2IVt4iIiFQdxcXFYa9jxX//tY4dO4ZsF8tVn32AC4FlZrbEU3czMNzMulIyfLkGuBzAObfCzKYB31CyYvQKz4pPgDHAZCCTkkUEWkggIiIih8w/YQJ8Q6DxFG5bj1iu+vyM4PPLZoR55m7g7iD12cBx0YtOREREqrrly5eXqatRo8ZBv68iR0hFSicTiIiISJV0zjnnRPV9GRnR7/9SoiYiIiJVUlZWVsD1Pffck6BIQovlHDURERGRpPXBBx/4yp999hl9+vRJYDTBqUdNREREqoxdu3Zx9dVX89133/nqnnvuOXr37p3AqEJToiYiIiJVxt13383DDz/Mscce66sbMWLEQZ/TGWtK1ERERKTKiMWE/1hSoiYiIiJVxj/+8Y9Eh1AhStRERESkymjfvn3AdbhzNpNB5er/ExERETkE/osIAFavXn3I7+zRowf169c/5PcEo0RNREREqowWLVqwceNG3/URRxxxyO9ctGjRIb8jlOTu7xMRERGJosaNGzN48GAAhg8fnuBoyqceNREREaky9u3bR+3atSkuLk50KBFRj5qIiIhUCTt37mTVqlU45zCzpN07zZ8SNREREakS/vd//xeAV155JcGRRE6JmoiIiFQJb731FkDAqQTJTomaiIiIpDz/Yc7nn38+gZFUjBI1ERERqVI6duyY6BAipkRNREREqoy+ffuSmZmZ6DAipkRNREREqowuXbokOoQK0T5qIiIikvK8JxLce++9iQ7FZ+bMmezcuTNsGyVqIiIiktLy8vLYuHEjI0eOTKphzwEDBpTbRkOfIiIiktIefvhhAKZMmZLgSCpOiZqIiIiknNzcXObOnUtxcTE7duwAqDTHRvnT0KeIiIiknNq1a5epe+CBBxIQyaFRj5qIiIiklB9++CFo/V/+8pc4R3LolKiJiIhISvnDH/4QtD4trfKlPZUvYhEREZEwBg0alOgQokaJmoiIiKSUrKysRIcQNUrUREREJGktWrSI0047jdmzZ/Piiy9G9Exubi7p6ekxjiw+zDmX6BhiokePHi47OzvRYYiIiMhBuOaaaxg8eDD9+vULqC8vb/niiy/o06cPtWvXZt++fRV6NpHM7EvnXI/S9epRExERkaTy008/MWHChDJJGsCKFStYu3YtnTt3ZsWKFQH39uzZQ58+fQDY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l5mZGYdoqjYlaiIiKWjs2LEBe1tFMu9M/9INzjnHU089Vabeu+rx8ccfB0qOlGrXrp3v/oIFC3DO4Zxj2LBhPPbYY/EJ+BAVFRWRkZFBenq6r+72228P2lb/zMSeEjURkRQ0adIkAPLy8iJqv27dOjZs2MA555wTy7Aqpbfffjtovff0gXr1StbWNW/enDPOOCOgTV5eXsAq2++//z5GUUaPf1I/fvx4AO64446gbXUQe+wpURMRSWHeo6LK06pVKxo1alSltpuI1ODBg33lO++8s8z9gQMH8thjj3H//feTnp7OO++847v373//m+wBtIcAACAASURBVNdee813fcwxx8Q22CiYPXu2r3zfffcF3OvatWvAtTdJldhRoiYikmL856bdcsstFBZGvl/52rW/HuP85ptvRjWuyuill17ylW+55Zag87bS0tIYO3asbxjQ/1D7G2+8MeCopcqgdDK2bt06oOQ8z/nz5/vqnXNUq1YtrrFVRUrURERSyL59+1i1apXvetKkSfznP//xXVevXj3id5111ln079+fDz74IKoxVibTp0/3la+44oqID1uvzGeneoc7vbyrf7du3arELAGUqImIpIjNmzdTp06dgAnt8OueV6H495KU9t577wUM/VU106ZNA6Bx48Y0b96c0aNHc9VVV7F79+6wz1V0O5R4+P7776lRo0aZ1av+/FeqBqPD1+NPf+IiIimiWbNmQesfffRR3/0XXngh4N748ePp1atX2PdGOs8tlS1duhQo6ZGcMGFCuXOztm3bFo+wKuS5554jPz+fzp07Y2Z8+OGHZdpcfPHFIZ/3nkYg8aVETUSkirj66qsZOnSo73r9+vXcddddCYwoufn3irVo0aJCz3o3hE0Gjz/+ODVq1OCNN94IqP/9739fpq3/vMSBAwcG3PNu1zF37lwWLFgQg0glGCVqIiJVhP8kd4CsrKyAvbKquo0bNwYMCy5atOig35VMQ59jxowhPz8/YJuQ8nz++edlVqj27dsXKDkztmfPntEMUcJQoiYikgIiWdnpnV+0fv16Fi9eHLTNwoULad68edB7BQUF7N+//+CDTHJDhgyhc+fOvpWd559/PkC5h68HE6y3KiOj5NTGyvBn2Lt3b1asWOG77tKlC7/5zW8SGFHVpURNRCQF3HLLLeW28faeZWVlcfzxxwdtc8IJJ/Dz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t24UFRWRnp7OgAEDAO1dJiJyKDT0KVJJ5eTkUK9evYC6Q/3/86BBg5gxY0bA+woLC9m0aRMtWrTgxhtv5IEHHqBDhw6MGDGChg0bcumll/L555/z29/+Nug7i4qKQg6jiohIiVBDn0rURCqRVatWMWvWLC677DJq1KhR5v7WrVtp3Lhxhd5ZWFhITk4On332GWeccYavfs2aNbRu3TqgrXOO/Pz8Mt/++uuv6dKlS9D3p+rfMSIi0aQ5aiKVXHFxMW3btmXcuHEBidJ3333HRRddBJTs2l9R1apVo1GjRr4kbciQITjnyiRpAGYWNEHs1KkT48ePD6jbsWMHu3btqnA8IiLyK+2jJlIJFBcXk56eXqY+Ly+P6tWr07dvX55//nny8vIiet/1119P06ZNg9578803KxyfmXHPPffQpUsXpkyZwrvvvouZVfg9IiISSImaSCXQqlWrMnVNmzalevXqAL5eLv9E7b777mPZsmWMGzeO3r17h33/aaedxumnnx50L7SKOPfcczn33HMP6R0iIvIrJWoilcDGjRsByM7OplmzZuzatSsgefOef1lYWMh7773Hfffdx0cffQRQZq+z0k499VRmz54do8hFRORQaI6aSJL49NNPadSoEQ899BBmxnXXXcf777/vG0Js3bo13bt3p2XLlnTs2DFgxednn30GwHHHHUf//v19SVooM2bM4Oyzz2b27Nm+/c5ERCT5aNWnSAIVFRXRp08fFixYUG7bl156ifPOOy/ovaFDh/Laa68F1KWnp/PAAw9w9dVXAyXz3H744Qf27NnDCSeccOjBi4hI1IRa9amhT5EEuuyyyyJK0jp16sTgwYND3q9bt26Zury8PNLT07nqqqt8dUcfffTBBSoiIgmhoU+RBHDOsXr1ap577jlf3UUXXcRPP/3En//8Z66//nqg5FzNnTt38vXXX1O7du2Q7yu9WMA5F3SVqIiIVC4a+hSJs927d9OgQQPf9cCBA3n33XcP6Z3OORYvXkxGRgYNGjQIugeaiIgkLw19iiTI1KlTadiwIf3796ewsDAgSQMOOUmDkn3MunfvfsjvERGR5KJETSSKduzYwRdffMFJJ53E8OHDmTlzZsi2y5Yto2XLlnGMTkREKhslaiLA/v37ycjIoFq1amzevBkg5M79pTnnKC4uJj8/n8MOOyyiZ4qLi7Vzv4iIlEuLCaRKGzNmDGZGrVq1qF69OmZGs2bNaNasGWaGmTFy5EiKi4vJy8tjxYoVAKxfv953Py0tjYyMDGrVqlXm/dnZ2TjncM4xbdo0Lr30UiVpIiISMS0mkCpp2bJldO7cOervbdSoEdu3b4/6e0VEJLWFWkygHjVJKgUFBbzwwgsUFxdH9b3bt2+nc+fOdOvWDTMLSNKuu+46Vq5cyRNPPMG1115LYWEhO3bsYN26dSxevLjceNetW8fOnTv55ptvlKSJiEhUqUdNkoJzjrFjx/L444+HbdeiRQsyMzP57LPPaNasWcTvTksr+98kmZmZZGdn06FDh4jj3Lp1KxMnTuSjjz5i9OjRDBs2LOJnRUREQgnVo6ZELULOOd5//30yMjLo1atX2M1HJbSVK1dy5JFH+jZj3bt3b9Bd9StqwIABTJ48maZNm/Luu+/Sp08fGjRowP79W0DGEQAAEhlJREFU+8vMHevQoQNz586lSZMmh/xdERGRaNA+auVYuXIlb7/9NnXr1mXXrl0cddRRPP/8874J4++++y55eXllnhs1ahRXXnkla9eu5aSTTmLcuHF8+umnLFu2jDp16sT19+CfdG/dupXDDz8cKNkyolGjRlH5Rm5ubtBJ86Xt3LmTu+66i6+++orXXnuNzz//nJtuuonvvvsOgMLCQlq1asWmTZsCnmvUqBH33nsv3bp1Y/jw4TRs2JBPPvmEVatWUbduXf71r38xceJEioqKAp6bNWtWuT1sixcv5vjjj6/g71hERCRxUrZHrWPHjm7w4MEsX76cGTNmMHToUI488khWr15NzZo1Oeuss+jUqRN//OMfycvL48cffyz3ne3ataNPnz5Mnjw5ohhuueUWzjnnHObOncvvfve7g0oSvP/7lF4l2KdPH7744ouI39OiRQuaNGnC0qVL6du3Lz179mTTpk0ce+yx9OzZk169erFr1y5atmzp+1ZxcTEPPfQQc+fOpVu3bjz//POsWbMGgDfeeIP8/HwmT55MYWEhH3zwAd26daNBgwZ8+OGHFfo9nnLKKbz33nsRH3lUWFjIySefzMaNG5k+fToFBQXlbvaam5tLZmZmheISERGJlyo39GlmDiAjI4PCwsKwbbt06ULfvn35+eefadOmDcceeyzffvstOTk53HHHHcydO5dTTjklYKhsy5YtvP/++1xwwQW+uvr169O0aVN++OGHsN+bMWMGp59+etB7RUVFbN++PWAPr65du/LAAw9w77338sEHH5T/my8lIyOD9u3b880330TU/uijj+aEE07gxRdfrPC3vJo1a8bgwYNZsGABS5YsAeDuu+/myiuvpF69egBkZWXxww8/RC2B+vHHH9m3bx9du3Zl48aNPPjggzz77LNMmjSJc889NyrfEBERiYVQiZpvj6dU+6lfv77773//64qLi51zzu3cudO988477txzz3Xr1q1zQ4YMcYD7+9//7qJt7969DvD9pKWlBVx7f/Ly8lxBQYHbtm2bc865xx9/PGi7YD8tW7Z0a9ascQcOHHDOOZeXl+cKCwvLxOFft3//fvfhhx+6WbNmufnz57ucnBz31ltvub59+7ratWs7wP3hD38o863bbrvNnXHGGe6TTz5xzjk3ZcoU371XX33VTZs2zW3atMkdOHDArV271vdn7lX6es+ePW737t1R/3MXERGprIBsFySfSdketWRc9blp0yZeeuklrr/++nLb/vnPf2batGmYGYMHD+btt98GSuabrV27ls6dOwddyRgNubm5rF69mqysLOrXrx+Tb4iIiMivqtzQZzImal7OOY488kjWrl0bUJ+VlcXixYu1GlFERKSK0arPJGJm/PTTT0yYMIH27dtz/PHH880333DqqacmOjQRERFJIupRExEREUmwSn+ElJkNMLPvzWylmd2U6HhEREREYq1SJGpmlg48BpwOdACGm1nk5/6IiIiIVEKVIlEDegIrnXM/OefyganA/7d378F2VvUZx78PuYCBcFG5CQhHLpKUFqIpAQSSkGLpqBApMFgKRaqRWm4KZRTGGUxsAYmayqUWkFy4BbnqIMg0SqVAm+EiDJhUpFBKioUIEjFoKOTXP9basHvI5eyTvc/7vus8n5kz2Xu/7z6znvz22Xvttdb7vkdU3CYzMzOznmpKR20H4Nm2+8vyY2ZmZmbFakpHTWt47G1HQUiaIelBSQ8uX758CJplZmZm1jtN6agtA3Zqu78j8Fz/nSLi8oiYGBETfS4yMzMza7qmdNQeAHaX1CdpNHAs8L2K22RmZmbWU4044W1EvC7pFOAuYARwVUT8tOJmmZmZmfVUIzpqABFxB3BH1e0wMzMzGypNmfo0MzMzG3bcUTMzMzOrKXfUzMzMzGrKHTUzMzOzmlLE284b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\n",
"text/plain": [
"<Figure size 720x504 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sma50 = SMA(ts, timeperiod=50)\n",
"ts['sma50'] = sma50\n",
"\n",
"sma200 = SMA(ts, timeperiod=200)\n",
"ts['sma200'] = sma200\n",
"\n",
"ts.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment