def kline_res_handle(self, kline_acquired): if isinstance(kline_acquired, list): if not kline_acquired: return kline_restful(self.kline_info, 2001, data=kline_acquired) parameters_list = ['_id', 'open', 'high', 'low', 'close', 'vol', 'close_time', 'quote_asset_volume', 'trades_num', 'taker_buy_base', 'taker_buy_quote'] df = pandas.DataFrame(kline_acquired, columns=parameters_list).iloc[:, 0:6] if self.period == '1min': df['ts'] = df['_id'] df['ts'] = df['ts'].astype('int64') for column in parameters_list[0:6]: if column == '_id': df[column] = (df[column] / 1000).astype('int32') continue data = df[column].astype('double') df[column] = round(data, 8) kline_list = df.to_dict('records') return kline_restful(self.kline_info, 2000, data=kline_list) if isinstance(kline_acquired, dict): # {"code": -10009,"msg": "Invalid period!"} return kline_restful(self.kline_info, 4000, data=kline_acquired)
def kline_res_handle(self, kline_acquired): if kline_acquired['status'] == 200: kline_data = kline_acquired['data'] if not kline_data: # {"status":200,"msg":"","data":{},"time":1571123247,"microtime":"0.46184200 1571123247","source":"api"} return kline_restful(self.kline_info, 2001, data=kline_acquired) kline_bars = kline_data['bars'] df = pandas.DataFrame(kline_bars) df = df.rename(columns={'volume': 'vol', 'time': '_id'}) df = df.drop(columns=['datetime']) if self.period == '1min': df['ts'] = df['_id'] df['ts'] = df['ts'].astype('int64') columns = [column for column in df] for column in columns: if column not in ['_id', 'ts']: df[column] = round(df[column].astype('double'), 8) df['_id'] = (df['_id'].astype('double') / 1000).astype('int32') kline_list = df.to_dict('records') return kline_restful(self.kline_info, 2000, data=kline_list) else: # {"status":-102,"msg":"","data":"","time":1571123137,"microtime":"0.69178400 1571123137","source":"api"} return kline_restful(self.kline_info, 4000, data=kline_acquired)
def kline_res_handle(self, kline_acquired): if isinstance(kline_acquired, list): if kline_acquired: # okex 返回值的存储规则处理 parameters_list = [ '_id', 'open', 'high', 'low', 'close', 'vol' ] df = pandas.DataFrame(kline_acquired, columns=parameters_list) df['_id'] = df['_id'].apply(lambda x: time.mktime( time.strptime(x, "%Y-%m-%dT%H:%M:%S.000Z"))) if self.period == '1min': df['ts'] = (df['_id'] * 1000).astype('int64') for column in parameters_list: if column == '_id': df['_id'] = df['_id'].astype('int32') continue data = df[column].astype('double') df[column] = round(data, 8) final_kline = df.to_dict('records') return kline_restful(self.kline_info, 2000, data=final_kline) return kline_restful(self.kline_info, 2001, data=kline_acquired) if isinstance(kline_acquired, dict): # {'code': 30032, 'message': 'The currency pair does not exist'} return kline_restful(self.kline_info, 4000, data=kline_acquired)
def kline_res_handle(self, kline_acquired): if isinstance(kline_acquired, list): if kline_acquired: parameters_list = [ '_id', 'open', 'high', 'low', 'close', 'vol', 'close_time', 'quote_asset_volume', 'trades_num', 'taker_buy_base', 'taker_buy_quote', 'ignore' ] df = pandas.DataFrame(kline_acquired, columns=parameters_list).iloc[:, 0:6] if self.period == '1min': df['ts'] = df['_id'] df['ts'] = df['ts'].astype('int64') for column in parameters_list[0:6]: if column == '_id': df[column] = (df[column] / 1000).astype('int32') continue data = df[column].astype('double') df[column] = round(data, 8) kline_list = df.to_dict('records') return kline_restful(self.kline_info, 2000, data=kline_list) return kline_restful(self.kline_info, 2001, data=kline_acquired) if isinstance(kline_acquired, dict): # {'code': -1104, 'msg': "Not all sent parameters were read; read '4' parameter(s) but was sent '5'."} return kline_restful(self.kline_info, 4000, data=kline_acquired)
def kline_res_handle(self, kline_acquired): if 'data' not in kline_acquired: # {"error": "市场错误"} # {"code": 3005,"message": "无效的参数"} return kline_restful(self.kline_info, 4000, data=kline_acquired) kline_data = kline_acquired['data'] if kline_data[0][0] > (self.kline_info['from_time'] * 1000) \ and kline_data[-1][0] > (self.kline_info['end_time'] * 1000): return kline_restful(self.kline_info, 2001, data=kline_acquired) # 存在数据时间重合,即处理数据存库 parameters_list = ['_id', 'open', 'high', 'low', 'close', 'vol'] df = pandas.DataFrame(kline_data, columns=parameters_list) if self.period == '1min': df['ts'] = df['_id'].astype('int64') for column in parameters_list[0:6]: if column == '_id': df[column] = (df[column] / 1000).astype('int32') continue df[column] = round(df[column].astype('double'), 8) kline_list = df.to_dict('records') return kline_restful(self.kline_info, 2000, data=kline_list)
def kline_res_handle(self, kline_acquired): if isinstance(kline_acquired, list): if not kline_acquired: return kline_restful(self.kline_info, 2001, data=kline_acquired) df = pandas.DataFrame(kline_acquired) df = df.drop(columns=['volumeQuote']) rename_map = { 'volume': 'vol', 'timestamp': '_id', 'min': 'low', 'max': 'high' } df = df.rename(columns=rename_map) df['_id'] = df['_id'].apply(lambda x: time.mktime( time.strptime(x, "%Y-%m-%dT%H:%M:%S.000Z"))) if self.period == '1min': df['ts'] = df['_id'] * 1000 df['ts'] = df['ts'].astype('int64') columns = [column for column in df] for column in columns: if column not in ['_id', 'ts']: df[column] = round(df[column].astype('double'), 8) df['_id'] = df['_id'].astype('int32') kline_list = df.to_dict('records') return kline_restful(self.kline_info, 2000, data=kline_list) if isinstance(kline_acquired, dict): ''' { "error": { "code": 10001, "message": "Validation error", "description": "Parameter period with value 1mon unsupported" } } ''' return kline_restful(self.kline_info, 4000, data=kline_acquired)
def kline_res_handle(self, kline_acquired): if isinstance(kline_acquired, list): if not kline_acquired: return kline_restful(self.kline_info, 2001, data=kline_acquired) if 'error' in kline_acquired: # ['error', 10020, 'time_interval: invalid'] return kline_restful(self.kline_info, 4000, data=kline_acquired[2]) df = self.df_handle(kline_acquired) if len(kline_acquired) < self.per_count: # 返回数据存在丢失,使用pandas获取丢失时间戳,并进行补全操作。 miss_info = self.missing_data_handle(df) miss_data = self.get_miss_data(miss_info) miss_df = self.df_handle(miss_data) df = df.append(miss_df, ignore_index=True) kline_list = df.to_dict('records') return kline_restful(self.kline_info, 2000, data=kline_list)
def kline_res_handle(self, kline_acquired): if isinstance(kline_acquired, list): if not kline_acquired: return kline_restful(self.kline_info, 2001, data=kline_acquired) df = pandas.DataFrame(kline_acquired) drop_column = [ 'foreignNotional', 'homeNotional', 'lastSize', 'symbol', 'trades', 'turnover', 'vwap' ] df = df.drop(columns=drop_column) df = df.rename(columns={'volume': 'vol', 'timestamp': '_id'}) df['_id'] = df['_id'].apply(lambda x: time.mktime( time.strptime(x, "%Y-%m-%dT%H:%M:%S.000Z"))) if self.period == '1min': df['ts'] = df['_id'] * 1000 df['ts'] = df['ts'].astype('int64') df['_id'] = df['_id'].astype('int32') kline_list = df.to_dict('records') return kline_restful(self.kline_info, 2000, data=kline_list) if isinstance(kline_acquired, dict): # {'error': {'message': 'binSize is invalid.', 'name': 'HTTPError'}} return kline_restful(self.kline_info, 4000, data=kline_acquired)