Я хотел получить некоторые исторические данные с фондовой биржи для моей программы.У меня был старый код из другой программы, которая сделала это и отправила данные в файл Excel.После небольшого изменения (старый код никогда не использовал 'return') я получил работающий код.
Но есть загвоздка, сервер ответит только на мой запрос, если ответ не превышает 300 свечей.Поэтому я использовал «разделитель запросов» из моего старого кода, сделал небольшие изменения (опять же, старый код не использовал «return») и понял, что он не работает.
Я предполагаю, что вся моя проблема заключается в том, что я сейчас использую оператор return вместо вызова функции из функции, как это делал ранее id.Но я не настолько опытен в программировании, чтобы знать это наверняка.
Может кто-нибудь указать на ошибки, которые я сделал здесь, чтобы я не повторял их в будущем.
Вот рабочий пример кода программы:
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)