-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathFakeBroker.py
More file actions
40 lines (36 loc) · 1.27 KB
/
FakeBroker.py
File metadata and controls
40 lines (36 loc) · 1.27 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
from json import loads
from urllib.request import urlopen
import pandas
#Fake Broker API
class FakeBroker:
def __init__(self, APIKEY = 'demo'):
self.APIKEY = APIKEY
self.TradeLog = {}
self.trade = 1
print('FakeBroker Connected')
def Feed(self, ticker = 'MSFT', data_interval = 'Daily', outputsize = 'compact'):
ticker = ticker.upper()
if data_interval in [1, 5, 15, 30, 60]:
url2 = 'INTRADAY&symbol={}&interval={}min&outputsize=full&apikey={}'.format(ticker, data_interval, self.APIKEY)
TimeSeries = str(data_interval)+'min'
else:
url2 = 'DAILY&symbol={}&outputsize={}&apikey={}'.format(ticker, outputsize,self.APIKEY)
TimeSeries = data_interval
url = 'http://www.alphavantage.co/query?function=TIME_SERIES_'+url2
print(url)
while True:
try:
urlData = loads(urlopen(url).read().decode('utf-8'))
data = urlData['Time Series ({})'.format(TimeSeries)]
except:
continue
break
try:
timeData = urlData["Meta Data"]["3. Last Refreshed"].split(' ')[1]
print(timeData)
except:
pass
dataset = pandas.DataFrame.from_dict(data, orient='index').rename(index=str,
columns={'1. open':'OPEN', '2. high':'HIGH', '3. low': 'LOW', '4. close':'CLOSE', '5. volume':'VOLUME'}).apply(pandas.to_numeric)
dataset.index.name = 'DATE'
return dataset