forked from himanjim/TradingScripts
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSaveStockData.py
More file actions
50 lines (34 loc) · 1.6 KB
/
SaveStockData.py
File metadata and controls
50 lines (34 loc) · 1.6 KB
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
import pickle
import traceback
from datetime import datetime, timedelta
import ScrapUtils as nse_bse
import Utils as util
from upstox_api.api import OHLCInterval
diff_between_start_end_date = 20
start_date = datetime.now() - timedelta(days=diff_between_start_end_date)
end_date = datetime.now()
upstox_api = util.intialize_upstox_api([nse_bse.NSE, nse_bse.NSE_INDEX])
stocks = []
indices = nse_bse.get_indices()
stocks = nse_bse.get_nse_fo_stocks()
stocks.extend(indices)
stocks = [{nse_bse.STOCK_ID: 'TCS', nse_bse.EXCHANGE: nse_bse.NSE}]
stocks_data_obj = {}
def save_stock(s_id, s_data):
stocks_data_obj_str = util.get_stock_date_str_for_pickle(s_id,
util.get_date_from_timestamp(int(s_data[-1]['timestamp'])))
stocks_data_obj[stocks_data_obj_str] = s_data
for stock in stocks:
try:
stock_id = stock[nse_bse.STOCK_ID]
stock_data = upstox_api.get_ohlc (upstox_api.get_instrument_by_symbol (stock[nse_bse.EXCHANGE], stock_id),
OHLCInterval.Day_1, start_date, end_date)
print('Fetched stock id:', stock_id)
save_stock (stock_id, stock_data)
if stock_id == nse_bse.NIFTY_50:
save_stock (nse_bse.NIFTY_50_NSE_SYMBOL, stock_data)
elif stock_id == nse_bse.NIFTY_BANK:
save_stock (nse_bse.NIFTY_BANK_NSE_SYMBOL, stock_data)
except Exception as e:
print(str(traceback.format_exc()) + '\nError in stock:' + stock_id)
pickle.dump(stocks_data_obj, open(util.STOCK_DATA_OBJ_FILE, 'wb'))