def QA_fetch_index_min_adv(code, start, end=None, frequence='1min', if_drop_index=True, collections=DATABASE.index_min): ''' '获取股票分钟线' :param code: :param start: :param end: :param frequence: :param if_drop_index: :param collections: :return: ''' if frequence in ['1min', '1m']: frequence = '1min' elif frequence in ['5min', '5m']: frequence = '5min' elif frequence in ['15min', '15m']: frequence = '15min' elif frequence in ['30min', '30m']: frequence = '30min' elif frequence in ['60min', '60m']: frequence = '60min' # __data = [] 没有使用 end = start if end is None else end if len(start) == 10: start = '{} 09:30:00'.format(start) if len(end) == 10: end = '{} 15:00:00'.format(end) # 🛠 todo 报告错误 如果开始时间 在 结束时间之后 # if start == end: # 🛠 todo 如果相等,根据 frequence 获取开始时间的 时间段 QA_fetch_index_min_adv, 不支持start end是相等的 # print("QA Error QA_fetch_index_min_adv parameter code=%s , start=%s, end=%s is equal, should have time span! " % (code, start, end)) # return None res = QA_fetch_index_min(code, start, end, format='pd', frequence=frequence, collections=collections) if res is None: print( "QA Error QA_fetch_index_min_adv parameter code=%s start=%s end=%s frequence=%s call QA_fetch_index_min return None" % (code, start, end, frequence)) else: res_reset_index = res.set_index(['datetime', 'code'], drop=if_drop_index) # if res_reset_index is None: # print("QA Error QA_fetch_index_min_adv set index 'date, code' return None") return QA_DataStruct_Index_min(res_reset_index)
def QA_fetch_index_min_adv( code, start, end=None, frequence='1min', if_drop_index=True, collections=DATABASE.index_min): ''' '获取股票分钟线' :param code: :param start: :param end: :param frequence: :param if_drop_index: :param collections: :return: ''' if frequence in ['1min', '1m']: frequence = '1min' elif frequence in ['5min', '5m']: frequence = '5min' elif frequence in ['15min', '15m']: frequence = '15min' elif frequence in ['30min', '30m']: frequence = '30min' elif frequence in ['60min', '60m']: frequence = '60min' # __data = [] 没有使用 end = start if end is None else end if len(start) == 10: start = '{} 09:30:00'.format(start) if len(end) == 10: end = '{} 15:00:00'.format(end) # 🛠 todo 报告错误 如果开始时间 在 结束时间之后 # if start == end: # 🛠 todo 如果相等,根据 frequence 获取开始时间的 时间段 QA_fetch_index_min_adv, 不支持start end是相等的 #print("QA Error QA_fetch_index_min_adv parameter code=%s , start=%s, end=%s is equal, should have time span! " % (code, start, end)) # return None res = QA_fetch_index_min( code, start, end, format='pd', frequence=frequence) if res is None: print("QA Error QA_fetch_index_min_adv parameter code=%s start=%s end=%s frequence=%s call QA_fetch_index_min return None" % ( code, start, end, frequence)) else: res_reset_index = res.set_index( ['datetime', 'code'], drop=if_drop_index) # if res_reset_index is None: # print("QA Error QA_fetch_index_min_adv set index 'date, code' return None") return QA_DataStruct_Index_min(res_reset_index)
def QA_fetch_index_min_adv(code, start, end=None, frequence='1min', if_drop_index=False, collections=DATABASE.index_min): '获取股票分钟线' if frequence in ['1min', '1m']: frequence = '1min' elif frequence in ['5min', '5m']: frequence = '5min' elif frequence in ['15min', '15m']: frequence = '15min' elif frequence in ['30min', '30m']: frequence = '30min' elif frequence in ['60min', '60m']: frequence = '60min' __data = [] end = start if end is None else end if len(start) == 10: start = '{} 09:30:00'.format(start) if len(end) == 10: end = '{} 15:00:00'.format(end) return QA_DataStruct_Index_min( QA_fetch_index_min(code, start, end, format='pd', frequence=frequence).set_index(['datetime', 'code'], drop=if_drop_index))
def test_getMin_diffQA(self): code = '000001' days = 20 * 1.2 start = str( (datetime.datetime.now() - datetime.timedelta(days)).date()) end = str(datetime.datetime.now() - datetime.timedelta(0)) qm = self._qm df = qm.get(code, start, end, frequence='1min') df2 = QA_fetch_index_min(code, start, end=end, format='pd', frequence='1min') # todo df的长度比df2长。未找出原因 data1, data2 = df, df2 self.assertTrue( len(data1) == len(data2), "和QA返回的分钟线数据长度不一致:{}:{}".format(len(data1), len(data2))) if len(data1) > len(data2): print("array1f的长度比array2长") data1 = data1[-len(data2):] elif len(data1) < len(data2): print("array2的长度比array1长") data2 = data2[-len(data1):] # todo 连续获取分钟数据时,不定时返回结果不想等。报错 obo = self.differOneByOne(data1, data2) self.assertTrue(data1.equals(data2), "和QA返回的分钟线数据不一致:{}".format(obo))
def __get_index_min_data(self, __bid): __data = QA_util_to_json_from_pandas(QA_fetch_index_min(str( __bid.code)[0:6], str(__bid.datetime)[0:10], str(__bid.datetime)[0:10], 'pd')) if len(__data) == 0: pass else: __data = __data[0] return __data