def updateklinedata(pair, timeframe, exchangename, usedb, rl, tf_asminute): #取当前数据库中最晚的一条数据的时间加上一秒为起始,获取到当前时间的数据# db = DatabaseInterface(usedb) fpair, ftimeframe = format_input(pair, timeframe, exchangename) lastrow = db.db_findone('KLINE' + ftimeframe, filter_dic={'pair': fpair}, sel_fields=[], sort=[("time", -1)]) print(ftimeframe + fpair + usedb) if lastrow is None: if exchangename == 'okex': return initdata_from_okex(pair, timeframe, usedb) else: print(ftimeframe + fpair + usedb) assert False, '数据库中没有找到数据' print(type(tf_asminute)) if rl == 'l': shiftsec = 60 * int(tf_asminute) * 1000 else: shiftsec = 0 lasttime = base.timestamp_toStr(float(lastrow['time']) + 1000, dateformat="%Y%m%d %H:%M:%S") endtime = base.timestamp_toStr( time.time() * 1000 - shiftsec, dateformat="%Y%m%d %H:%M:%S") if rl == 'l' else None #交易所获取k线函数 # print(lasttime) print(lasttime + ',' + endtime) df = getkline(pair, timeframe, exchangename, lasttime, end=endtime) print(df.shape[0]) # df=None #没有新数据,不更新 if not df is None: #对于原始数据进行修正 df['pct_change'].iloc[0] = (df['close'].iloc[0] - lastrow['close']) * 100 / lastrow['close'] # if rl=='l': # df['time']=[t+shiftsec for t in df['time']] db.db_insertdataframe(df, 'KLINE' + ftimeframe) return True else: return False