I wanted to pull some historic data from a stock exchange for my program. I had an old peace of code from another program that did just that and push the data to a excel file. After coping with slight modifications (the old code never used 'return')I got the code working.
But there is a catch, the server will only respond to my query, if the answer is no longer than 300 candles. So I used a "request divider" from my old code made slight modifications (again old code didn't use 'return') and realized it didn't work.
I'm assuming my whole problem lays in the fact I'm now using the return statement instead of calling a function from a function like id did before. But I'm not that experienced with programming to know that for sure.
Can someone point out the mistakes i made here so i don't repeat them in the future.
Here is a working sample code of the program:
import time
import datetime
import json
import urllib3
import urllib.request
import requests
class Requester():
def __init__(self, url='https://api.pro.coinbase.com', timeout=30, produkty='BTC-EUR', start=None, end=None, skala=None, bd_bot=None ):
self.url = url.rstrip('/')
self.auth = None
self.session = requests.Session()
self.timeout = timeout
self.produkty= produkty
def _Request(self, method ,endpoint, params=None, data=None):
url=self.url+endpoint
r=self.session.request(method, url, params=params, data=data, auth=self.auth, timeout=30)
return r.json()
def Historic_rates_divider(self, start, end, skala, produkt):
if (int(end)-int(start)) > (300*int(skala)):
end_tmp=end
end=start+(300*skala)
Req.Historic_rates(start, end, skala, produkt)
while end < end_tmp:
start=end
end=start+(300*skala)
Req.Historic_rates(start, end, skala, produkt)
else:
end=end_tmp
Req.Historic_rates(start, end, skala, produkt)
else:
Req.Historic_rates(start, end, skala, produkt)
def Historic_rates(self, start, end, skala, produkt):
parametry={}
start=datetime.datetime.fromtimestamp(start).isoformat()
end=datetime.datetime.fromtimestamp(end).isoformat()
print(start, end)
if start is not None:
parametry['start'] = start
if end is not None:
parametry['end'] = end
if skala is not None:
dozwolona_skala=[60, 300, 900, 3600, 21600, 86400]
if skala not in dozwolona_skala:
nowa_skala = min(dozwolona_skala, key=lambda x:abs(x-skala))
print('{} Wartosc {} dla skali niedozwolona, uzyto wartosci {}'.format(time.ctime(), skala, nowa_skala))
skala = nowa_skala
parametry['granularity']= skala
print(parametry)
return self._Request('GET','/products/{}/candles'.format(str(produkt)), params=parametry)
start=1542807000
print(start)
end=1542853400
print(end)
Req=Requester()
z=Req.Historic_rates(start, end, skala=900, produkt='BTC-EUR')
print(z)
print('\n')
z=Req.Historic_rates_divider(start, end, skala=900, produkt='BTC-EUR')
print(z)
Aucun commentaire:
Enregistrer un commentaire