-
Notifications
You must be signed in to change notification settings - Fork 1
/
Candlestick generator
79 lines (69 loc) · 2.78 KB
/
Candlestick generator
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import csv
import requests
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from mpl_finance import *
import datetime
def getURL(symbolHolder):
url = "https://www.nseindia.com/products/dynaContent/common/productsSymbolMapping.jsp?"
symbol="symbol="
other_params="&segmentLink=3&symbolCount=1&series=ALL&dateRange=1month&fromDate=&toDate=&dataType=PRICEVOLUMEDELIVERABLE"
symbolHolder=symbolHolder
fullURL = (url+symbol+symbolHolder+other_params)
return fullURL
def getHTML(OutputURL):
headers={"Referer":"https://www.nseindia.com","Host":"www.nseindia.com","DNT":"1"}
page = requests.get(OutputURL, headers = headers)
return page
def getSoup(page):
cont = page.content
soup = BeautifulSoup(cont,'html.parser')
print (soup)
return soup
def getRecords(soup):
records = []
header_array=[]
for th in soup.findAll("th"):
header_array.append(th.contents[0])
for m in soup.findAll('tr'):
cells = m.findAll('td')
record = {}
for n in range(len(cells)):
record[header_array[n]] = cells[n].contents[0]
records.append(record)
records.pop(0)
with open('Stock reports.csv', 'w') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=header_array)
writer.writeheader()
tempDateList = []
DateList = []
for i in records:
tempDateList.append(i["Date"])
for i in tempDateList:
DateList.append(datetime.datetime.strptime(i, "%d-%b-%Y").strftime("%Y-%m-%d"))
for i in records:
writer.writerow(i)
Date2 = []
for s in records:
dummy = datetime.datetime.strptime(s['Date'], "%d-%b-%Y").toordinal()
Date2.append(dummy)
fig, ax = plt.subplots()
ax.xaxis_date()
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d"))
plt.xticks(Date2,DateList)
plt.xticks(rotation=45)
plt.xlabel("Date in YYYY-MM-DD")
plt.ylabel("Price in INR")
plt.title(records[0]['Symbol'])
tuples = []
for i in records:
dummy = datetime.datetime.strptime(i['Date'], "%d-%b-%Y").toordinal()
t = (dummy,float(i['Open Price'].replace(',','')),float(i['High Price'].replace(',','')),float(i['Low Price'].replace(',','')),float(i['Close Price'].replace(',','')))
tuples.append(t)
plt.tick_params(axis='both', which='major', labelsize=5)
candlestick_ohlc(ax, tuples, width=.6, colorup='g', alpha =0.8);
plt.show()
fig.savefig("Candlestick chart.png")
symbolHolder = input("Type the NSE symbol of the company for which you want to analyse the stocks.\n some of the symbols are given below:\nYESBANK\nRELIANCE \nDHFL\nAXISBANK\nHDFC\nMARUTI\nBAJFINANCE\nHDFCBANK\nINFY ")
CandlestickGenerator = getRecords(getSoup(getHTML(getURL(symbolHolder))))