Пример #1
0
    def get_tick_data(self, symbol, date, expire=60 * 24 * 365 * 10):
        """
        获取一支股票一天的tick数据保存到本地
        --------
        symbol: string,股票代码
        date: string,1900-01-01
        """
        if not os.path.exists(CT.TICK_DIR):
            os.makedirs(CT.TICK_DIR)
        if not os.path.exists(CT.TICK_DIR + symbol):
            os.makedirs(CT.TICK_DIR + symbol)

        file_path = CT.TICK_DIR + symbol + '/' + date
        expired = date_time.check_file_expired(file_path, expire)
        if expired:
            d = ts.get_tick_data(symbol, date)
            #过掉当天没数据的
            if len(d) > 10:
                d.to_csv(file_path)
        else:
            d = pd.read_csv(file_path)

        #过掉当天没数据的
        if len(d) > 10:
            return d
        else:
            return ''
Пример #2
0
    def get_tick_data(self, symbol, date, expire=60*24*365*10):
        """
        获取一支股票一天的tick数据保存到本地
        --------
        symbol: string,股票代码
        date: string,1900-01-01
        """
        if not os.path.exists(CT.TICK_DIR):
            os.makedirs(CT.TICK_DIR)
        if not os.path.exists(CT.TICK_DIR +  symbol):
            os.makedirs(CT.TICK_DIR + symbol)

        file_path = CT.TICK_DIR + symbol + '/' + date
        expired = date_time.check_file_expired(file_path, expire)
        if expired or not os.path.exists(file_path):
            d = ts.get_tick_data(symbol, date)
            #过掉当天没数据的
            if d is None or len(d) < 10:
                return None
            d.to_csv(file_path, sep='\t')

        if not os.path.exists(file_path):
            return None

        d = pd.read_csv(file_path, sep='\t', index_col=1)

        #过掉当天没数据的
        if d is None or len(d) < 10:
            return None
        return d
Пример #3
0
    def get_stock_basics(self, expire=60*6):
        """
        获取沪深上市公司基本情况
        :param expire: 本地数据失效时间(分),超过时间更新本地数据,强制更新传0

        @result:
        code,代码
        name,名称
        industry,所属行业
        area,地区
        pe,市盈率
        outstanding,流通股本
        totals,总股本(万)
        totalAssets,总资产(万)
        liquidAssets,流动资产
        fixedAssets,固定资产
        reserved,公积金
        reservedPerShare,每股公积金
        eps,每股收益
        bvps,每股净资
        pb,市净率
        timeToMarket,上市日期
        """
        if not os.path.exists(CT.BASICS_DIR):
            os.makedirs(CT.BASICS_DIR)

        basics_file_path = CT.BASICS_DIR + './basics.csv'

        expired = date_time.check_file_expired(basics_file_path, expire)
        if expired or not os.path.exists(basics_file_path):
            d = ts.get_stock_basics()
            d = d.sort_index()
            #d.to_csv(CT.BASICS_DIR + './basics.csv', sep='\t', index=True)
            d.to_csv(CT.BASICS_DIR + './basics.csv', sep='\t')

            all_stock_symbol = open(CT.BASICS_DIR + './symbols.csv', 'w')
            stock_symbol = []
            for symbol in d['name'].index:
                stock_symbol.append(symbol + '\n')
            all_stock_symbol.writelines(stock_symbol)
            all_stock_symbol.close()
            #return d

        d = pd.read_csv(basics_file_path, sep='\t', index_col=0)
        #d = pd.read_csv(basics_file_path)
        return d
Пример #4
0
    def get_hsgt_his(self, days=30, market_type=1, expire=60 * 6):
        """
        得到沪股通、深股通 历史资金数据
        资金单位百万
        """
        if not os.path.exists(CT.HSGT_DIR):
            os.makedirs(CT.HSGT_DIR)

        file_path = CT.HSGT_DIR + 'hsgt_his_%d_%d' % (days, market_type)
        expired = date_time.check_file_expired(file_path, expire)
        if expired or not os.path.exists(file_path):
            hsgt_his_detail = self._request(self.hsgt_his_api %
                                            (market_type, days))
            hsgt_his_result = json.loads(hsgt_his_detail)
            date = []
            zjlr = []
            jme = []
            mrcje = []
            mccje = []
            for v in hsgt_his_result:
                date.append(v['DetailDate'][:10])
                zjlr.append(v['DRZJLR'])
                jme.append(v['DRCJJME'])
                mrcje.append(v['MRCJE'])
                mccje.append(v['MCCJE'])

            data = {
                'date': date,
                'zjlr': zjlr,
                'jme': jme,
                'mrcje': mrcje,
                'mccje': mccje
            }
            d = pd.DataFrame(data,
                             columns=['date', 'zjlr', 'jme', 'mrcje', 'mccje'])
            d.to_csv(file_path, sep='\t', index=False)

        if not os.path.exists(file_path):
            return None
        d = pd.read_csv(file_path, sep='\t', index_col='date')

        return d
Пример #5
0
 def get_h_data(self, symbol, expire=60):
     """
     获取一支股票所有历史数据保存到本地
     """
     if not os.path.exists(CT.HIS_DIR):
         os.makedirs(CT.HIS_DIR)
     file_path = CT.HIS_DIR + symbol
     expired = date_time.check_file_expired(file_path, expire)
     if expired:
         today = date_time.get_today_str()
         d = ts.get_h_data(symbol,
                           autype=None,
                           start=CT.START,
                           end=today,
                           drop_factor=False)
         d.to_csv(CT.HIS_DIR + symbol)
         return d
     else:
         d = pd.read_csv(file_path)
         return d
Пример #6
0
    def get_h_data(self, symbol, expire=60*6):
        """
        获取一支股票所有历史数据保存到本地
        """
        if not os.path.exists(CT.HIS_DIR):
            os.makedirs(CT.HIS_DIR)
        file_path = CT.HIS_DIR + symbol
        expired = date_time.check_file_expired(file_path, expire)
        if expired or not os.path.exists(file_path):
            today = date_time.get_today_str()
            d = ts.get_h_data(symbol, autype=None, start=CT.START, end=today, drop_factor=False)
            #index = []
            #for i in list(d.index):
            #    index.append(date_time.date_to_str(i))
            #d = d.reindex(index, method='ffill')
            if d is None:
                return d
            d.to_csv(CT.HIS_DIR + symbol, sep='\t')
            #return d

        if not os.path.exists(file_path):
            return None
        d = pd.read_csv(file_path, sep='\t', index_col=0)
        return d
Пример #7
0
    def get_hsgt_top(self, date_str, expire=60 * 24 * 30):
        """
        得到沪股通、深股通 十大成交股
        """
        if not os.path.exists(CT.HSGT_DIR):
            os.makedirs(CT.HSGT_DIR)

        file_path = CT.HSGT_DIR + date_str
        expired = date_time.check_file_expired(file_path, expire)
        if expired or not os.path.exists(file_path):
            hgt_top_detail = self._request(self.hsgt_top_api %
                                           ('HGT', date_str, 1))
            hgt_grep_result = self.hsgt_top_format.finditer(hgt_top_detail)
            hgt_top_result = []
            for stock_match_object in hgt_grep_result:
                groups = stock_match_object.groups()
                hgt_top_result = json.loads(groups[0])

            sgt_top_result = []
            sgt_top_detail = self._request(self.hsgt_top_api %
                                           ('SGT', date_str, 3))
            sgt_grep_result = self.hsgt_top_format.finditer(sgt_top_detail)
            for stock_match_object in sgt_grep_result:
                groups = stock_match_object.groups()
                sgt_top_result = json.loads(groups[0])

            code = []
            name = []
            change = []
            jme = []
            mrje = []
            mcje = []
            cjje = []
            ratio = []
            market = []

            if hgt_top_result:
                for v in hgt_top_result:
                    code.append(v['Code'])
                    name.append(v['Name'].encode('utf-8'))
                    change.append(v['ChangePercent'])
                    if v['HGTJME'] == '-':
                        v['HGTJME'] = 0
                    if v['HGTMRJE'] == '-':
                        v['HGTMRJE'] = 0
                    if v['HGTMCJE'] == '-':
                        v['HGTMCJE'] = 0
                    if v['HGTCJJE'] == '-':
                        v['HGTCJJE'] = 0.1 / (2 ^ 64 - 1)
                    jme.append(v['HGTJME'])
                    mrje.append(v['HGTMRJE'])
                    mcje.append(v['HGTMCJE'])
                    cjje.append(v['HGTCJJE'])
                    ratio.append(v['HGTMRJE'] / v['HGTCJJE'])
                    market.append(1)

            if sgt_top_result:
                for v in sgt_top_result:
                    code.append(v['Code'])
                    name.append(v['Name'].encode('utf-8'))
                    change.append(v['ChangePercent'])
                    jme.append(v['SGTJME'])
                    mrje.append(v['SGTMRJE'])
                    mcje.append(v['SGTMCJE'])
                    cjje.append(v['SGTCJJE'])
                    ratio.append(v['SGTMRJE'] / v['SGTCJJE'])
                    market.append(3)

            data = {
                'code': code,
                'name': name,
                'change': change,
                'jme': jme,
                'mrje': mrje,
                'mcje': mcje,
                'cjje': cjje,
                'ratio': ratio,
                'market': market
            }
            #d = pd.DataFrame(data, index=code, columns=['name', 'jme', 'mrje', 'mcje', 'cjje', 'market'])
            d = pd.DataFrame(data,
                             columns=[
                                 'code', 'name', 'change', 'jme', 'mrje',
                                 'mcje', 'cjje', 'ratio', 'market'
                             ])

            #d.to_csv(file_path, sep='\t')
            d.to_csv(file_path, sep='\t', index=False)

        if not os.path.exists(file_path):
            return pd.DataFrame()
        #d = pd.read_csv(file_path, sep='\t', index_col=0)
        d = pd.read_csv(file_path, sep='\t', index_col='code')
        code = []
        for c in d.index:
            code.append("{:0>6d}".format(c))
        name = list(d['name'])
        change = list(d['change'])
        jme = list(d['jme'])
        mrje = list(d['mrje'])
        mcje = list(d['mcje'])
        cjje = list(d['cjje'])
        ratio = list(d['ratio'])
        market = list(d['market'])
        data = {
            'code': code,
            'name': name,
            'change': change,
            'jme': jme,
            'mrje': mrje,
            'mcje': mcje,
            'cjje': cjje,
            'ratio': ratio,
            'market': market
        }
        d = pd.DataFrame(data,
                         index=code,
                         columns=[
                             'code', 'name', 'change', 'jme', 'mrje', 'mcje',
                             'cjje', 'ratio', 'market'
                         ])

        return d