def save_stock_h_data_revote(stocks=None, start_date=None, end_date=None, autype='qfp', index=False): """获取B{所有}历史复权数据 Args: stocks:list,股票代码 e.g. ['600848', '000001'], 为None, 则取stock_basic中所有的股票 start_date:string,开始日期 format:YYYY-MM-DD 为空时取当前日期 end_date:string,结束日期 format:YYYY-MM-DD 为空时取去年今日 autype:string,复权类型,qfq-前复权 hfq-后复权 None-不复权,默认为qfq index:Boolean,是否是大盘指数,默认为False """ log_save_type = 'all' is_delete = False if stocks: assert isinstance(stocks, list), 'stocks must be a list type.' log_save_type = 'select' else: is_delete = True d = today_line if end_date is not None: d = end_date stocks = [stock.code for stock in base_service.get_stocks(d)] last_stock_code = stocks[-1] logger.info('Last stock code is: %s' % last_stock_code) save_h_revote_data_thread = threading.Thread(name='save_h_revote_data_thread', target=transaction_dal.save_h_revote_data) save_h_revote_data_thread.start() # threading.Timer(1, check_thread_alive, args=(save_h_revote_data_thread,)).start() if end_date is not None: assert start_date is not None, 'start_date must be not None, when end_date is not None.' if start_date is not None: if end_date is None: end_date = today_line logger.info('Begin save %s stocks history h revote data, start date is: %s, end date is: %s.' % (log_save_type, start_date, end_date)) else: logger.info('Begin save %s stocks history k data, all date.' % log_save_type) deleted = True if is_delete: if start_date is None: deleted = table_service.truncate_table(RevoteHistoryData) else: deleted = util_dal.delete_start_date_end_date_data(RevoteHistoryData, start_date, end_date) if deleted: for stock in stocks: transaction_dal.get_h_revote_data(stock, start_date, end_date, autype, index) if is_delete and not deleted: logger.error('删除表数据错误. Model is %s.' % RevoteHistoryData) if start_date is not None: logger.info('End save %s stocks history h revote data, start date is: %s, end date is: %s.' % (log_save_type, start_date, end_date)) else: logger.info('End save %s stocks history k data, all date.' % log_save_type) transaction_dal.h_revote_data_queue.put((last_stock_code, 'stop', 'stop', 'stop'))
def save_deposit_rate(): """得到存款利率""" table_service.truncate_table(DepositsRate) data_dicts = macro_dal.get_deposit_rate() if data_dicts: util_dal.save_data(DepositsRate, data_dicts)
def save_ppi(): """工业品出厂价格指数""" table_service.truncate_table(PPI) data_dicts = macro_dal.get_ppi() if data_dicts: util_dal.save_data(PPI, data_dicts)
def save_gdp_three_demands(): """三大需求对GDP贡献""" table_service.truncate_table(GdpThreeDemands) data_dicts = macro_dal.get_gdp_three_demands() if data_dicts: util_dal.save_data(GdpThreeDemands, data_dicts)
def save_gdp_three_industry_contrib(): """三大产业贡献率""" table_service.truncate_table(GdpThreeIndustryContrib) data_dicts = macro_dal.get_gdp_three_industry_contrib() if data_dicts: util_dal.save_data(GdpThreeIndustryContrib, data_dicts)
def save_money_supply(): """得到货币供应量""" table_service.truncate_table(MoneySupply) data_dicts = macro_dal.get_money_supply() if data_dicts: util_dal.save_data(MoneySupply, data_dicts)
def save_gdp_year(): """国内生产总值(年度)""" table_service.truncate_table(GrossDomesticProductYear) data_dicts = macro_dal.get_gdp_year() if data_dicts: util_dal.save_data(GrossDomesticProductYear, data_dicts)
def save_gem_classified(): """获取创业板股票数据,即查找所有300开头的股票""" table_service.truncate_table(GemClassified) classification_dal.save_gem_classified()
def save_st_classified(): """获取风险警示板股票数据,即查找所有st股票""" table_service.truncate_table(StClassified) classification_dal.save_st_classified()
def save_area_classified(): """按地域对股票进行分类,即查找出哪些股票属于哪个省份。""" table_service.truncate_table(AreaClassified) classification_dal.save_area_classified()
def save_sme_classified(): """获取中小板股票数据,即查找所有002开头的股票""" table_service.truncate_table(SmeClassified) classification_dal.save_sme_classified()
def save_concept_classified(): """处理股票概念分类.现实的二级市场交易中,经常会以”概念”来炒作,在数据分析过程中,可根据概念分类监测资金等信息的变动情况。""" table_service.truncate_table(ConceptClassified) classification_dal.save_concept_classified()
def save_industry_classified(): """处理行业分类""" logger.info('save_industry_classified') table_service.truncate_table(IndustryClassified) classification_dal.save_industry_classified()
def save_stocks_k_data(stocks=None, start_date=None, end_date=None, autype='qfq', index=False, ktype=None): """获取k线数据的历史复权数据 新接口融合了get_hist_data和get_h_data两个接口的功能,即能方便获取日周月的低频数据, 也可以获取5、15、30和60分钟相对高频的数据。 同时,上市以来的前后复权数据也能在一行代码中轻松获得,当然,您也可以选择不复权。 Args: stocks:list,股票代码 e.g. ['600848', '000001'], 为None, 则取stock_basic中所有的股票 start_date:string,开始日期 format:YYYY-MM-DD 为空时取当前日期 end_date:string,结束日期 format:YYYY-MM-DD 为空时取去年今日 autype:string,复权类型,qfq-前复权 hfq-后复权 None-不复权,默认为qfq index:Boolean,是否是大盘指数,默认为False ktype: 数据类型: D, W M, 默认为D """ ktypes = ['D', 'W', 'M', '5', '15', '30', '60'] log_save_type = 'all' is_delete = False if stocks: assert isinstance(stocks, list), 'stocks must be a list type.' log_save_type = 'select' else: is_delete = True d = today_line if end_date is not None: d = end_date stocks = [stock.code for stock in base_service.get_stocks(d)] last_stock_code = stocks[-1] logger.info('Last stock code is: %s' % last_stock_code) save_stock_k_data_thread = threading.Thread(name='save_stock_k_data_thread', target=transaction_dal.save_stock_k_data) save_stock_k_data_thread.start() # threading.Timer(1, check_thread_alive, args=(save_stock_k_data_thread,)).start() if end_date is not None: assert start_date is not None, 'start_date must be not None, when end_date is not None.' if start_date is not None: if end_date is None: end_date = today_line logger.info('Begin save %s stocks history k data, start date is: %s, end date is: %s, ktype is: %s.' % (log_save_type, start_date, end_date, ktype)) else: logger.info('Begin save %s stocks history k data, all date, ktype is: %s.' % (log_save_type, ktype)) if ktype is not None: assert ktype in ktypes, 'ktype must be one of %s' % ktypes model = HistoryKDataD if ktype.upper() == 'D': model = HistoryKDataD elif ktype.upper() == 'W': model = HistoryKDataW elif ktype.upper() == 'M': model = HistoryKDataM elif ktype == '5': model = HistoryKData5 elif ktype == '15': model = HistoryKData15 elif ktype == '30': model = HistoryKData30 elif ktype == '60': model = HistoryKData60 else: pass deleted = True if is_delete: if start_date is None: deleted = table_service.truncate_table(model) else: deleted = util_dal.delete_start_date_end_date_data(model, start_date, end_date) if deleted: for stock in stocks: transaction_dal.get_stock_k_data(stock, start_date, end_date, autype, index, ktype) if is_delete and not deleted: logger.error('删除表数据错误. Model is %s.' % model) else: for _ktype in ktypes: if _ktype.upper() == 'D': model = HistoryKDataD elif _ktype.upper() == 'W': model = HistoryKDataW elif _ktype.upper() == 'M': model = HistoryKDataM elif _ktype == '5': model = HistoryKData5 elif _ktype == '15': model = HistoryKData15 elif _ktype == '30': model = HistoryKData30 elif _ktype == '60': model = HistoryKData60 else: pass deleted = True if is_delete: if start_date is None: deleted = table_service.truncate_table(model) else: deleted = util_dal.delete_start_date_end_date_data(model, start_date, end_date) if deleted: for stock in stocks: transaction_dal.get_stock_k_data(stock, start_date, end_date, autype, index, _ktype) if is_delete and not deleted: logger.error('删除表数据错误. Model is %s.' % model) if start_date is not None: logger.info('End save %s stocks history k data, start date is: %s, end date is: %s, ktype is: %s.' % (log_save_type, start_date, end_date, ktype)) else: logger.info('End save %s stocks history k data, all date, ktype is: %s.' % (log_save_type, ktype)) # for stop the save thread transaction_dal.stock_k_data_queue.put((last_stock_code, 'stop', 'stop', 'stop'))
def save_loan_rate(): """得到贷款利率""" table_service.truncate_table(LoanRate) data_dicts = macro_dal.get_loan_rate() if data_dicts: util_dal.save_data(LoanRate, data_dicts)
def save_hs300s(): """获取沪深300当前成份股及所占权重""" table_service.truncate_table(Hs300) classification_dal.save_hs300s()
def save_required_reserves_rate(): """得到存款准备金率""" table_service.truncate_table(RequiredReservesRate) data_dicts = macro_dal.get_required_reserves_rate() if data_dicts: util_dal.save_data(RequiredReservesRate, data_dicts)
def save_sz50s(): """上证50成分股""" table_service.truncate_table(Sz50) classification_dal.save_sz50s()
def save_money_supply_bal(): """得到货币供应量(年底余额)""" table_service.truncate_table(MoneySupplyBal) data_dicts = macro_dal.get_money_supply_bal() if data_dicts: util_dal.save_data(MoneySupplyBal, data_dicts)
def save_zz500s(): """中证500成分股""" table_service.truncate_table(Zz500) classification_dal.save_zz500s()
def save_gdp_quarter(): """得到国内生产总值(季度)""" table_service.truncate_table(GrossDomesticProductQuarter) data_dicts = macro_dal.get_gdp_quarter() if data_dicts: util_dal.save_data(GrossDomesticProductQuarter, data_dicts)
def save_terminated(): """获取已经被终止上市的股票列表,数据从上交所获取,目前只有在上海证券交易所交易被终止的股票。""" table_service.truncate_table(Terminated) classification_dal.save_terminated()
def save_gdp_three_industry_pull(): """三大产业对GDP拉动""" table_service.truncate_table(GdpThreeIndustryPull) data_dicts = macro_dal.get_gdp_three_industry_pull() if data_dicts: util_dal.save_data(GdpThreeIndustryPull, data_dicts)
def save_suspend(): """获取被暂停上市的股票列表,数据从上交所获取,目前只有在上海证券交易所交易被终止的股票。""" table_service.truncate_table(Suspend) classification_dal.save_suspend()
def save_cpi(): """居民消费价格指数""" table_service.truncate_table(CPI) data_dicts = macro_dal.get_cpi() if data_dicts: util_dal.save_data(CPI, data_dicts)
def save_stocks_hist_data(stocks=None, start_date=None, end_date=None, ktype=None): """获取个股历史交易数据(包括均线数据),可以通过参数设置获取日k线、周k线、月k线数据。 本接口只能获取近3年的日线数据 """ log_save_type = 'all' ktypes = ['D', 'W', 'M', '5', '15', '30', '60'] is_delete = False if stocks: assert isinstance(stocks, list), 'stocks must be list.' log_save_type = 'select' else: is_delete = True d = today_line if end_date is not None: d = end_date stocks = [stock.code for stock in base_service.get_stocks(d)] last_stock_code = stocks[-1] logger.info('last_stock_code is: %s' % last_stock_code) save_his_data_thread = threading.Thread(name='save_his_data_thread', target=transaction_dal.save_his_data) save_his_data_thread.start() if end_date is not None: assert start_date is not None, 'start_date must be not None, when end_date is not None.' if start_date is not None: if end_date is None: end_date = today_line logger.info('Begin save %s stocks history data, start date is: %s, end date is: %s, ktype is: %s.' % (log_save_type, start_date, end_date, ktype)) else: logger.info('Begin save %s stocks history data, all date, ktype is: %s.' % (log_save_type, ktype)) if ktype is None: for _ktype in ktypes: if _ktype.upper() == 'D': model = HistoryDataD elif _ktype.upper() == 'W': model = HistoryDataW elif _ktype.upper() == 'M': model = HistoryDataM elif _ktype == '5': model = HistoryData5 elif _ktype == '15': model = HistoryData15 elif _ktype == '30': model = HistoryData30 elif _ktype == '60': model = HistoryData60 else: pass deleted = True if is_delete: if start_date is None: deleted = table_service.truncate_table(model) else: deleted = util_dal.delete_start_date_end_date_data(model, start_date, end_date) if deleted: for stock in stocks: transaction_dal.get_his_data(stock, start_date=start_date, end_date=end_date, ktype=_ktype) if is_delete and not deleted: logger.error('删除表数据错误. Model is %s.' % model) else: assert ktype in ktypes, 'ktype must be one of %s' % ktypes model = HistoryDataD if ktype.upper() == 'D': model = HistoryDataD elif ktype.upper() == 'W': model = HistoryDataW elif ktype.upper() == 'M': model = HistoryDataM elif ktype == '5': model = HistoryData5 elif ktype == '15': model = HistoryData15 elif ktype == '30': model = HistoryData30 elif ktype == '60': model = HistoryData60 else: pass deleted = True if is_delete: if start_date is None: deleted = table_service.truncate_table(model) else: deleted = util_dal.delete_start_date_end_date_data(model, start_date, end_date) if deleted: for stock in stocks: transaction_dal.get_his_data(stock, start_date=start_date, end_date=end_date, ktype=ktype) if is_delete and not deleted: logger.error('删除表数据错误. Model is %s.' % model) if start_date is not None: logger.info('End save %s stocks history data, start date is: %s, end date is: %s, ktype is: %s.' % (log_save_type, start_date, end_date, ktype)) else: logger.info('End save %s stocks history data, all date, ktype is: %s.' % (log_save_type, ktype)) transaction_dal.his_data_queue.put((last_stock_code, 'stop', 'stop', 'stop'))