def get_starting_time(self, symbol) -> int: dashless_symbol = jh.dashless_symbol(symbol) payload = { 'interval': '1d', 'symbol': dashless_symbol, 'limit': 1500, } response = requests.get(self.endpoint, params=payload) # Exchange In Maintenance if response.status_code == 502: raise exceptions.ExchangeInMaintenance( 'ERROR: 502 Bad Gateway. Please try again later') # unsupported symbol if response.status_code == 400: raise ValueError(response.json()['msg']) if response.status_code != 200: raise Exception(response.content) data = response.json() # since the first timestamp doesn't include all the 1m # candles, let's start since the second day then first_timestamp = int(data[0][0]) return first_timestamp + 60_000 * 1440
def get_starting_time(self, symbol: str) -> int: dashless_symbol = jh.dashless_symbol(symbol) payload = { 'interval': 'W', 'symbol': dashless_symbol, 'limit': 200, 'from': 1514811660 } response = requests.get(self.endpoint, params=payload) # Exchange In Maintenance if response.status_code == 502: raise exceptions.ExchangeInMaintenance('ERROR: 502 Bad Gateway. Please try again later') # unsupported symbol if response.status_code == 400: raise ValueError(response.json()['msg']) if response.status_code != 200: raise Exception(response.content) data = response.json()['result'] # since the first timestamp doesn't include all the 1m # candles, let's start since the second day then return int(data[1]['open_time']) * 1000
def get_starting_time(self, symbol): payload = { 'interval': '1d', 'symbol': symbol, 'limit': 1500, } response = requests.get(self.endpoint, params=payload) # Exchange In Maintenance if response.status_code == 502: raise exceptions.ExchangeInMaintenance( 'ERROR: 502 Bad Gateway. Please try again later') # unsupported symbol if response.status_code == 400: raise ValueError(response.json()['msg']) if response.status_code != 200: raise Exception(response.content) data = response.json() first_timestamp = int(data[0][0]) second_timestamp = first_timestamp + 60_000 * 1440 return second_timestamp
def _handle_errors(self, response) -> None: # Exchange In Maintenance if response.status_code == 502: raise exceptions.ExchangeInMaintenance( 'ERROR: 502 Bad Gateway. Please try again later') if response.status_code != 200: raise Exception(response.json()['error'])
def _handle_errors(response): # Exchange In Maintenance if response.status_code == 502: raise exceptions.ExchangeInMaintenance('ERROR: 502 Bad Gateway. Please try again later') # unsupported symbol if response.status_code == 404: raise ValueError(response.json()['message']) if response.status_code != 200: raise Exception(response.content)
def fetch(self, symbol, start_timestamp): """ note1: unlike Bitfinex, Binance does NOT skip candles with volume=0. note2: like Bitfinex, start_time includes the candle and so does the end_time. """ end_timestamp = start_timestamp + (self.count - 1) * 60000 dashless_symbol = jh.dashless_symbol(symbol) payload = { 'interval': '1m', 'symbol': dashless_symbol, 'startTime': start_timestamp, 'endTime': end_timestamp, 'limit': self.count, } response = requests.get(self.endpoint, params=payload) # Exchange In Maintenance if response.status_code == 502: raise exceptions.ExchangeInMaintenance( 'ERROR: 502 Bad Gateway. Please try again later') # unsupported symbol if response.status_code == 400: raise ValueError(response.json()['msg']) if response.status_code != 200: return data = response.json() candles = [] for d in data: candles.append({ 'id': jh.generate_unique_id(), 'symbol': symbol, 'exchange': self.name, 'timestamp': int(d[0]), 'open': float(d[1]), 'close': float(d[4]), 'high': float(d[2]), 'low': float(d[3]), 'volume': float(d[5]) }) return candles
def fetch(self, symbol, start_timestamp): """ :param symbol: :param start_timestamp: :return: """ end_timestamp = start_timestamp + (self.count - 1) * 60000 payload = { 'interval': '1m', 'symbol': symbol, 'startTime': start_timestamp, 'endTime': end_timestamp, 'limit': self.count, } response = requests.get(self.endpoint, params=payload) # Exchange In Maintenance if response.status_code == 502: raise exceptions.ExchangeInMaintenance( 'ERROR: 502 Bad Gateway. Please try again later') # unsupported symbol if response.status_code == 400: raise ValueError(response.json()['msg']) if response.status_code != 200: return data = response.json() candles = [] for d in data: candles.append({ 'id': jh.generate_unique_id(), 'symbol': symbol, 'exchange': self.name, 'timestamp': int(d[0]), 'open': float(d[1]), 'close': float(d[4]), 'high': float(d[2]), 'low': float(d[3]), 'volume': float(d[5]) }) return candles
def fetch(self, symbol: str, start_timestamp: int) -> Union[list, None]: dashless_symbol = jh.dashless_symbol(symbol) payload = { 'interval': 1, 'symbol': dashless_symbol, 'from': int(start_timestamp / 1000), 'limit': self.count, } response = requests.get(self.endpoint, params=payload) # Exchange In Maintenance if response.status_code == 502: raise exceptions.ExchangeInMaintenance('ERROR: 502 Bad Gateway. Please try again later') # unsupported symbol if response.status_code == 400: raise ValueError(response.json()['msg']) if response.status_code != 200: return data = response.json()['result'] return [{ 'id': jh.generate_unique_id(), 'symbol': symbol, 'exchange': self.name, 'timestamp': int(d['open_time']) * 1000, 'open': float(d['open']), 'close': float(d['close']), 'high': float(d['high']), 'low': float(d['low']), 'volume': float(d['volume']) } for d in data]