Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)
Beispiel #6
0
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)
Beispiel #8
0
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)
Beispiel #9
0
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)
Beispiel #12
0
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)
Beispiel #13
0
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)