def filter_stock_by_average_pe(min, max):
    path=os.path.join(current_folder,'3年平均利润.csv')
    if not os.path.exists(path): #没有就生成3年平均利润列表
        calcu_all_stocks_3year_average_profit(calcu_average_profit_end_year)

    gplb=pd.read_csv(path,encoding = "gbk",index_col=0)

    now=datetime.now()
    today=str(now)[:11]
    current_sec=str(now)[:18].replace('-','_').replace(':','_')
    price_path=os.path.join(current_folder,today+'股票价格.csv')
    if not os.path.exists(price_path):
        ts.get_today_all().set_index('code').to_csv(price_path)

    current_price=pd.read_csv(price_path,encoding = "gbk",index_col=0)
    current_price= current_price[['trade']]
    current_price.columns=['价格']
    gplb=gplb[['名字','行业','地区','流通股本','总股本(万)','总资产(万)','流动资产','固定资产','每股净资','市净率','上市日期','平均利润']]
    data=pd.merge(gplb,current_price,left_index=True, right_index=True)
    data['平均市盈率']=data['总股本(万)']*data['价格']/data['平均利润']
    data = data[data['平均市盈率'] < max]
    data = data[data['平均市盈率'] > min]
    data['平均市盈率']=data['平均市盈率'].round()
    data['平均利润']=data['平均利润'].round()
    data['市净率']=data['市净率'].round(1)
    data['固定资产']=data['固定资产'].round()
    data['流动资产']=data['流动资产'].round()
    data['总股本(万)']=data['总股本(万)'].round()
    data['流通股本']=data['流通股本'].round()
    average_pe_file = os.path.join(current_folder, today + '3年平均市盈率在%s和%s之间的公司.xlsx' % (min, max))
    data.to_excel(average_pe_file)
コード例 #2
0
ファイル: aStockFilter.py プロジェクト: allisnone/pytrade
def today_df_filter0(today_df):
    #"""
    today_df = ts.get_today_all()
    today_df = today_df[today_df.amount>0]
    today_df_high_open = today_df[today_df.open>today_df.settlement*1.005]
    all_trade_code = today_df['code'].values.tolist()
    all_a_code = ps.get_all_code(hist_dir="C:/中国银河证券海王星/T0002/export/")
    all_stop_code = list(set(all_a_code).difference(set(all_trade_code)))
    print('\n')
    print('all_stop_code=%s' % all_stop_code)
    print(len(all_stop_code))
    high_open_code_str = today_df_high_open['code'].values.tolist()
    print('all_trade_code = %s'%all_trade_code)
    print(len(all_trade_code))
    print('today_df_high_open = %s'%high_open_code_str)
    today_df['star'] = ((today_df['trade']-today_df['open'])/(today_df['high']-today_df['low'])).round(3)
    today_df['star_h'] = np.where(today_df['star']>=0, ((today_df['high']-today_df['trade'])/(today_df['high']-today_df['low'])).round(3),
                                  ((today_df['high']-today_df['open'])/(today_df['high']-today_df['low'])).round(3))
    today_df['atr'] = np.where((today_df['high']-today_df['low'])<(today_df['high']-today_df['settlement']),
                                today_df['high']-today_df['settlement'],today_df['high']-today_df['low']) #temp_df['close'].shift(1)-temp_df['low'])
    today_df['atr'] = np.where(today_df['atr']<(today_df['settlement']-today_df['low']),
                             (today_df['settlement']-today_df['low']),today_df['atr'])
    today_df['atr_r'] = ((today_df['atr']/today_df['settlement']).round(3))*100.0
    today_df['star_chg'] = today_df['star'] * today_df['changepercent']
    #del today_df['atr']
    describe_df = today_df.describe().round(3)
    #print(type(describe_df))
    lt_describe = describe_df.loc['25%']#.iloc[3].values
    mean_chg = describe_df.loc['mean','changepercent']
    most_chg = describe_df.loc['75%','changepercent']
    least_chg = describe_df.loc['25%','changepercent']
    most_atr_r = describe_df.loc['75%','atr_r']
    least_atr_r = describe_df.loc['25%','atr_r']
    print(mean_chg,most_chg,least_chg,most_atr_r,least_atr_r)
    print(describe_df)
    great_rate = 2.0
    gt_today_df = today_df[today_df.changepercent> great_rate]
    great_atd_df = today_df[today_df['atr_r']>11]
    stock_basic_df=ts.get_stock_basics()
    #stock_basic_df['outstanding'] = stock_basic_df['outstanding'] * 0.0001
    #stock_basic_df['totals'] = stock_basic_df['totals'] * 0.0001
    lt_outstanding_df = stock_basic_df[stock_basic_df.outstanding<100000] #流通股本小于10亿
    print(lt_outstanding_df)
    
    today_df['real'] = 0.00000001 *today_df['amount']/today_df['turnoverratio']
    min_atr_df = today_df[today_df.real<10.0]
    min_atr_df = min_atr_df[min_atr_df.atr_r<least_atr_r]
    lt_outstanding_df_list = lt_outstanding_df.index.values.tolist()
    print(lt_outstanding_df_list)
    min_atr_df = min_atr_df.set_index('code')
    min_atr_df_list = min_atr_df.index.values.tolist()
    print(min_atr_df_list)
    inter_list = list(set(min_atr_df_list).intersection(set(lt_outstanding_df_list)))
    print(len(inter_list))
    filter_df = min_atr_df[min_atr_df.index.isin(inter_list)]
    #print(filter_df)
    #print(type(filter_df))
    min_atr_df = filter_df.sort_values(axis=0, by='atr_r', ascending=True)
    min_atr_df = filter_df.sort_values(axis=0, by='star', ascending=False)
    print(min_atr_df)
コード例 #3
0
ファイル: select_stock.py プロジェクト: Rockyzsu/stock
def get_break_bvps():
    base_info = ts.get_stock_basics()
    current_prices = ts.get_today_all()


    current_prices[current_prices['code'] == '000625']['trade'].values[0]
    base_info.loc['000625']['bvps']
コード例 #4
0
ファイル: collect_data.py プロジェクト: Rockyzsu/stock
 def daily_market():
     df = ts.get_today_all()
     try:
         df.to_sql(SaveData.today,SaveData.daily_engine,if_exists='replace')
     except Exception as e:
         logger.info(e)
     logger.info("Save {} data to MySQL".format(SaveData.today))
コード例 #5
0
ファイル: main.py プロジェクト: saiksy/stock-1
def get_stock_price(code, include_realtime_price):
    """
    获取个股股价
    :param code: 股票代码
    :param include_realtime_price: 是否含实时股价
    :return:
    """

    # 获取历史股价
    df = ts.get_hist_data(code)
    df = df[['close']]
    df['date'] = df.index

    if include_realtime_price:
        df_today = ts.get_today_all()
        df_code = df_today[df_today['code']==code]
        df_code = df_code[['trade']]
        df_code['date'] = GetNowDate()
        df_code.rename(columns={'trade': 'close'}, inplace=True)
        df = pd.concat([df, df_code], ignore_index=True)

    df.sort(columns='date', inplace=True)
    df = df.drop_duplicates(['date'])
    df.index = range(len(df))
    print '\n'
    # print df.head()
    print df.tail()
    return df
コード例 #6
0
ファイル: dHydra.py プロジェクト: cliff007/dHydra
	def fetch_classification(self):
		# 数据来源自新浪财经的行业分类/概念分类/地域分类
		print( "Trying: get_today_all" )
		today_all = ts.get_today_all() #一次性获取今日全部股价
		set_today_all = set(today_all.T.values[0])

		print( "Trying: get_industry_classified" )
		industry_classified = ts.get_industry_classified()
		set_industry_classified = set(industry_classified.T.values[0])

		print( "Trying: get_area_classified" )
		area_classified = ts.get_area_classified()
		set_area_classified = set(area_classified.T.values[0])

		print( "Trying: get_concept_classified" )
		concept_classified = ts.get_concept_classified()
		set_concept_classified = set(concept_classified.T.values[0])

		print( "Trying: get_sme_classified" )
		sme_classified = ts.get_sme_classified()
		set_sme_classified = set(sme_classified.T.values[0])

		return [
					today_all
				,	set_today_all
				,	industry_classified
				,	set_industry_classified
				,	area_classified
				,	set_area_classified
				,	concept_classified
				,	set_concept_classified
				,	sme_classified
				,	set_sme_classified
				]
コード例 #7
0
    def GetAllTodayData(self):
        #存储每天 涨幅排行  榜,避免每次读取耗时过长
        filename=self.today+'_all_.xls'
        #放在data文件夹下
        filename=os.path.join(self.path,filename)
        if not os.path.exists(filename):
            re_try=5
            while re_try>0:
                try:
                    self.df_today_all=ts.get_today_all()
                #过滤停牌的
                # self.df_today_all.drop(self.df_today_all[self.df_today_all['turnoverratio']==0].index,inplace=True)
                #实测可用,删除的方法
                #n1=self.df_today_all[self.df_today_all['turnoverratio']==0]
                #n2=self.df_today_all.drop(n1.index)
                #print n2
                # print self.df_today_all
                    break
                except Exception,e:
                    re_try=re_try-1
                    time.sleep(5)
            if len(self.df_today_all)!=0:

                self.df_today_all.to_excel(filename,sheet_name='All')
            else:
                self.df_today_all=None
コード例 #8
0
ファイル: CalSomeDiff.py プロジェクト: gentlekai/Economy
def FindGoodStock():
    pdReportToday = ts.get_today_all()
#     print(type(pdReportToday), pdReportToday)

    for index,row in pdReportToday.iterrows():
        delta = row["open"] - row["trade"]
        stockId = row["code"]
#         print(stockId, "--------------", delta)
        try:
            try:
                retVal = PrintOpenLow([stockId])
                if retVal == None:
                    print("Network data 1")
                    retVal = CheckLowDiffByTushare( stockId )
            except:
                print("Network data 2")
                retVal = CheckLowDiffByTushare( stockId )
                
            if delta > retVal[0]:
                print(stockId, "delta:", delta, "now:", row["trade"], retVal)
                if delta > retVal[0] +  0.5*retVal[1]:
                    print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
                elif delta > retVal[0] +  retVal[1]:
                    print("--------------------------------------------------------------------------------------------------")
#                 CheckLowDiffByTushare( stockId, bShow = False)
        except:
            print(stockId, "Exception")            
コード例 #9
0
ファイル: utils.py プロジェクト: aslucky/StockHelper
def get_day_list():
    print "tushare version:" + ts.__version__
    '''
    获取当天的涨幅排行榜
    code
    name
    changepercent 涨跌幅
    trade:现价
    open:
    high:
    low:
    settlement:昨日收盘价
    volume:
    turnoverratio:
    '''
    all_data = ts.get_today_all()
    if all_data is None:
        print 'None data fetched'
        return

    trade_date = datetime.datetime.today()
    if int(trade_date.strftime("%w")) == 0:
        # sunday
        trade_date = trade_date + datetime.timedelta(days=-2)
    elif int(trade_date.strftime("%w")) == 6:
        # saturday
        trade_date = trade_date + datetime.timedelta(days=-1)

    all_data_file_name = "allData" + trade_date.strftime("%Y-%m-%d") + ".csv"
    output_all_data_file_dir = "e:/data/" + all_data_file_name
    all_data.to_csv(output_all_data_file_dir, encoding='gbk')
    # output_all_data_file_dir = "e:/data/" + all_data_file_name
    # up_data = pd.read_csv(output_all_data_file_dir, encoding='gbk', index_col=0, dtype={'code': str})
    print all_data['code']
コード例 #10
0
    def get_url_data_(self):

        # 从 tushare.org 获取股票市场的代码列表
        code_list_ = pandas.DataFrame((tushare.get_today_all())['code'])

        # 排序
        code_list_ = code_list_.sort(columns='code', ascending=True)

        # 增加一自然数列做为 index
        code_list_['index'] = pandas.DataFrame([i for i in range(0, len(code_list_))], code_list_.index)
        code_list_.reindex(index=code_list_['code'])

        # 写库
        code_list_.to_sql('code_list_', self.engine_, if_exists='replace', index=True, index_label='index')

        # 把 index 设为主键
        self.engine_.connect().execute('alter table testdb.code_list_ add primary key(`index`)')

        # 根据上面股票列表逐个获取个股数据
        for i in range(0, len(code_list_)):
            # 取的是已经复权的数据
            stock_data_ = tushare.get_h_data(code_list_['code'][i])

            # 因为获取的数据以 date 为 index,但是写库时不能把 date 当 index 写入,所以复制该列
            stock_data_['date'] = pandas.Series(stock_data_.index, stock_data_.index)
            stock_data_ = stock_data_.sort_values(by='date', ascending=True)
            stock_data_['index'] = pandas.DataFrame([i for i in range(0, len(stock_data_))], stock_data_.index)
            stock_data_.to_sql(code_list_['code'][i], self.engine_, if_exists='replace', index=True,
                               index_label='index')
            self.engine_.connect().execute('alter table testdb.' + code_list_['code'][i] + ' add primary key(`index`)')
コード例 #11
0
ファイル: stock_data.py プロジェクト: firekay/note
    def real_time_data_all_stock(self):
        now_str = sutils.get_datetime_str()
        now_data = ts.get_today_all()
        now_data_len = len(now_data)
        logger.debug('The length of real time data is: %d' % now_data_len)

        now_data['time'] = pd.Series(np.array([now_str] * now_data_len))
        mutils.to_sql(now_data, table='real_time_data', engine)
コード例 #12
0
def save_excel():
    df = ts.get_today_all()
    df.to_excel('1.xls', sheet_name='all_stock')
    df2 = ts.get_hist_data('300333')
    df2.to_excel('1.xls', sheet_name='basic_info')
    df.ExcelWriter
    out = pd.ExcelWriter("2.xls")
    df.to_excel()
コード例 #13
0
def gsz():
    hq = ts.get_today_all()
    hq['trade'] = hq.apply(lambda x: x.settlement if x.trade == 0 else x.trade, axis=1)
    basedata = stock_info[['outstanding', 'totals', 'reservedPerShare', 'esp']]
    hqdata = hq[['code', 'name', 'trade', 'mktcap', 'nmc']]
    hqdata = hqdata.set_index('code')
    data = basedata.merge(hqdata, left_index=True, right_index=True)
    print(data.head(10))
コード例 #14
0
def get_day_all():
    try:
        #print('Get Day All...')
        df = ts.get_today_all()
    except:
        print('ts.get_today_all failed.')
        sys.exit(1)
    return(df)
コード例 #15
0
def get_all_top():
    gold = {}
    goldl = []
    df = ts.get_today_all()
    top = df[df['changepercent'] > 6]
    print "top:", len(top['code'])
    for code in top['code']:
        ave=sl.get_today_tick_ave(code)
コード例 #16
0
def get_profit_report():
    df = ts.profit_data(top=4000)

    df = df.sort_values('divi', ascending=False)

    #获取最新股价
    df_quots = ts.get_today_all()

    df_quots['roe'] = df_quots['pb'] * 100 / df_quots['per']
    #df_basic['peg'] = df_basic['pe']/df_basic['profit']
    df_quots['close'] = map(swap_value, df_quots['trade'],
                            df_quots['settlement'])

    df_quots.reset_index(inplace=True)
    df_quots = df_quots.drop([
        'index', 'name', 'changepercent', 'trade', 'open', 'high', 'low',
        'settlement', 'volume', 'turnoverratio', 'amount', 'nmc'
    ],
                             axis=1)

    df = pd.merge(df, df_quots, how='left', on=key)

    df['rate'] = df['divi'] / 10 * 100 / df['close']

    df['valueprice'] = df['roe'] * (df['close'] / df['pb']) / 15

    df = df.sort_values('rate', ascending=False)

    #df['value'] = df['esp']/0.08

    #df['rate'] = (df['value']-df['close'])*100/df['close']

    df = df[df['per'] > 0]

    df = df.sort_values('report_date', ascending=False)

    df = df.drop_duplicates(['name'])

    # 按现金股息率排行
    df = df.sort_values('rate', ascending=False)
    export_report(df, title="stock_dividence")

    # 按roe排行
    df = df.sort_values('roe', ascending=False)
    export_report(df, title="stock_roe")

    # 按市盈率
    df = df.sort_values('per', ascending=True)
    export_report(df, title="stock_pe")

    # 按市净率
    df = df.sort_values('pb', ascending=True)
    export_report(df, title="stock_pb")

    # 不排序
    df = df.sort_values('mktcap', ascending=True)
    export_report(df, title="stock_value")
コード例 #17
0
def get_all_trading_codes():
    '''
        获取A股市场全部的交易代码和交易名称 
    '''
    all_data = ts.get_today_all()
    current_dir = os.path.dirname(__file__)
    ab_path = os.path.join( current_dir, "..\\", "..\\" )
    meta_data_path =os.path.abspath( ab_path ) + "\\meta_data\\"
    all_data[['code', 'name']].to_csv(meta_data_path+"meta_codes.csv", encoding='utf-8', index=False)
コード例 #18
0
ファイル: myBackTest.py プロジェクト: allisnone/pytrade
def get_stop_trade_symbol():
    today_df = ts.get_today_all()
    today_df = today_df[today_df.amount>0]
    today_df_high_open = today_df[today_df.open>today_df.settlement*1.005]
    all_trade_code = today_df['code'].values.tolist()
    all_a_code = pds.get_all_code(hist_dir="C:/中国银河证券海王星/T0002/export/")
    #all_a_code = pds.get_all_code(hist_dir="C:/hist/day/data/")
    all_stop_codes = list(set(all_a_code).difference(set(all_trade_code)))
    return all_stop_codes
コード例 #19
0
def process_stock_exchange_rate():
    # 代码,名称,涨跌幅,现价,开盘价,最高价,最低价,最日收盘价,成交量,换手率,成交额,市盈率,市净率,总市值,流通市值
    # code   name  changepercent   trade    open    high     low  settlement       volume  turnoverratio        amount      per       pb  mktcap  nmc
    while True:
        basic = ts.get_today_all()
        push = basic[(basic.turnoverratio > 0.3) & (basic.changepercent < 0.0)]
        print(push.code)
        break
        time.sleep(60)
コード例 #20
0
def update_stocks_data(state, all_stocks):
    if not state:
        try:
            all_stocks = ts.get_today_all()
            state = True
        except Exception, e:
            print e
            all_stocks = None
            state = False
コード例 #21
0
def get_all_toplist():
    # gold = {}
    # goldl = []
    df = ts.get_today_all()
    top = df[df['changepercent'] > 6]
    top = top[top['changepercent'] < 10]
    list = top.index
    print len(list)
    return list
コード例 #22
0
 def daily_market():
     df = ts.get_today_all()
     try:
         df.to_sql(SaveData.today,
                   SaveData.daily_engine,
                   if_exists='replace')
     except Exception as e:
         logger.info(e)
     logger.info("Save {} data to MySQL".format(SaveData.today))
コード例 #23
0
def GetCurrentData():
    CurrentData = ts.get_today_all()
    if CurrentData.index.name != 'code' and CurrentData.columns.contains('code'):
        CurrentData.set_index(['code'], inplace=True)
    else:
         return False
    if CurrentData.columns.contains('trade'):
        CurrentData.rename(columns={'trade': 'close'}, inplace=True)
    return CurrentData
コード例 #24
0
def gsz():
    hq = ts.get_today_all()
    hq['trade'] = hq.apply(lambda x: x.settlement if x.trade == 0 else x.trade,
                           axis=1)
    basedata = stock_info[['outstanding', 'totals', 'reservedPerShare', 'esp']]
    hqdata = hq[['code', 'name', 'trade', 'mktcap', 'nmc']]
    hqdata = hqdata.set_index('code')
    data = basedata.merge(hqdata, left_index=True, right_index=True)
    print(data.head(10))
コード例 #25
0
def getOutStandingStock():
    df_stk = ts.get_stock_basics().reset_index()

    df_trans = ts.get_today_all()
    df_result = pd.merge(df_stk,df_trans,on = 'code')
    df_result = df_result.loc[:,['code','name_x','industry','outstanding','trade']]
    df_result['outstanding_amt'] =  df_result['outstanding'] * df_result['trade'] * 10000    
    df_result = df_result[df_result.outstanding_amt < 5000000000]
    return df_result
コード例 #26
0
    def download_stock_D1(self):
        """
        下载日线数据
        """
        #print('downloading the stock daily info...')
        stock_basics = ts.get_today_all()
        stock_list = sorted(list(stock_basics.code.values))
        total = 0
        file_path = self.working_folder
        for stock in stock_list:
            filename = stock + '.csv'
            stock_data = pd.DataFrame([])
            try:
                stock_data = pd.read_csv(file_path + filename)
                stock_data.sort_values(by='date',
                                       ascending=False,
                                       inplace=True)
                start_date = stock_data.head(1).iloc[0, 0]
                end_date = strftime("%Y-%m-%d", localtime())
                try:
                    stock_data_latest = ts.get_k_data(stock,
                                                      autype=None,
                                                      start=start_date,
                                                      end=end_date)
                    stock_data = stock_data.append(stock_data_latest)
                except:
                    pass
            except:
                year = 1990
                while year <= self.today_year:
                    start_date = str(year) + '-01-01'
                    end_date = str(year) + '-12-31'
                    try:
                        stock_data_latest = ts.get_k_data(stock,
                                                          autype=None,
                                                          start=start_date,
                                                          end=end_date)
                        stock_data = stock_data.append(stock_data_latest)
                    except:
                        pass
                    year = year + 1
            if len(stock_data) > 0:
                stock_data.drop_duplicates(subset=['date'],
                                           keep='first',
                                           inplace=True)
                stock_data.sort_values(by='date',
                                       ascending=False,
                                       inplace=True)
                stock_data.set_index(keys=['date'],
                                     drop=True,
                                     inplace=True,
                                     append=False)
                stock_data.to_csv(file_path + filename)

        #print('download_stock_D1 successful ' + str(total))
        return
コード例 #27
0
ファイル: ZJ.py プロジェクト: 393928715/lzgStrategy
    def zqAmoMin(self, stime, etime):

        #        amosql="select * from stocksystem.bigcashflow where datetime>='"+stime+ "'and datetime <='"+etime+"'"
        #        print amosql
        #        amodata=pd.read_sql(amosql,con=self.engine)
        #
        #        print '资金流数据读取完成'
        #
        #        s2=pd.DataFrame()
        #        sindex=['vbigB','vbigS','lbigB','lbigS']
        #        tmpgroup=amodata.groupby('hq_code')
        #        for code,tmpdata in tmpgroup:
        #            tmpdata=tmpdata.groupby('type').agg({'amo':'sum','amoper':'sum'})
        #            tmpdata=tmpdata.reindex(sindex)
        #            tmpdata=tmpdata.unstack().unstack()
        #            tmpdata['hq_code']=code
        #            s2=s2.append(tmpdata)
        #
        #        s2.fillna(0,inplace=True)
        #        s2['bigD']=s2['vbigB']+s2['lbigB']-s2['vbigS']-s2['lbigS']
        #        amodata=s2.loc['amo']
        #        amoperdata=s2.loc['amoper']
        #        amodata.set_index('hq_code',inplace=True)
        #        amoperdata.set_index('hq_code',inplace=True)
        #        amodata['bigper']=amoperdata['bigD']
        #        amodata.sort_values('bigper',inplace=True,ascending=False)

        amosql = "select hq_code,amo from stocksystem.bigcashflow where datetime>='" + stime + "'and datetime <='" + etime + "'"
        print amosql
        amodata = pd.read_sql(amosql, con=self.engine, index_col='hq_code')

        amonet = amodata.groupby(level=0).sum()

        amodata['amo'] = np.abs(amodata['amo'])
        amodata = amodata.groupby(level=0).sum()

        stockdata = ts.get_today_all()
        stockdata['code'] = stockdata['code'].astype(int)
        stockdata.set_index('code', inplace=True)

        #得到流通股本
        amodata['nmc'] = stockdata['nmc']
        amodata['amoper'] = amodata['amo'] / np.abs(amodata['amo']).sum()
        amodata['nmcper'] = stockdata['nmc'] / (stockdata['nmc'].sum())
        amodata['amopower'] = amodata['amoper'] / amodata['nmcper']
        amodata = amodata.sort_values('amopower', ascending=False)

        amonet['nmc'] = stockdata['nmc']
        amonet['amoper'] = amonet['amo'] / np.abs(amonet['amo']).sum()
        amonet['nmcper'] = stockdata['nmc'] / (stockdata['nmc'].sum())
        amonet['amopower'] = amonet['amoper'] / amonet['nmcper']
        amonet = amonet.sort_values('amopower', ascending=False)

        return amodata.loc[:, [
            'amo', 'amoper', 'amopower', 'nmcper'
        ]], amonet.loc[:, ['amo', 'amoper', 'amopower', 'nmcper']]
コード例 #28
0
 def __init__(self):
     self.today_stock=ts.get_today_all()
     now=datetime.datetime.now()
     self.today=now.strftime("%Y-%m-%d")
     #weekday=now+datetime.timedelta(days=-2)
     #weekday=weekday.strftime("%Y-%m-%d")
     #print weekday
     #today=now.strftime('%Y-%m-%d')
     self.path=os.path.join(os.getcwd(),'data')
     self.filename=os.path.join(self.path,'recordMyChoice.xls')
コード例 #29
0
ファイル: util.py プロジェクト: frankyzhou/easytrader
def update_stocks_data(state, all_stocks):
    if not state:
        try:
            print datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            all_stocks = ts.get_today_all()
            state = True
        except Exception, e:
            print e
            all_stocks = None
            state = False
コード例 #30
0
 def gettodaymarket(self, re_try=5):
     while re_try > 0:
         try:
             df = ts.get_today_all()
             if len(df) != 0:
                 return df
         except Exception, e:
             print e
             re_try = re_try - 1
             time.sleep(self.TIMEOUT)
コード例 #31
0
ファイル: dataProvider.py プロジェクト: aslucky/StockHelper
 def get_day_rise(self):
     if not os.path.isfile(self.appPath + '/' + self.lastTradeDate + '_Datas.csv'):
         try:
             codeList = ts.get_today_all()
         except Exception:
             return []
         codeList.to_csv(self.appPath + '/' + self.lastTradeDate + '_Datas.csv', encoding='utf8')
     else:
         codeList = pd.read_csv(self.appPath + '/' + self.lastTradeDate + '_Datas.csv', encoding='utf8',dtype={'code': str})
     return codeList
コード例 #32
0
def download__today_alldata():
    ALL_datas=ts.get_today_all()# 读取去当天数据
    files_path= '../report/Daily_database'
    if os.path.exists(files_path) == False: # 判断文件是不是存在
        os.mkdir(files_path)                # 创建目录
    ALL_datas.to_csv('../report/Daily_database/%s_full_stock_csv.csv'%todaytime,encoding='gbk') #存储到CSV
    #存储到xlsx文件中
    with pd.ExcelWriter('../report/Daily_database/%s_full_stock_xlx.xlsx'%todaytime) as writer:
        ALL_datas.to_excel(writer, sheet_name='Sheet1')
    print('today data base to save %s_database.csv'%todaytime)
コード例 #33
0
def update_today_all():
    '''
    [更新当日实时数据]######
    函数说明 乔晖 2018/4/23
    一次性获取当前交易所有股票的行情数据(如果是节假日,即为上一交易日,结果显示速度取决于网速)
    【行情不含基金和ETF】
    结果保存在/data/today_all.csv
    '''
    df = ts.get_today_all()
    df.to_csv('.\\data\\today_all.csv')
コード例 #34
0
def get_today_and_putto_database(dbname):
    tl = time.localtime()
    if (tl.tm_hour < 15) and (tl.tm_hour > 8):
        print("\ Now trading time , Do not update by This method")
        return 0

    df = ts.get_today_all()
    neardate = get_shangHaiIndexAndReturnNearestTradeDate()
    result = convertTodaydfTorows(df, neardate)
    testsqlite(dbname, result, 0)
コード例 #35
0
def downloadToday():
    df = ts.get_today_all()
    df.to_csv('today.csv', sep=',', encoding='utf-8')
    code_list = df['code']
    name_list = df['name']
    name_dict = {}
    for i in range(len(code_list)):
        name_dict[code_list[i]] = name_list[i]
    save_dict(name_dict, 'name_dict')
    pass
コード例 #36
0
    def build_db(self):
        import tushare as ts
        df = ts.get_today_all()
        rows, cols = df.shape
        self.names = dict()
        for i in range(rows):
            self.names[df.ix[i, 'code']] = df.ix[i, 'name']

        with open('names.json', 'w') as f:
            json.dump(self.names, f)
コード例 #37
0
ファイル: stocknames.py プロジェクト: rmqlife/stock
	def build_db(self):
		import tushare as ts
		df = ts.get_today_all()
		rows, cols = df.shape
		self.names = dict()
		for i in range(rows):
			self.names[df.ix[i,'code']] = df.ix[i,'name']
	
		with open('names.json', 'w') as f:
			json.dump(self.names, f)
コード例 #38
0
def stock_info_html():

    data = ts.get_today_all()

    title = data.columns.values.tolist()
    re_array = data[[
        'code', 'name', 'changepercent', 'trade', 'open', 'high', 'low',
        'settlement', 'volume', 'turnoverratio'
    ]]
    data_li = list(row.tolist() for index, row in re_array.iterrows())
コード例 #39
0
ファイル: util.py プロジェクト: frankyzhou/easytrader
def update_stocks_data(state, all_stocks):
    if not state:
        try:
            print datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            all_stocks = ts.get_today_all()
            state = True
        except Exception, e:
            print e
            all_stocks = None
            state = False
コード例 #40
0
def get_all_toplist():
    # gold = {}
    # goldl = []
    df = ts.get_today_all()
    top = df[df['changepercent'] > 6]
    top = top[top['changepercent'] < 10]
    # logging.info("top:", len(top['code']))
    list = top['code']
    print len(list)
    return list
コード例 #41
0
 def __init__(self):
     self.today_stock = ts.get_today_all()
     now = datetime.datetime.now()
     self.today = now.strftime("%Y-%m-%d")
     #weekday=now+datetime.timedelta(days=-2)
     #weekday=weekday.strftime("%Y-%m-%d")
     #print weekday
     #today=now.strftime('%Y-%m-%d')
     self.path = os.path.join(os.getcwd(), 'data')
     self.filename = os.path.join(self.path, 'recordMyChoice.xls')
コード例 #42
0
def getCode():
    try:
        print('开始获取股票代码!!!')
        #获取今日数据
        pp = ts.get_today_all()
        #获取所有的股票代码
        codeList = np.array(pp.code).tolist()
        return codeList
    except Exception as err:
        print(err)
コード例 #43
0
    def __init__(self, init=True):
        """
        初始化,筛除688,300,ST,退市股,新股,低价股,下跌股
        """
        if init:
            self.data = ts.get_today_all()  #今日复盘
            self.updateNMC(self.data)
            # data = ts.get_day_all(date='2021-02-18')   #历史复盘
            filt = self.data['code'].str.contains('^(?!688|605|300|301|8|43)')
            self.data = self.data[filt]
            filt = self.data['name'].str.contains('^(?!S|退市|\*ST|N)')
            self.data = self.data[filt]
            self.data = self.data.drop_duplicates()
            data = self.data[self.data['trade'] >= 2]
            data = data[data['changepercent'] > -3]
            data = data.to_json(orient='records')
            db.get_collection('today').remove()
            base = db.get_collection('base').find()
            industry = {i['code']: i['industry'] for i in base}
            self.intersect = {}
            for i in eval(data):
                db.get_collection('today').insert(i)
            res = db.get_collection('today').find()
            for i in res:
                try:
                    db.get_collection('today').update_many(
                        {'code': i['code']},
                        {'$set': {
                            'industry': industry[i['code']]
                        }})
                except:
                    pass

            # 剔除新股
            try:
                newStock = ts.new_stocks()
                if not newStock.empty:
                    newStock = newStock[newStock.ipo_date > '2020-01-01']
                    for i in newStock['code'].tolist():
                        db.get_collection('today').remove({'code': i},
                                                          multi=True)
            except Exception as e:
                print('newStock Error', e)

            # 剔除停牌
            db.get_collection('today').remove({'open': 0})

            # 龙虎榜
            if not (10 < time.localtime().tm_hour < 18):
                db.get_collection('topList').remove()
                longhu = ts.top_list()
                longhu = longhu.to_json(orient='index', )
                longhu = json.loads(longhu)
                for k, v in longhu.items():
                    db.get_collection('topList').insert(v)
コード例 #44
0
def stoplossNotification(bot):
    '''
    消息推送:持仓股票提醒
    :return: null
    '''
    print(strftime("%Y-%m-%d %H:%M:%S", localtime()) + ' - Start stoplossNotification thread ')
    #generic variables initialization
    working_folder = '/Users/yanghui/Documents/'
    
    while True:
        now = strftime("%H:%M", localtime())
        today_ISO = datetime.today().date().isoformat()
        ## 2018 holiday calendar
        holiday_calendar = ['2018-04-05', '2018-04-06', '2018-04-30', \
                            '2018-05-01', '2018-06-18', '2018-09-24', \
                            '2018-10-01', '2018-10-02', '2018-10-03', '2018-10-04', '2018-10-05']
        if datetime.today().weekday() >= 5 or (today_ISO in holiday_calendar):
            holiday = True
        else:
            holiday = False

        #now = '14:30' # for testing purpose, need to remove before use
        if (not holiday) and (now >= '09:30') and (now <= '15:05') :
            filename = 'portfolio'
            portfolio = pd.read_excel(io=working_folder + \
                'quantest/risk_management/' + filename + '.xlsx')
            portfolio.index = portfolio.index.map(lambda x: str(x).zfill(6))
            portfolio_closed = portfolio[portfolio.price_close > 0]
            portfolio_open = portfolio[portfolio.isnull().price_close]
            try:
                today_all = ts.get_today_all()
                today_all['code'] = today_all['code'].map(lambda x: str(x).zfill(6))
                for code in portfolio_open.index:
                    today_all_stock = today_all[(today_all.code == code)]
                    if (today_all_stock.iloc[0,3] <= portfolio_open.loc[code, 'price_stoploss']) and (portfolio_open.loc[code, 'notification_sent'] != 'Y'):
                        #消息推送
                        msg =   '==========================' + '\n' + \
                                today_ISO + ' ' + now + ' - \n' + \
                                '==========================' + '\n' + \
                                '提醒:' + portfolio_open.loc[code, 'name'] + '-跌破止损价' + str(portfolio_open.loc[code, 'price_stoploss']) + '\n' + \
                                '=========================='
                        portfolio_open.loc[code, 'notification_sent'] = 'Y'
                        #发送消息
                        bot.friends().search('Yang Hui')[0].send(msg)
                        #bot.friends().search('欣')[0].send(msg)
                        
                        #save file
                        portfolio = portfolio_closed.append(portfolio_open)
                        filename = 'portfolio'
                        portfolio.to_excel(working_folder + 'quantest/risk_management/' + filename + '.xlsx', encoding='GBK')
            except:
                pass
        time.sleep(300)  
    print(strftime("%Y-%m-%d %H:%M:%S", localtime()) + ' - End stoplossNotification thread ')
    return
コード例 #45
0
def filter_stock_by_average_pe(min, max):
    path = os.path.join(current_folder, '3年平均利润及其他财务指标%s.csv' % today)
    if not os.path.exists(path):  # 没有就生成3年平均利润列表
        calcu_all_stocks_3year_roe_and_average_profit(
            calcu_average_profit_end_year)

    gplb = pd.read_csv(path, index_col=0, encoding='utf-8')

    # 获取当前股票价格
    price_path = os.path.join(current_folder, today + '股票价格.csv')
    if not os.path.exists(price_path):
        ts.get_today_all().set_index('code').to_csv(price_path,
                                                    encoding="utf-8")

    current_price = pd.read_csv(price_path, encoding="utf-8", index_col=0)
    current_price = current_price[['trade']]
    current_price.columns = ['价格']
    gplb = gplb[[
        '名字', '行业', '地区', '流通股本', '总股本', '总资产(万)', '流动资产', '固定资产', '每股净资',
        '市净率', '上市日期', '平均利润'
    ]]

    data = pd.merge(gplb, current_price, left_index=True, right_index=True)
    # 因为这里的平均利润单位是万元,而总股本单位是亿,价格单位是元
    data['平均市盈率'] = data['总股本'] * data['价格'] * 10000 / data['平均利润']
    print('\n%s:' % today)
    print()
    print('%d个公司' % data.shape[0])
    print('3年市盈率中位数%.1f' % round(data['平均市盈率'].median(), 1))
    print('市净率中位数%.1f' % round(data['市净率'].median(), 1))
    data = data[data['平均市盈率'] < max]
    data = data[data['平均市盈率'] > min]
    data['平均市盈率'] = data['平均市盈率'].round(1)
    data['平均利润'] = data['平均利润'].round()
    data['市净率'] = data['市净率'].round(1)
    data['固定资产'] = data['固定资产'].round()
    data['流动资产'] = data['流动资产'].round()
    data['总股本'] = data['总股本'].round()
    data['流通股本'] = data['流通股本'].round()
    average_pe_file = os.path.join(
        current_folder, today + '-3年平均市盈率在%s和%s之间的公司.xlsx' % (min, max))
    data.to_excel(average_pe_file, encoding='utf-8')
コード例 #46
0
def main(today):
    path=os.path.join(os.path.dirname(__file__),'data')
    filename=os.path.join(path,'each_day_profile.xls')
    org_filename=os.path.join(path,'2016-09-30_all_.xls')
    #df_filename=os.path.join(path,'each_day_profile.xls')
    #df=pd.read_excel(org_filename)
    df=ts.get_today_all()
    new_df=join_dataframe(filename,today)
    save_name=os.path.join(path,"each_day_profile.xls")
    #这样会不会把原来的覆盖掉?
    new_df.to_excel(save_name)
コード例 #47
0
 def getTodayAll(self):
     otherStyleTime = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
     fileName='%s/todayAll/%s.csv'%(dir,otherStyleTime)
     print(fileName)
     pp = ts.get_today_all()
     if not os.path.exists('%s/todayAll'%(dir)):
         os.makedirs('%s/todayAll'%(dir))
     pp.to_csv(fileName,encoding='utf-8')
     with codecs.open("log.txt", 'w', "utf-8") as fileObj:
         fileObj.write("%s\n"%(fileName))
     return pp
コード例 #48
0
def main(today):
    path = os.path.join(os.path.dirname(__file__), 'data')
    filename = os.path.join(path, 'each_day_profile.xls')
    org_filename = os.path.join(path, '2016-09-30_all_.xls')
    #df_filename=os.path.join(path,'each_day_profile.xls')
    #df=pd.read_excel(org_filename)
    df = ts.get_today_all()
    new_df = join_dataframe(filename, today)
    save_name = os.path.join(path, "each_day_profile.xls")
    #这样会不会把原来的覆盖掉?
    new_df.to_excel(save_name)
コード例 #49
0
 def daily_market(self):
     '''
     保存每天收盘后的市场行情
     :return:
     '''
     df = ts.get_today_all()
     print df
     try:
         df.to_sql(self.today, daily_engine, if_exists='replace')
     except Exception, e:
         print e
コード例 #50
0
def announcment_stastic_main(theday):
    # date=mydate = time.strftime('%Y-%m-%d',time.localtime(time.time()))
    # print date
    #date=datelist(2015,1,1,2018,2,4)
    date = theday
    b = ts.get_today_all()
    for j in range(len(b.index)):
        stock = b.loc[b.index[j]]['code']
        name = b.loc[b.index[j]]['name']
        time1 = datetime2ts(date)
        test(stock, time1, date, name)
コード例 #51
0
ファイル: maptest.py プロジェクト: fswzb/pyQuant-2
def get_all_top():
    gold = {}
    goldl = []
    df = ts.get_today_all()
    top = df[df['changepercent'] > 6]
    # top = df[df['changepercent'] < -2]
    top = top[top['changepercent'] < 10]
    # logging.info("top:", len(top['code']))
    list = top['code'].tolist()
    print len(list)
    return list
コード例 #52
0
ファイル: basic.py プロジェクト: lj-wang96/stockout
def get_today_all():
    try:
        df = ts.get_today_all()
        ret = {}
        for idx, serie in df.iterrows():
            ret[serie['code']] = serie['mktcap']
        return ret
    except Exception as e:
        pass
    finally:
        session.close()
コード例 #53
0
ファイル: filter_stock.py プロジェクト: linyunxue/stock
 def daily_market(self):
     '''
     保存每天收盘后的市场行情
     :return:
     '''
     df = ts.get_today_all()
     print df
     try:
         df.to_sql(self.today, daily_engine, if_exists='replace')
     except Exception, e:
         print e
コード例 #54
0
def GetTodayAllQuotesData():
    fileName = 'D:/today_all_quotes.csv'
    allData = ts.get_today_all()  #一次性获取当前交易所有的股票行情数据(如果是节假日,即为上一交易日)
    if os.path.exists(fileName):
        allData.to_csv(fileName,
                       mode='a',
                       index=True,
                       header=None,
                       encoding='utf_8_sig')
    else:
        allData.to_csv(fileName, index=True, encoding='utf_8_sig')
コード例 #55
0
 def gettodaymarket(self, re_try=5):
     while re_try > 0:
         try:
             df = ts.get_today_all()
             if len(df) != 0:
                 return df
         except Exception as  e:
             logger.error(e)
             re_try = re_try - 1
             time.sleep(self.TIMEOUT)
     return None
コード例 #56
0
ファイル: dataproxy.py プロジェクト: tianyakun/yak
def get_all():
    try:
        df = pd.DataFrame(ts.get_today_all())
        j_datas = json.loads(df.to_json(orient='records'))
        stocks = []
        from models import Stock
        for j_data in j_datas:
            stocks.append(Stock(j_data))
        return stocks
    except IOError:
        pass
コード例 #57
0
ファイル: push_msn.py プロジェクト: Rockyzsu/stock
def general_info():
    t_all = ts.get_today_all()
    result = []
    t1 = t_all[t_all['changepercent'] <= -9.0].count()['changepercent']
    result.append(t1)
    for i in range(-9, 9, 1):
        temp = t_all[(i * 1.00 < t_all['changepercent']) & (t_all['changepercent'] <= (i + 1) * 1.00)].count()[
            'changepercent']
        result.append(temp)
    t2 = t_all[t_all['changepercent'] > 9.0].count()['changepercent']
    result.append(t2)
    return result
コード例 #58
0
ファイル: filter_stock.py プロジェクト: Rockyzsu/stock
 def daily_market(self):
     '''
     保存每天收盘后的市场行情
     :return:
     '''
     df = ts.get_today_all()
     print(df)
     try:
         df.to_sql(self.today, daily_engine, if_exists='replace')
     except Exception as e:
         print(e)
     print("Save {} data to MySQL".format(self.today))
コード例 #59
0
ファイル: gu_util.py プロジェクト: pittmiqi/qi
def get_codes_names(filename):
    '''
    Get the latest codes which includes stock and index

    '''
    zs = ts.get_index()
    stock = ts.get_today_all()
    codes = np.concatenate( (zs['code'].unique(), stock['code'].unique()))
    names = np.concatenate( (zs['name'].unique(), stock['name'].unique()))
    out = (codes, names)
    if filename:
        write_pickle(out, filename)
    return out