-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDataFetch.py
More file actions
57 lines (44 loc) · 1.64 KB
/
DataFetch.py
File metadata and controls
57 lines (44 loc) · 1.64 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
51
52
53
54
55
56
import requests
from AlpacaKeys import key, secretKey
import json
import pandas as pd
import urllib.parse
from datetime import datetime, timedelta
def backInTime(parameters):
raw_ts = parameters["start"]
decoded_ts = urllib.parse.unquote(raw_ts)
dt = datetime.strptime(decoded_ts, "%Y-%m-%dT%H:%M:%SZ")
new_dt = dt - timedelta(days=40)
new_ts = new_dt.strftime("%Y-%m-%dT%H:%M:%SZ")
encoded_ts = urllib.parse.quote(new_ts, safe='')
return encoded_ts
def dataFetch(parameters):
url = "https://data.alpaca.markets/v2/stocks/bars?symbols=" + parameters["symbols"]
for parameter in parameters:
if parameter == "symbols":
pass
elif parameters[parameter] == "":
pass
elif parameter == "start":
start = backInTime(parameters=parameters)
url = url + "&" + parameter + "=" + start
else:
url = url + "&" + parameter + "=" + parameters[parameter]
headers = {
"accept": "application/json",
"APCA-API-KEY-ID": key,
"APCA-API-SECRET-KEY": secretKey
}
response = requests.get(url, headers=headers)
marketData = response.text
marketDataDict = json.loads(marketData)
"""
Sorts the close, high, low, number of trades, open, time stamp, volume of trades and the volume weighted price
into a pandas dataframe
"""
instrument = parameters["symbols"]
marketDataFrame = pd.DataFrame(marketDataDict["bars"][instrument])
marketDataFrame['t'] = pd.to_datetime(marketDataFrame['t']).dt.date
shape = marketDataFrame.shape
rowsTotal= shape[0]
return marketDataFrame, rowsTotal