class Shibor(object): def __init__(self): super(Shibor, self).__init__() def __call__(self, conns): self.base = Base() self.financial_data = conns['financial_data'] year = self.base.gettoday()[:4] #Shibor拆放利率 shibor_data = ts.shibor_data(year) print(shibor_data) self.base.batchwri(shibor_data, 'shibor_data', self.financial_data) #银行报价数据 shibor_quote_date = ts.shibor_quote_data(year) self.base.batchwri(shibor_quote_date, 'shibor_quote_data', self.financial_data) #Shibor均值数据 shibor_ma_data = ts.shibor_ma_data(year) self.base.batchwri(shibor_ma_data, 'shibor_ma_data', self.financial_data) #贷款基础利率(LPR) lpr_data = ts.lpr_data(year) self.base.batchwri(lpr_data, 'lpr_data', self.financial_data) #LPR均值数据 lpr_ma_data = ts.lpr_ma_data(year) self.base.batchwri(lpr_ma_data, 'lpr_ma_data', self.financial_data)
class GetDataTransaction(object): def set_data(self): self.code = '600848' self.start = '2017-11-03' self.end = '2017-11-07' self.df=pd.DataFrame() def __call__(self, conns): self.set_data() self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_stock_basics() self.base.batchwri(self.df, 'stock_basics1', self.financial_data) def get_today_all(self, conns): self.set_data() self.base = Base() self.financial_data = conns['financial_data'] #self.df=ts.get_hist_data(self.code,self.start,self.end) #self.df=ts.get_stock_basics(self.code,self.start,self.end) #self.df=ts.get_today_all() #self.df=ts.get_tick_data(self.code,date='2017-01-09') #self.df=ts.get_realtime_quotes(self.code) #self.df=ts.get_today_ticks(self.code) #self.df=ts.get_index() #self.df=ts.get_sina_dd(self.code,date='2014-01-09') self.base.batchwri(self.df, 'realtime_quotes', self.financial_data)
def dapanlishi(conns): base = Base() financial_data = conns['financial_data'] df = ts.get_index() for stock in df['code']: df1=ts.get_k_data(stock,index=True,start='2018-07-01', end='2018-07-30') df1 = df1.sort_values(['date'], ascending=[0]).reset_index(drop=True) # 排序,0倒序,1正序 重置索引 df2 = ts.get_h_data(stock, index=True, start='2018-07-01', end='2018-07-30') noise_df = pd.DataFrame(df2, columns=['amount']).reset_index(drop=True) df3 =pd.merge(df1,noise_df, left_index=True, right_index=True) base.batchwri(df3, 'dapanzhishulishi', financial_data)
def stocklishi(conns): base = Base() financial_data = conns['financial_data'] df = ts.get_today_all()['code'] # df = pd.DataFrame(df, columns=['code','name','open','high','low','volume','amount']) for stock in df: df1 = pd.DataFrame(ts.get_hist_data(stock) ,columns=['date','code','name','open','high','low','volume']) df2 = ts.get_h_data(stock,start='2018-07-01', end='2018-07-30') df3 = ts.get_h_data(stock,start='2018-07-01', end='2018-07-30',autype='hfq') df2 = pd.merge(df1, df2, on='date') df3 = pd.merge(df2, df3, on='date') base.batchwri(df3, 'stocklishi', financial_data)
class LonghuBang(object): def __init__(self): super(LonghuBang,self).__init__() def __call__(self,conns): self.base=Base() self.financial_data=conns['financial_data'] date=self.base.gettoday().replace('/','-') # print(date) # '''每日龙虎榜列表''' # for day in self.base.datelist('20180702','20180705'): # day=day.replace('/','-') # top_list=ts.top_list(day) # self.base.batchwri(top_list,'top_list',self.financial_data) # ''' # 名称:个股上榜统计 # 参数说明: # days:统计周期5、10、30和60日,默认为5日 # retry_count:当网络异常后重试次数,默认为3 # pause:重试时停顿秒数,默认为0''' # cap_tops=ts.cap_tops() # self.base.batchwri(cap_tops,'cap_tops',self.financial_data) # ''' # 名称:营业部上榜统计 # 参数说明: # days:统计周期5、10、30和60日,默认为5日 # retry_count:当网络异常后重试次数,默认为3 # pause:重试时停顿秒数,默认为0''' # broker_tops=ts.broker_tops() # self.base.batchwri(broker_tops,'broker_tops',self.financial_data) # ''' # 名称:机构席位追踪 # 参数说明: # days:统计周期5、10、30和60日,默认为5日 # retry_count:当网络异常后重试次数,默认为3 # pause:重试时停顿秒数,默认为0 # ''' # inst_tops=ts.inst_tops() # self.base.batchwri(inst_tops,'inst_tops',self.financial_data) '''机构成交明细''' inst_detail=ts.inst_detail() self.base.batchwri(inst_detail,'inst_detail',self.financial_data)
class DaPanHangQing(object): def __init__(self): super(DaPanHangQing, self).__init__() def __call__(self, conns): self.base = Base() self.finacial_data = conns['financial_data'] #清空表 # self.finacial_data.dopost('TRUNCATE TABLE dapan_hangqing_date') # self.finacial_data.dopost('TRUNCATE TABLE dapan_code_name') # 实时行情 hangqing = ts.get_index() today = self.base.gettoday() hangqing['date'] = today.replace('/', '-') #大盘指数每日行情数据 self.base.batchwri(hangqing, 'dapan_hangqing_date', self.finacial_data) #大盘代码-名字对照表 self.base.batchwri(hangqing[['code', 'name']], 'dapan_code_name', self.finacial_data) #大盘代码-名字对照表去重 duizhao = self.finacial_data.getdata('dapan_code_name') # print(duizhao.size) duizhao_qc = duizhao.drop_duplicates().sort_values( by='code').reset_index(drop=True) # print(df) self.finacial_data.dopost('TRUNCATE TABLE dapan_code_name') self.base.batchwri(duizhao_qc, 'dapan_code_name', self.finacial_data)
class GeGuHangQing(object): def __init__(self): super(GeGuHangQing,self).__init__() self.close_res = [] def __call__(self, conns, retry_num=3): ''' 抓取股票每日行情数据 :param conns: 数据库连接 :param retry_num: 重新获取数据的次数 :return: 数据存储在数据库 ''' global hangqing self.base = Base() self.finacial_data = conns['financial_data'] # self.finacial_data.dopost('TRUNCATE TABLE stock_hangqing_date') # self.finacial_data.dopost('TRUNCATE TABLE stock_code_name') #在股市收盘后,获取股票当日行情 #出现"urllib.error.HTTPError: HTTP Error 456"的问题 for i in range(retry_num+1): try: hangqing = ts.get_today_all() break except Exception as e: logger.warning('Retry get today stock data , the [%d] times, err %s' % (i, e.message)) if i == retry_num: logger.warning(traceback.format_exc()) raise e time.sleep(300) today = self.base.gettoday() hangqing['date'] = today.replace('/','-') #股市收盘后,trade现价就是股票的收盘价。 hangqing.rename(columns={'trade': 'close'}, inplace=True) #去重 hangqing_qc = hangqing.drop_duplicates().sort_values(by='code').reset_index(drop=True) # print(hangqing_qc) self.base.batchwri(hangqing_qc, 'stock_hangqing_date',self.finacial_data) self.base.batchwri(hangqing_qc[['code','name']], 'stock_code_name', self.finacial_data) #股票代码-名称对照表去重 duizhao = self.finacial_data.getdata('stock_code_name') print(duizhao.size) duizhao_qc = duizhao.drop_duplicates().sort_values(by='code').reset_index(drop=True) # print(df) self.finacial_data.dopost('TRUNCATE TABLE stock_code_name') self.base.batchwri(duizhao_qc, 'stock_code_name', self.finacial_data)
class XinwenShijian(object): def __init__(self): super(XinwenShijian, self).__init__() def __call__(self, conns): self.base = Base() self.financial_data = conns['financial_data'] '''即时财经新闻''' latest_news = ts.get_latest_news() self.base.batchwri(latest_news, 'latest_news', self.financial_data) ''' 名称:个股信息地雷 功能:获得个股信息地雷数据 参数 code:股票代码 date:信息公布日期 ''' notices = ts.get_notices() self.base.batchwri(notices, 'notices', self.financial_data) '''新浪股吧新闻''' guba_sina = ts.guba_sina() self.base.batchwri(guba_sina, 'guba_sina', self.financial_data)
class GerDataTouzicankao(object): def __init__(self): #self.code = '002337' self.df = pd.DataFrame() def profit_data(self, conns, top): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.profit_data(top) self.base.batchwri(self.df, 'fenpeiyuan', self.financial_data) def forecast_data(self, conns, year, quarter): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.forecast_data(year, quarter) self.base.batchwri(self.df, 'yejibaobiao', self.financial_data) def xsg_data(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.xsg_data() self.base.batchwri(self.df, 'xianshougujiejin', self.financial_data) def fund_holdings(self, conns, year, quarter): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.fund_holdings(year, quarter) self.base.batchwri(self.df, 'jijinchigu', self.financial_data) def new_stocks(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.new_stocks() self.base.batchwri(self.df, 'xingushuju', self.financial_data) def sh_margins(self, conns, start, end): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.sh_margins(start, end) self.base.batchwri(self.df, 'rongzirongquan_sh', self.financial_data) def sz_margins(self, conns, start, end): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.sz_margins(start, end) self.base.batchwri(self.df, 'rongzirongquan_sz', self.financial_data)
class GetDataTransaction(object): def __init__(self): self.code = '000001' self.start = '2018-07-01' self.end = '2018-07-25' self.df = pd.DataFrame() def __call__(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_stock_basics() self.base.batchwri(self.df, 'stock_basics1', self.financial_data) #历史行情:获取个股历史交易数据(包括均线数据),可以通过参数设置获取日k线、周k线、月k线,以及5分钟、15分钟、30分钟和60分钟k线数据。 #本接口只能获取近3年的日线数据,适合搭配均线数据进行选股和分析,如果需要全部历史数据,请调用下一个接口get_h_data() def get_hist_data(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_hist_data(self.code) self.base.batchwri(self.df, 'history_data_0701-0725', self.financial_data) #复权数据:获取历史复权数据,分为前复权和后复权数据,接口提供股票上市以来所有历史数据,默认为前复权。如果不设定开始和结束日期, #则返回近一年的复权数据,从性能上考虑,推荐设定开始日期和结束日期,而且最好不要超过三年以上,获取全部历史数据,请分年段分步获取。 def get_stock_basics(self, conns): self.base = Base() self.financial_data = conns['financial_data'] #self.df = ts.get_stock_basics(self.code) # ts.get_h_data('002337') # 前复权 # ts.get_h_data('002337', autype='hfq') # 后复权 # ts.get_h_data('002337', autype=None) # 不复权 self.df = ts.get_h_data(self.code, self.start, self.end) # 两个日期之间的前复权数据 #self.df = ts.get_k_data('000001', index=True, ktype='W', autype='hfq') # # ts.get_h_data('399106', index=True) # 深圳综合指数 self.base.batchwri(self.df, 'fuquan_data', self.financial_data) #实时行情::一次性获取当前交易所有股票的行情数据(如果是节假日,即为上一交易日,结果显示速度取决于网速) def get_today_all(self, conns): self.base = Base() self.financial_data = conns['financial_data'] #self.df=ts.get_hist_data(self.code,self.start,self.end) #self.df=ts.get_stock_basics(self.code,self.start,self.end) self.df = ts.get_today_all() #self.df=ts.get_tick_data(self.code,date='2017-01-09') #self.df=ts.get_realtime_quotes(self.code) #self.df=ts.get_today_ticks(self.code) #self.df=ts.get_index() #self.df=ts.get_sina_dd(self.code,date='2014-01-09') self.base.batchwri(self.df, 'shishihangqing', self.financial_data) #历史分笔:获取个股以往交易历史的分笔数据明细,通过分析分笔数据,可以大致判断资金的进出情况。 def get_tick_data(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_tick_data(self.code, date='2018-06-01') self.base.batchwri(self.df, 'lishifenbi', self.financial_data) #实时分笔:获取实时分笔数据,可以实时取得股票当前报价和成交信息 def get_realtime_quotes(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_realtime_quotes(self.code) #ts.get_realtime_quotes(['600848','000980','000981']) 请求多个股票 self.base.batchwri(self.df, 'shishifenbi', self.financial_data) #当日历史分笔:获取当前交易日(交易进行中使用)已经产生的分笔明细数据。 def get_today_ticks(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_today_ticks(self.code) self.base.batchwri(self.df, 'dangrilishifenbi', self.financial_data) #大盘指数行情列表:获取大盘指数实时行情列表,以表格的形式展示大盘指数实时行情。 def get_index(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_index() self.base.batchwri(self.df, 'dapanzhishu', self.financial_data) #大单交易数据:获取大单交易数据,默认为大于等于400手,数据来源于新浪财经。 def get_sina_dd(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_sina_dd(self.code, date='2018-07-25') #默认400手 # self.df = ts.get_sina_dd('600848', date='2015-12-24', vol=500) #指定大于等于500手的数据 self.base.batchwri(self.df, 'dadanjiaoyi', self.financial_data)
class FinanceMacro(object): def __init__(self): super(FinanceMacro, self).__init__() def __call__(self, conns): self.base = Base() self.financial_data = conns['financial_data'] '''存款利率''' deposit_rate = ts.get_deposit_rate() self.base.batchwri(deposit_rate, 'deposit_rate', self.financial_data) '''贷款利率''' loan_rate = ts.get_loan_rate() self.base.batchwri(loan_rate, 'loan_rate', self.financial_data) '''存款准备金率''' rrr = ts.get_rrr() self.base.batchwri(rrr, 'RatioOfDeposit', self.financial_data) '''货币供应量''' money_supply = ts.get_money_supply() self.base.batchwri(money_supply, 'money_supply', self.financial_data) '''货币供应量(年底余额)''' money_supply_bal = ts.get_money_supply_bal() self.base.batchwri(money_supply_bal, 'money_supply_bal', self.financial_data) '''国内生产总值(年度)''' gdp_year = ts.get_gdp_year() self.base.batchwri(gdp_year, 'gdp_year', self.financial_data) '''国内生产总值(季度)''' gdp_quarter = ts.get_gdp_quarter() self.base.batchwri(gdp_quarter, 'gdp_quarter', self.financial_data) '''三大需求对GDP贡献''' gdp_for = ts.get_gdp_for() self.base.batchwri(gdp_for, 'gdp_for', self.financial_data) '''三大产业对GDP拉动''' gdp_pull = ts.get_gdp_pull() self.base.batchwri(gdp_pull, 'gdp_pull', self.financial_data) '''三大产业贡献率''' gdp_contrib = ts.get_gdp_contrib() self.base.batchwri(gdp_contrib, 'gdp_contrib', self.financial_data) '''居民消费价格指数''' cpi = ts.get_cpi() self.base.batchwri(cpi, 'cpi', self.financial_data) '''工业品出场价格指数''' ppi = ts.get_ppi() self.base.batchwri(ppi, 'ppi', self.financial_data)
class GetDataGupiaofenlei(object): def __init__(self): self.code = '002337' self.df = pd.DataFrame() def get_industry_classified(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_industry_classified() self.base.batchwri(self.df, 'industry_classified', self.financial_data) def get_concept_classified(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_concept_classified() self.base.batchwri(self.df, 'concept_classified', self.financial_data) def get_area_classified(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_area_classified() self.base.batchwri(self.df, 'area_classified', self.financial_data) def get_sme_classified(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_sme_classified() self.base.batchwri(self.df, 'sme_classified', self.financial_data) def get_gem_classified(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_gem_classified() self.base.batchwri(self.df, 'gem_classified', self.financial_data) def get_st_classified(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_st_classified() self.base.batchwri(self.df, 'st_classified', self.financial_data) def get_hs300s(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_hs300s() self.base.batchwri(self.df, 'hs300s', self.financial_data) def get_sz50s(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_sz50s() self.base.batchwri(self.df, 'sz50s', self.financial_data) def get_zz500s(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_zz500s() self.base.batchwri(self.df, 'zz500s', self.financial_data) def get_terminated(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_terminated() self.base.batchwri(self.df, 'terminated', self.financial_data) def get_suspended(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_suspended() self.base.batchwri(self.df, 'suspended', self.financial_data)
class GetDataJibenmian(object): def __init__(self): self.code = '002337' self.df = pd.DataFrame() def get_stock_basics(self, conns): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_stock_basics() self.base.batchwri(self.df, 'stock_basics', self.financial_data) def get_report_data(self, conns, year, quarter): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_report_data(year, quarter) self.base.batchwri(self.df, 'report_data', self.financial_data) def get_profit_data(self, conns, year, quarter): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_profit_data(year, quarter) self.base.batchwri(self.df, 'profit_data', self.financial_data) def get_operation_data(self, conns, year, quarter): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_operation_data(year, quarter) self.base.batchwri(self.df, 'operation_data', self.financial_data) def get_growth_data(self, conns, year, quarter): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_growth_data(year, quarter) self.base.batchwri(self.df, 'growth_data', self.financial_data) def get_debtpaying_data(self, conns, year, quarter): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_debtpaying_data(year, quarter) self.base.batchwri(self.df, 'debtpaying_data', self.financial_data) def get_cashflow_data(self, conns, year, quarter): self.base = Base() self.financial_data = conns['financial_data'] self.df = ts.get_cashflow_data(year, quarter) self.base.batchwri(self.df, 'cashflow_data', self.financial_data)