def get_ddsts_by_date(date_str): """ 取出某天的所有大单统计数据 :param date_str: :return: """ ddstss = session.query(DaDanSts).filter(DaDanSts.date == date_str).all() return ddstss if __name__ == '__main__': argv = len(sys.argv) starttime = datetime.datetime.now() hour = starttime.hour delta = datetime.timedelta(days=2) today = datetime.date.today() end_date_str = today.strftime('%Y-%m-%d') if is_holiday(end_date_str) or hour < 10: end_date_str = get_pre_transact_date(today.strftime('%Y-%m-%d')) end_date = datetime.datetime.strptime(end_date_str, "%Y-%m-%d") ndays_before = end_date - delta start_date_str = ndays_before.strftime('%Y-%m-%d') logging.info("%s ~ %s", start_date_str, end_date_str) get_continually_in(start_date_str, end_date_str) endtime = datetime.datetime.now() logging.info((endtime - starttime).seconds)
build_by_hist_data(hist_data, serie) stock_hist_data.append(hist_data) save_list(stock_hist_data) logging.info("%s %s %s~%s hist data save ok", code, name, start_date, end_date) def get_start_date(): max_date_indb = session.query(func.max(HistData.date)).first() max_date_indb = max_date_indb[0] if max_date_indb is not None else "2005-12-31" return max_date_indb if max_date_indb == datetime.date.today().strftime('%Y-%m-%d') \ else(datetime.datetime.strptime(max_date_indb, '%Y-%m-%d') + datetime.timedelta(days=1)).strftime('%Y-%m-%d') if __name__ == '__main__': start_date = get_start_date() delta = datetime.timedelta(days=0) current_hour = datetime.datetime.now().hour today = datetime.date.today() end_date = today.strftime('%Y-%m-%d') if current_hour < 15: end_date = get_pre_transact_date(end_date) argv = len(sys.argv) if argv > 2: start_date = sys.argv[1] end_date = sys.argv[2] logging.info("%s %s", start_date, end_date) dump_hist_data(start_date, end_date)
def get_top_dd_sts(date_str): top20 = session.query(DaDanSts).filter(DaDanSts.date == date_str).order_by( desc(DaDanSts.net)).limit(20).all() lhhtop30 = session.query(DaDanSts).filter( DaDanSts.date == date_str).order_by(desc( DaDanSts.lhh_net)).limit(30).all() fhhtop30 = session.query(DaDanSts).filter( DaDanSts.date == date_str).order_by(desc( DaDanSts.fhh_net)).limit(30).all() ratiotop20 = session.query(DaDanSts).filter( DaDanSts.date == date_str).order_by(desc( DaDanSts.ratio)).limit(20).all() lhhratiotop20 = session.query(DaDanSts).filter( DaDanSts.date == date_str).order_by(desc( DaDanSts.lhh_ratio)).limit(20).all() lhhtop30_codes = [] fhhtop30_codes = [] for lhhdata in lhhtop30: lhhtop30_codes.append(lhhdata.code) for fhhdata in fhhtop30: fhhtop30_codes.append(fhhdata.code) pre_tran_date = get_pre_transact_date(date_str) pre_two_tran_date = get_pre_transact_date(pre_tran_date) pre_three_tran_date = get_pre_transact_date(pre_two_tran_date) pre_four_tran_date = get_pre_transact_date(pre_three_tran_date) index = 0 for data in top20: index += 1 lhh_index = -1 fhh_index = -1 try: lhh_index = lhhtop30_codes.index(data.code) except ValueError as err: pass try: fhh_index = fhhtop30_codes.index(data.code) except ValueError as err: pass handle_one(data, date_str, index, fhh_index, lhh_index, pre_tran_date, pre_two_tran_date, pre_three_tran_date, pre_four_tran_date) logging.info( "------------------------------------------------------------------") ratiolhhtop20_codes = [] for lhhdata in lhhratiotop20: ratiolhhtop20_codes.append(lhhdata.code) index2 = 0 for data in ratiotop20: index2 += 1 fhh_index2 = -1 lhh_index2 = -1 try: lhh_index2 = ratiolhhtop20_codes.index(data.code) lhh_index2 = ratiolhhtop20_codes.index(data.code) except ValueError as err: pass handle_one(data, date_str, index2, fhh_index2, lhh_index2, pre_tran_date, pre_two_tran_date, pre_three_tran_date, pre_four_tran_date) i2 = 1
if __name__ == '__main__': starttime = datetime.datetime.now() hour = starttime.hour loop_time = 30 delta = datetime.timedelta(days=loop_time) today = datetime.date.today() if hour <= 15: today -= datetime.timedelta(days=1) ndays_before = today - delta while ndays_before <= today: date_str = ndays_before.strftime('%Y-%m-%d') if holiday_util.is_holiday(date_str): date_str = holiday_util.get_pre_transact_date(date_str) ndays_before = datetime.datetime.strptime(date_str, '%Y-%m-%d') next_date_str = (ndays_before + datetime.timedelta(days=1)).strftime('%Y-%m-%d') if holiday_util.is_holiday(next_date_str): next_date_str = holiday_util.get_next_transact_date(next_date_str) get_zhangting_stocks(date_str, next_date_str) ndays_before = datetime.datetime.strptime(next_date_str, '%Y-%m-%d').date() endtime = datetime.datetime.now() logging.info((endtime - starttime).seconds)
def get_start_date(): max_date_indb = session.query(func.max(DaDanSts.date)).first() max_date_indb = max_date_indb[0] if max_date_indb is not None else "2005-12-31" return datetime.datetime.strptime(max_date_indb, '%Y-%m-%d') + datetime.timedelta(days=1) if __name__ == '__main__': starttime = datetime.datetime.now() hour = starttime.hour endday = datetime.date.today() if hour < 15: # 9点前dump前一天的,否则默认dump今天的 endday = datetime.datetime.strptime(get_pre_transact_date(endday.strftime('%Y-%m-%d')), '%Y-%m-%d') startday = get_start_date() argv = len(sys.argv) if argv > 2: startday = datetime.datetime.strptime(sys.argv[1], '%Y-%m-%d') endday = datetime.datetime.strptime(sys.argv[2], '%Y-%m-%d') logging.info("startday: %s, endday: %s", startday, endday) while startday <= endday: date_str = startday.strftime('%Y-%m-%d') if is_holiday(date_str): startday += datetime.timedelta(days=1) continue logging.info("date: %s", date_str)