├── README.md
└── Support Resistance.ipynb
/README.md:
--------------------------------------------------------------------------------
1 | # SupResGenerator
2 | Automatically generate Support & Resistance Lines on charts
3 |
--------------------------------------------------------------------------------
/Support Resistance.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "metadata": {
3 | "name": "",
4 | "signature": "sha256:3556b0f245c8c65b8b2cc2cf0ce143d4ffd2d089d62f60e0f859492b9757a7bb"
5 | },
6 | "nbformat": 3,
7 | "nbformat_minor": 0,
8 | "worksheets": [
9 | {
10 | "cells": [
11 | {
12 | "cell_type": "code",
13 | "collapsed": false,
14 | "input": [
15 | "%pylab inline\n",
16 | "import pandas as pd\n",
17 | "import datetime\n",
18 | "import pandas.io.data as web\n",
19 | "from sklearn.cluster import MeanShift, estimate_bandwidth\n",
20 | "\n",
21 | "import plotly.plotly\n",
22 | "plotly.offline.init_notebook_mode()\n",
23 | "from plotly.tools import FigureFactory as FF\n",
24 | "\n",
25 | "plt.style.use('ggplot')"
26 | ],
27 | "language": "python",
28 | "metadata": {},
29 | "outputs": [
30 | {
31 | "output_type": "stream",
32 | "stream": "stdout",
33 | "text": [
34 | "Populating the interactive namespace from numpy and matplotlib\n"
35 | ]
36 | }
37 | ],
38 | "prompt_number": 27
39 | },
40 | {
41 | "cell_type": "code",
42 | "collapsed": false,
43 | "input": [
44 | "#Get Security Data\n",
45 | "start = datetime.datetime(2010,1,1)\n",
46 | "end = datetime.datetime.today()\n",
47 | "ticker = \"SPY\"\n",
48 | "Stk = web.DataReader(ticker,\"yahoo\",start, end)"
49 | ],
50 | "language": "python",
51 | "metadata": {},
52 | "outputs": [],
53 | "prompt_number": 39
54 | },
55 | {
56 | "cell_type": "code",
57 | "collapsed": false,
58 | "input": [
59 | "SPY.head()"
60 | ],
61 | "language": "python",
62 | "metadata": {},
63 | "outputs": [
64 | {
65 | "html": [
66 | "
\n",
67 | "
\n",
68 | " \n",
69 | " \n",
70 | " | \n",
71 | " Open | \n",
72 | " High | \n",
73 | " Low | \n",
74 | " Close | \n",
75 | " Volume | \n",
76 | " Adj Close | \n",
77 | "
\n",
78 | " \n",
79 | " Date | \n",
80 | " | \n",
81 | " | \n",
82 | " | \n",
83 | " | \n",
84 | " | \n",
85 | " | \n",
86 | "
\n",
87 | " \n",
88 | " \n",
89 | " \n",
90 | " 1993-01-29 | \n",
91 | " 43.9687 | \n",
92 | " 43.9687 | \n",
93 | " 43.7500 | \n",
94 | " 43.9375 | \n",
95 | " 1003200 | \n",
96 | " 28.455368 | \n",
97 | "
\n",
98 | " \n",
99 | " 1993-02-01 | \n",
100 | " 43.9687 | \n",
101 | " 44.2500 | \n",
102 | " 43.9687 | \n",
103 | " 44.2500 | \n",
104 | " 480500 | \n",
105 | " 28.657753 | \n",
106 | "
\n",
107 | " \n",
108 | " 1993-02-02 | \n",
109 | " 44.2187 | \n",
110 | " 44.3750 | \n",
111 | " 44.1250 | \n",
112 | " 44.3437 | \n",
113 | " 201300 | \n",
114 | " 28.718437 | \n",
115 | "
\n",
116 | " \n",
117 | " 1993-02-03 | \n",
118 | " 44.4062 | \n",
119 | " 44.8437 | \n",
120 | " 44.3750 | \n",
121 | " 44.8125 | \n",
122 | " 529400 | \n",
123 | " 29.022047 | \n",
124 | "
\n",
125 | " \n",
126 | " 1993-02-04 | \n",
127 | " 44.9687 | \n",
128 | " 45.0937 | \n",
129 | " 44.4687 | \n",
130 | " 45.0000 | \n",
131 | " 531500 | \n",
132 | " 29.143478 | \n",
133 | "
\n",
134 | " \n",
135 | "
\n",
136 | "
"
137 | ],
138 | "metadata": {},
139 | "output_type": "pyout",
140 | "prompt_number": 5,
141 | "text": [
142 | " Open High Low Close Volume Adj Close\n",
143 | "Date \n",
144 | "1993-01-29 43.9687 43.9687 43.7500 43.9375 1003200 28.455368\n",
145 | "1993-02-01 43.9687 44.2500 43.9687 44.2500 480500 28.657753\n",
146 | "1993-02-02 44.2187 44.3750 44.1250 44.3437 201300 28.718437\n",
147 | "1993-02-03 44.4062 44.8437 44.3750 44.8125 529400 29.022047\n",
148 | "1993-02-04 44.9687 45.0937 44.4687 45.0000 531500 29.143478"
149 | ]
150 | }
151 | ],
152 | "prompt_number": 5
153 | },
154 | {
155 | "cell_type": "code",
156 | "collapsed": false,
157 | "input": [
158 | "#Adjust Calculation Set ; data2 size\n",
159 | "data = Stk.as_matrix(columns=['Adj Close'])\n",
160 | "data2 = data[:len(data)*1]\n",
161 | "\n",
162 | "# Data = All Data ; Data2 = Adjusted DataSet\n",
163 | "bandwidth = estimate_bandwidth(data2, quantile=0.1, n_samples=100)\n",
164 | "ms = MeanShift(bandwidth=bandwidth, bin_seeding=True)\n",
165 | "\n",
166 | "# fit the data\n",
167 | "ms.fit(data2)"
168 | ],
169 | "language": "python",
170 | "metadata": {},
171 | "outputs": [
172 | {
173 | "metadata": {},
174 | "output_type": "pyout",
175 | "prompt_number": 40,
176 | "text": [
177 | "MeanShift(bandwidth=4.9513007999999994, bin_seeding=True, cluster_all=True,\n",
178 | " min_bin_freq=1, seeds=None)"
179 | ]
180 | }
181 | ],
182 | "prompt_number": 40
183 | },
184 | {
185 | "cell_type": "code",
186 | "collapsed": false,
187 | "input": [
188 | "#Calculate Support/Resistance\n",
189 | "ml_results = []\n",
190 | "for k in range(len(np.unique(ms.labels_))):\n",
191 | " my_members = ms.labels_ == k\n",
192 | " values = data[my_members, 0] \n",
193 | " #print values\n",
194 | " \n",
195 | " # find the edges\n",
196 | " ml_results.append(min(values))\n",
197 | " ml_results.append(max(values))"
198 | ],
199 | "language": "python",
200 | "metadata": {},
201 | "outputs": [],
202 | "prompt_number": 41
203 | },
204 | {
205 | "cell_type": "code",
206 | "collapsed": false,
207 | "input": [
208 | "#Attempted Plotly chart \n",
209 | "fig = FF.create_candlestick(Stk.Open, Stk.High, Stk.Low, Stk.Close, dates=Stk.index)\n",
210 | "plotly.offline.iplot(fig, validate=False)\n"
211 | ],
212 | "language": "python",
213 | "metadata": {},
214 | "outputs": [
215 | {
216 | "html": [
217 | ""
218 | ],
219 | "metadata": {},
220 | "output_type": "display_data",
221 | "text": [
222 | ""
223 | ]
224 | }
225 | ],
226 | "prompt_number": 13
227 | },
228 | {
229 | "cell_type": "code",
230 | "collapsed": false,
231 | "input": [
232 | "#Plot Security\n",
233 | "plt.plot(Stk.index, Stk['Adj Close'], label = ticker)\n",
234 | "\n",
235 | "#Plot Support/Resistance\n",
236 | "for k in ml_results:\n",
237 | " plt.axhline(y=k)\n",
238 | "\n",
239 | "#Change font size of x-axis \n",
240 | "plt.tick_params(axis='x', which='major', labelsize=6)\n",
241 | "plt.legend(loc = 'upper left', shadow = True)"
242 | ],
243 | "language": "python",
244 | "metadata": {},
245 | "outputs": [
246 | {
247 | "metadata": {},
248 | "output_type": "pyout",
249 | "prompt_number": 59,
250 | "text": [
251 | ""
252 | ]
253 | },
254 | {
255 | "metadata": {},
256 | "output_type": "display_data",
257 | "png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAD/CAYAAADllv3BAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd8VFX6+PHPuTMppBESCAECioZmkFgAQZSytrWCfNdY\nYHdlUVYQC1iXFcW1/Gw0C+Kqq65lV9YVrGtZaUp0DVKEgGCoBgghhVRSZu75/XGTSYZM+iSZGZ73\n6+Vr5tY5J4NPTs495zlKa60RQggRMIyOLoAQQgjvksAuhBABRgK7EEIEGAnsQggRYCSwCyFEgJHA\nLoQQAcbe0MGcnBxeeOEFCgoKUEpxwQUXcNlll/Hmm2+yYcMG7HY73bt3Z8aMGYSFhQGwfPlyVq1a\nhWEYTJkyheTk5HapiBBCiCq6Afn5+XrPnj1aa62PHTumb7/9dv3LL7/ozZs3a6fTqbXW+q233tJv\nvfWW1lrrX375Rd999926srJSHz58WM+cOdN13olk69atHV0Erwq0+mgtdfIHgVYfrduvTg12xURH\nR3PyyScDEBoaSq9evcjPz2fIkCEYhnVpv379yM3NBSAtLY1Ro0Zht9uJi4sjPj6ejIyMtv3N5IPS\n09M7ugheFWj1AamTPwi0+kD71anJfezZ2dns3buXfv36ue1fuXIlZ511FgD5+fnExsa6jsXGxpKX\nl+elogohhGiKJgX2srIyFixYwI033khoaKhr//vvv4/dbue8886r91qlVOtLKYQQosmU1g3ninE4\nHDz55JOcccYZXH755a79q1ev5quvvmLu3LkEBwcDsGLFCgAmTJgAwGOPPUZKSkqdVn56errbnyQp\nKSneqY0QQpxgli1b5nqflJREUlJSw6NitNYsXbqUXr16uQX1TZs28eGHHzJv3jxXUAcYOnQoixcv\n5oorriAvL4+srCwSExPr3Lf6w2s7ePBgiyvmayIjIykqKuroYnhNoNUHpE7+INDqA96vU8+ePT02\njBsM7Dt27ODrr7+mT58+3HvvvQBcf/31vPbaazgcDh599FEA+vfvz0033URCQgIjR45k1qxZ2Gw2\npk6dKl0xQgjRzhrtimkv0mL3XYFWH5A6+YNAqw+0TYvdE5l5KoQQAUYCuxBCBJgG+9g7WmRkZEcX\noUVsNpvXyh5of4oKIdqeTwd2OLEDm7/+YhNCdCzpivFheXl5fP7553z33XcdXRQhhB/x+Rb7iczp\ndFJaWtrRxRBC+BlpsQshRICRwC6EEAFGAnsLff/991x11VUMGjSIpKQkJkyYwObNm3n33Xfp3bs3\n/fv3Z+DAgVx88cX897//Ze3atSQnJ7tluywvL2fMmDG89dZbHVgTIUSgkcDeAkVFRfz+979n6tSp\nbNu2jR9++IHZs2cTHByMUophw4axc+dOtm/fzvXXX88tt9xCcnIyF110EQ899JDrPosXLyY+Pp7J\nkyd3YG2EEIFGAnsL7N69G6UU48ePRylFaGgoo0ePZtCgQWitqc7SoJTi2muvpaysjP379/PQQw+R\nmprKV199xU8//cQbb7zBM88808G1EUL4A11Z0eRzfWZUTK9edXMefPZZOaef3gGFacSpp56KYRjc\neeedjB8/njPPPJPo6Og65zkcDt555x0iIiLo27cvERERPPHEE9x3333Ex8cze/ZsevfuXe/nZGba\nWbAgEocjgj/8wXNOiPYTiGPqpU6+L9DqA96sU32ZvnwmsB84UDcJmJUwp/5rnDdf5ZXPtr38YbPO\nj4iIYMWKFbzwwgvcc889HDlyhF/96lc8/fTTAGzYsIHTTjsNm81G3759eeWVV4iIiADgoosu4r33\n3iMzM5OpU6c2+DkJCQ5mzy4iLMzJJZd0XJI0ScbkHwKtTt6sjy4vg192oxJP83zcNNFfLEedPgzV\nq49XPtOTltZJb/0Bc/HDwPHxynODz2cCe0s0NyB7U2JiIgsXLgQgIyOD22+/nYceeogxY8Zw1lln\nsXz58nqvHTBggFseeyFE2zLv/QOUFmM8909UaBjadKLffRV698U47yLI3Iv+9xugaVFg1z+sQ2/8\nDuOmu6ztsmNQmI+K885f2nr/7pr35eWw40fUkGH1ni997F6QmJjINddcw44dO5p0vo9kShbihKCL\nCqC0GADztuusfd+tRq/8GP3pv6yTqo6Tn9Oyz0j7Bv2/Na7/t/W7r2D++ZbWFbz63o5K9PI3Udfd\nDID5p5swn3ukwWsksLdARkYGL730EocOHQLgwIEDrFixwrWotxCiY+nKCsxVn6DLStEr3oaBQ1zH\nnHOmoX9ItTZ6nWSdn7Hdet38Pc6lT6Az96A3fYc+ktW0DwwLt17zctBH89DffGndr6x1M8e11lBi\n/dJRw8dYO4sKGr1OAnsLREREsHHjRq644gr69evnGs9ePZSxsVWjlFKyspQQraBzDmN++QG68Kjn\n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\nKCoqQinFxIkTO7ro9WpOnb777juysrIoKyvjuuuu6+iie9Sc+mitefvtt4mJieGyyy7r6KLXqzl1\nWrp0KX369KFXr14kJyd3dNE9am5cyMnJIS4ujhEjRni1HLZ58+bN8+odTxBdu3Zl4MCB7N+/ny1b\ntjB16lSOHj2K1pqBAwdy5MgR+vfvT1BQEL1792bv3r2cccYZHV3sejWnPqeeeir9+/cnNTWVs88+\nu6OLXq/m1KlLly5s3bqVsLAwBg4c2NFF96g59fn88885/fTTycvLo1+/fh1d9Ho1p067du3CbrcT\nGRlJjx49OrroHjWnPm+//Ta9e/cmJCSEhIQEr5ZDumJa4ZtvviEuLo5u3bq59vlzKoWm1qeiooJ3\n3nmHq6++uj2L1yJNrVN4eDg33HCDz+c3akp9iouLycrKYuPGjWzbtg2Hw9HexWyWpn5H1157LVde\neSUbNmxoz+I1W1Pr43A4uPjii/nxxx+9XgZpsbfQt99+y5o1a+jSpQtxcXFs3LiRvLw8zj//fHbt\n2sXatWspLCykf//+pKenk5qaimma9O3bt6OL7lFz6rNgwQJiYmIoKirilFNO6eii16s5dfroo4/4\n6aefCAsLY8CAAR1ddI+aWp/Bgwdz5plnEhcXR2Vlpc/WB5r3HX3++eds2rSJqKgon61Tc+pTVFRE\nRkYGNpvN68MgZbijEEIEGOmKEUKIACOBXQghAowEdiGECDAS2IUQIsBIYBdCiAAjgV0IIQKMBHYh\nhAgw/x9EdBj8m69A4AAAAABJRU5ErkJggg==\n",
258 | "text": [
259 | ""
260 | ]
261 | }
262 | ],
263 | "prompt_number": 59
264 | },
265 | {
266 | "cell_type": "code",
267 | "collapsed": false,
268 | "input": [],
269 | "language": "python",
270 | "metadata": {},
271 | "outputs": []
272 | }
273 | ],
274 | "metadata": {}
275 | }
276 | ]
277 | }
--------------------------------------------------------------------------------