Skip to content

Commit a40675c

Browse files
Golden Cross Over
Use Scatter addplot Color change 100SMA Line after Cross Over
1 parent 785e723 commit a40675c

File tree

1 file changed

+218
-0
lines changed

1 file changed

+218
-0
lines changed
Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,218 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": null,
6+
"id": "821ec5c5",
7+
"metadata": {},
8+
"outputs": [],
9+
"source": [
10+
"import pandas as pd\n",
11+
"import mplfinance as mpf\n",
12+
"import matplotlib.dates as mdates\n",
13+
"import numpy as np"
14+
]
15+
},
16+
{
17+
"cell_type": "markdown",
18+
"id": "b32a433d",
19+
"metadata": {},
20+
"source": [
21+
"# Read in daily data for NSE TCS"
22+
]
23+
},
24+
{
25+
"cell_type": "code",
26+
"execution_count": null,
27+
"id": "a410f0a2",
28+
"metadata": {},
29+
"outputs": [],
30+
"source": [
31+
"infile = 'data/t_data.csv'\n",
32+
"df = pd.read_csv(infile, index_col=0, parse_dates=True)"
33+
]
34+
},
35+
{
36+
"cell_type": "code",
37+
"execution_count": null,
38+
"id": "7c9783ef",
39+
"metadata": {},
40+
"outputs": [],
41+
"source": [
42+
"# Formula For Simple Moving Average\n",
43+
"# df['SMA21'] = df['Close'].rolling(window=21).mean()\n",
44+
"# df['SMA100'] = df['Close'].rolling(window=100).mean()"
45+
]
46+
},
47+
{
48+
"cell_type": "code",
49+
"execution_count": null,
50+
"id": "1e3a3f0a",
51+
"metadata": {},
52+
"outputs": [],
53+
"source": [
54+
"#Function For Color Coding Golden Crossover\n",
55+
"def color(goldencrossover):\n",
56+
" UP = []\n",
57+
" DOWN = []\n",
58+
" for i in range(len(goldencrossover)):\n",
59+
" if goldencrossover['SMA100'][i] < goldencrossover['SMA21'][i]:\n",
60+
" UP.append(int(goldencrossover['SMA100'][i]))\n",
61+
" DOWN.append(np.nan)\n",
62+
" elif goldencrossover['SMA100'][i] > goldencrossover['SMA21'][i]:\n",
63+
" DOWN.append(int(goldencrossover['SMA100'][i]))\n",
64+
" UP.append(np.nan)\n",
65+
" else:\n",
66+
" UP.append(np.nan)\n",
67+
" DOWN.append(np.nan)\n",
68+
" goldencrossover['up'] = UP\n",
69+
" goldencrossover['down'] = DOWN\n",
70+
" return goldencrossover"
71+
]
72+
},
73+
{
74+
"cell_type": "code",
75+
"execution_count": null,
76+
"id": "d2a8c7ff",
77+
"metadata": {},
78+
"outputs": [],
79+
"source": [
80+
"def golden_cal(df):\n",
81+
" goldenSignal = []\n",
82+
" deathSignal = []\n",
83+
" position = False\n",
84+
" for i in range(len(df)):\n",
85+
" if df['SMA21'][i] > df['SMA100'][i]:\n",
86+
" if position == False :\n",
87+
" goldenSignal.append((df['SMA100'][i]-df['SMA100'][i]*0.01))\n",
88+
" deathSignal.append(np.nan)\n",
89+
" position = True\n",
90+
" else:\n",
91+
" goldenSignal.append(np.nan)\n",
92+
" deathSignal.append(np.nan)\n",
93+
" elif df['SMA21'][i] < df['SMA100'][i]:\n",
94+
" if position == True:\n",
95+
" goldenSignal.append(np.nan)\n",
96+
" deathSignal.append((df['SMA100'][i]+df['SMA100'][i]*0.01))\n",
97+
" position = False\n",
98+
" else:\n",
99+
" goldenSignal.append(np.nan)\n",
100+
" deathSignal.append(np.nan)\n",
101+
" else:\n",
102+
" goldenSignal.append(np.nan)\n",
103+
" deathSignal.append(np.nan)\n",
104+
" df['GoldenCrossOver'] = goldenSignal\n",
105+
" df['DeathCrossOver'] = deathSignal"
106+
]
107+
},
108+
{
109+
"cell_type": "code",
110+
"execution_count": null,
111+
"id": "3de60151",
112+
"metadata": {},
113+
"outputs": [],
114+
"source": [
115+
"golden_cal(df)"
116+
]
117+
},
118+
{
119+
"cell_type": "code",
120+
"execution_count": null,
121+
"id": "d0043a96",
122+
"metadata": {},
123+
"outputs": [],
124+
"source": [
125+
"#Fuction Color Applied And Df Generated \n",
126+
"goldencrossover = color(df)"
127+
]
128+
},
129+
{
130+
"cell_type": "code",
131+
"execution_count": null,
132+
"id": "84416a60",
133+
"metadata": {},
134+
"outputs": [],
135+
"source": [
136+
"# Data Extracted And New Variable Applied\n",
137+
"up_sma100 = goldencrossover[['up']]\n",
138+
"down_sma100 = goldencrossover[['down']]\n",
139+
"up_sma21 = goldencrossover[['SMA21']]\n",
140+
"dco = goldencrossover[['GoldenCrossOver']]\n",
141+
"gco = goldencrossover[['DeathCrossOver']]"
142+
]
143+
},
144+
{
145+
"cell_type": "code",
146+
"execution_count": null,
147+
"id": "3cc8fd1f",
148+
"metadata": {},
149+
"outputs": [],
150+
"source": [
151+
"ic = [\n",
152+
" #Golden Crossover\n",
153+
" mpf.make_addplot(up_sma100,color = 'green',panel=0,),\n",
154+
" mpf.make_addplot(down_sma100,color = '#FF8849',panel=0,),\n",
155+
" mpf.make_addplot(up_sma21,color = '#0496ff',panel=0,linestyle='dashdot'),\n",
156+
" mpf.make_addplot(gco,type='scatter',markersize=200,marker='v',color='red',panel=0),\n",
157+
" mpf.make_addplot(dco,type='scatter',markersize=200,marker='^',color='green',panel=0),\n",
158+
"]"
159+
]
160+
},
161+
{
162+
"cell_type": "code",
163+
"execution_count": null,
164+
"id": "236c94af",
165+
"metadata": {},
166+
"outputs": [],
167+
"source": [
168+
"mpf.plot(\n",
169+
" df,\n",
170+
" volume=True,\n",
171+
" type=\"candle\", \n",
172+
" style=\"yahoo\",\n",
173+
" addplot=ic,\n",
174+
" figscale=1.2,\n",
175+
" #fill_between = [fill_between_up,fill_between_down],\n",
176+
" figsize=(36,16,)\n",
177+
")"
178+
]
179+
},
180+
{
181+
"cell_type": "code",
182+
"execution_count": null,
183+
"id": "c2401f98",
184+
"metadata": {},
185+
"outputs": [],
186+
"source": []
187+
},
188+
{
189+
"cell_type": "code",
190+
"execution_count": null,
191+
"id": "c77f6ac7",
192+
"metadata": {},
193+
"outputs": [],
194+
"source": []
195+
}
196+
],
197+
"metadata": {
198+
"kernelspec": {
199+
"display_name": "Python 3 (ipykernel)",
200+
"language": "python",
201+
"name": "python3"
202+
},
203+
"language_info": {
204+
"codemirror_mode": {
205+
"name": "ipython",
206+
"version": 3
207+
},
208+
"file_extension": ".py",
209+
"mimetype": "text/x-python",
210+
"name": "python",
211+
"nbconvert_exporter": "python",
212+
"pygments_lexer": "ipython3",
213+
"version": "3.9.7"
214+
}
215+
},
216+
"nbformat": 4,
217+
"nbformat_minor": 5
218+
}

0 commit comments

Comments
 (0)