def __saving_work(code, coll_stock_day): try: QA_util_log_info('##JOB01 Now Saving STOCK_DAY==== %s' % (str(code))) ref = coll_stock_day.find({'code': str(code)[0:6]}) end_date = str(now_time())[0:10] if ref.count() > 0: # 加入这个判断的原因是因为如果股票是刚上市的 数据库会没有数据 所以会有负索引问题出现 start_date = ref[ref.count() - 1]['date'] else: start_date = '1990-01-01' QA_util_log_info( ' UPDATE_STOCK_DAY \n Trying updating %s from %s to %s' % (code, start_date, end_date)) if start_date != end_date: coll_stock_day.insert_many( QA_util_to_json_from_pandas( QA_fetch_get_stock_day(str(code), start_date, end_date, '00')[1::])) except: __err.append(str(code))
def __init__(self): super().__init__() self.frequence = FREQUENCE.DAY self.market_type = MARKET_TYPE.STOCK_CN # self.stock_basics = QATs.get_stock_basics() # self.time_to_Market_300439 = self.stock_basics.loc['300439', 'timeToMarket'] # self.time_to_Market_300439 = QA.QA_util_date_int2str(self.time_to_Market_300439) # self.time_to_day = QA_util_datetime_to_strdate(QA.QA_util_date_today()) # print(self.time_to_Market_300439) #print(self.time_to_day) self.time_to_Market_300439 = '2015-04-22' self.time_to_day = '2018-05-01' self.df_from_Tdx = QA_fetch_get_stock_day('300439', self.time_to_Market_300439, self.time_to_day, '01') #print(self.df_from_Tdx) self.ma05 = QA_indicator_MA(self.df_from_Tdx, 5) self.ma10 = QA_indicator_MA(self.df_from_Tdx, 10) self.ma15 = QA_indicator_MA(self.df_from_Tdx, 15) self.ma20 = QA_indicator_MA(self.df_from_Tdx, 20)
def test_select_best_ip(self): best_ip = select_best_ip() ip = best_ip['stock']['ip'] port = best_ip['stock']['port'] self.assertTrue(isinstance(ip, str), '未获取到ip') self.assertTrue(isinstance(port, int), '未获取到端口号') self.assertTrue( ping(ip, port, 'stock') < datetime.timedelta(0, 1, 0), '地址ping不通: {} {} {}'.format(ip, port, ping(ip, port, 'stock'))) type = 'future' ip = best_ip[type]['ip'] port = best_ip[type]['port'] self.assertTrue( ping(ip, port, type) < datetime.timedelta(0, 1, 0), '地址ping不通: {} {} {}'.format(ip, port, ping(ip, port, 'stock'))) code = '000001' days = 300 start = datetime.datetime.now().date() - datetime.timedelta(days) end = datetime.datetime.now().date() - datetime.timedelta(10) data = QA_fetch_get_stock_day(code, start_date=start, end_date=end) # print(data) self.assertTrue( len(data) > (end - start).days / 2, '返回数据个数不匹配,数据长度:{},天数(包含节假日):{}'.format(len(data), (end - start).days / 2)) # 恢复初始化ip,重新测试ip default_ip = { 'stock': { 'ip': None, 'port': None }, 'future': { 'ip': None, 'port': None } } qasetting = QA_Setting() qasetting.set_config(section='IPLIST', option='default', default_value=default_ip) filenames = ['stock_ip_list', 'stock_ip_list_MP'] for filename in filenames: # 删除保存ip的pickle文件 filename = '{}{}{}.pickle'.format( qasetting.get_config(section='LOG', option='path', default_value=""), os.sep, filename) if os.path.isfile(filename): os.remove(filename) best_ip = select_best_ip() ip = best_ip['stock']['ip'] port = best_ip['stock']['port'] self.assertTrue(isinstance(ip, str), '未获取到ip') self.assertTrue(isinstance(port, int), '未获取到端口号') ip = best_ip['future']['ip'] port = best_ip['future']['port'] self.assertTrue(isinstance(ip, str), '未获取到ip') self.assertTrue(isinstance(port, int), '未获取到端口号') data = QA_fetch_get_stock_day(code, start, end) self.assertTrue( len(data) > (end - start).days / 2, '返回数据个数不匹配,数据长度:{},天数(包含节假日):{}'.format(len(data), (end - start).days / 2))
def __saving_work(code, coll_stock_day): try: QA_util_log_info( '##JOB01 Now Saving STOCK_DAY==== {}'.format(str(code)), ui_log ) # 首选查找数据库 是否 有 这个代码的数据 ref = coll_stock_day.find({'code': str(code)[0:6]}) end_date = str(now_time())[0:10] # 当前数据库已经包含了这个代码的数据, 继续增量更新 # 加入这个判断的原因是因为如果股票是刚上市的 数据库会没有数据 所以会有负索引问题出现 if ref.count() > 0: # 接着上次获取的日期继续更新 start_date = ref[ref.count() - 1]['date'] QA_util_log_info( 'UPDATE_STOCK_DAY \n Trying updating {} from {} to {}' .format(code, start_date, end_date), ui_log ) if start_date != end_date: coll_stock_day.insert_many( QA_util_to_json_from_pandas( QA_fetch_get_stock_day( str(code), QA_util_get_next_day(start_date), end_date, '00' ) ) ) # 当前数据库中没有这个代码的股票数据, 从1990-01-01 开始下载所有的数据 else: start_date = '1990-01-01' QA_util_log_info( 'UPDATE_STOCK_DAY \n Trying updating {} from {} to {}' .format(code, start_date, end_date), ui_log ) if start_date != end_date: coll_stock_day.insert_many( QA_util_to_json_from_pandas( QA_fetch_get_stock_day( str(code), start_date, end_date, '00' ) ) ) except Exception as error0: print(error0) err.append(str(code))