Exemple #1
0
def filterPowerCount(df, count=200, down=False, duration=2):

    nowint = cct.get_now_time_int()
    df.sort_values('percent', ascending=False, inplace=True)
    top_temp = df[:count].copy()

    if 915 < nowint <= 945:
        if nowint <= 935:
            top_temp = df[(df.buy > df.llastp) | (df.percent > df['per%sd' %
                                                                  (duration)])]
        else:
            top_temp = df[((df.open > df.llastp) & (df.low >= df.llastp)) |
                          (df.percent > df['per%sd' % (duration)])]
        if len(top_temp) > 0:
            return top_temp
        else:
            log.error("915 open>llastp is None")
            return df[:count].copy()

    if 930 < nowint <= 945:
        top_high = df[((df.open > df.llastp) & (df.low >= df.llastp))]
    elif 945 < nowint:
        if 'nlow' in df.columns:
            # top_high = df[ (df.nlow >= df.llastp) | (df.close >= df.nlow)]
            top_high = df[((df.nlow >= df.llastp) & (df.nlow >= df.low)) |
                          ((df.nlow <= df.low) & (df.open == df.nlow))]
        else:
            top_high = df[((df.open > df.llastp) & (df.low > df.llastp)) |
                          (df.percent > df['per%sd' % (duration)])]
    else:
        top_high = None

    if top_high is not None:
        top_high['upper'] = map(lambda x: round((1 + 11.0 / 100) * x, 1),
                                top_high.ma10d)
        top_high['lower'] = map(lambda x: round((1 - 9.0 / 100) * x, 1),
                                top_high.ma10d)
        top_high['ene'] = map(lambda x, y: round((x + y) / 2, 1),
                              top_high.upper, top_high.lower)
        if 930 < nowint < 1500:
            radio_t = cct.get_work_time_ratio()
        else:
            radio_t = 1

        top_high = top_high[(((top_high.buy > top_high.ene) &
                              (top_high.volume / radio_t > 2))) |
                            (((top_high.lastv1d > top_high.lvol * 1.5)) &
                             (top_high.lastp1d > top_high.ene))]
        if len(top_high) > count:
            top_high = top_high[(top_high.low > top_high.ene) |
                                ((top_high.percent > 1) &
                                 (top_high.volume > 2))]
        top_temp = cct.combine_dataFrame(top_temp,
                                         top_high,
                                         col=None,
                                         compare=None,
                                         append=True,
                                         clean=True)

    return top_temp
Exemple #2
0
 def get_col_agg_df_Test(h5,
                         dd,
                         run_col,
                         all_func,
                         startime,
                         endtime,
                         freq=None):
     if isinstance(run_col, list):
         now_col = [
             all_func[co] for co in run_col if co in list(all_func.keys())
         ]
     else:
         now_col = [
             all_func[co] for co in list(run_col.keys())
             if co in list(all_func.keys())
         ]
     now_func = cct.from_list_to_dict(run_col, all_func)
     if h5 is not None and len(h5) > len(dd):
         time_n = time.time()
         # h5 = cct.get_limit_multiIndex_Group(h5, freq=freq,end=endtime)
         ts = time.time()
         if freq is None:
             h5 = cct.get_limit_multiIndex_Row(h5,
                                               col=run_col,
                                               start=startime,
                                               end=endtime)
         else:
             h5 = cct.get_limit_multiIndex_freq(h5,
                                                freq=freq,
                                                col=run_col,
                                                start=startime,
                                                end=endtime)
             h5 = h5.groupby(level=[0]).tail(1)
         # h5 = h5.groupby(level=[0]).tail(1)
         print("s:", round(time.time() - ts, 2), len(h5))
         if h5 is not None and len(h5) > 0:
             h5 = h5.reset_index().set_index('code')
             h5.rename(columns=now_func, inplace=True)
             # log.info("get_limit_multiIndex_Row:%s  endtime:%s" % (len(h5), endtime))
             #h5 = h5.drop(['ticktime'], axis=1)
             h5 = h5.loc[:, now_col]
             dd = cct.combine_dataFrame(dd,
                                        h5,
                                        col=None,
                                        compare=None,
                                        append=False,
                                        clean=True)
             log.info('agg_df_Row:%.2f h5:%s endtime:%s' %
                      ((time.time() - time_n), len(h5), endtime))
     return dd
                else:
                    if 'couts' in top_now.columns.values:
                        if not 'couts' in top_all.columns.values:
                            top_all['couts'] = 0
                            top_all['prev_p'] = 0
                    # for symbol in top_now.index:
                    #     if 'couts' in top_now.columns.values:
                    #         top_all.loc[symbol, ct.columns_now] = top_now.loc[symbol, ct.columns_now]
                    #     else:
                    #         # top_now.loc[symbol, 'dff'] = round(
                    #         # ((float(top_now.loc[symbol, 'buy']) - float(
                    #         # top_all.loc[symbol, 'lastp'])) / float(top_all.loc[symbol, 'lastp']) * 100),
                    #         # 1)
                    #         top_all.loc[symbol, ct.columns_now] = top_now.loc[symbol, ct.columns_now]
                    top_all = cct.combine_dataFrame(top_all, top_now, col=None)

                top_dif = top_all.copy()
                market_sort_value, market_sort_value_key = ct.get_market_sort_value_key(st_key_sort, top_all=top_all)

                log.debug('top_dif:%s' % (len(top_dif)))
                if 'trade' in top_dif.columns:
                    top_dif['buy'] = (
                        map(lambda x, y: y if int(x) == 0 else x, top_dif['buy'].values, top_dif['trade'].values))

                # log.debug('top_dif:%s'%(len(top_dif)))
                if ct.checkfilter and cct.get_now_time_int() > 915 and cct.get_now_time_int() < ct.checkfilter_end_timeDu:
                    top_dif = top_dif[top_dif.low > top_dif.llow * ct.changeRatio]
                    # top_dif = top_dif[top_dif.buy >= top_dif.lhigh * ct.changeRatio]
                    log.debug('top_dif:%s' % (len(top_dif)))
Exemple #4
0
def write_hdf_db(fname,
                 df,
                 table='all',
                 index=False,
                 complib='blosc',
                 baseCount=500,
                 append=True,
                 MultiIndex=False,
                 rewrite=False):
    """[summary]

    [description]

    Parameters
    ----------
    fname : {[type]}
        [description]
    df : {[type]}
        [description]
    table : {str}, optional
        [description] (the default is 'all', which [default_description])
    index : {bool}, optional
        [description] (the default is False, which [default_description])
    complib : {str}, optional
        [description] (the default is 'blosc', which [default_description])
    baseCount : {number}, optional
        [description] (the default is 500, which [default_description])
    append : {bool}, optional
        [description] (the default is True, which [default_description])
    MultiIndex : {bool}, optional
        [description] (the default is False, which [default_description])

    Returns
    -------
    [type]
        [description]
    """
    if 'code' in df.columns:
        df = df.set_index('code')
#    write_status = False
    time_t = time.time()
    #    if not os.path.exists(cct.get_ramdisk_dir()):
    #        log.info("NO RamDisk")
    #        return False
    df = df.fillna(0)
    df = df[~df.index.duplicated(keep='first')]

    code_subdf = df.index.tolist()
    global RAMDISK_KEY
    if not RAMDISK_KEY < 1:
        return df

    if not MultiIndex:
        df['timel'] = time.time()

    if not rewrite:
        if df is not None and not df.empty and table is not None:
            # h5 = get_hdf5_file(fname,wr_mode='r')
            tmpdf = []
            with SafeHDFStore(fname) as store:
                if store is not None:
                    if '/' + table in list(store.keys()):
                        tmpdf = store[table]
                        tmpdf = tmpdf[~tmpdf.index.duplicated(keep='first')]

            if not MultiIndex:
                if index:
                    # log.error("debug index:%s %s %s"%(df,index,len(df)))
                    df.index = list(
                        map((lambda x: str(1000000 - int(x))
                             if x.startswith('0') else x), df.index))
                if tmpdf is not None and len(tmpdf) > 0:
                    if 'code' in tmpdf.columns:
                        tmpdf = tmpdf.set_index('code')
                    if 'code' in df.columns:
                        df = df.set_index('code')
                    diff_columns = set(df.columns) - set(tmpdf.columns)
                    if len(diff_columns) != 0:
                        log.error("columns diff:%s" % (diff_columns))

                    limit_t = time.time()
                    df['timel'] = limit_t
                    # df_code = df.index.tolist()

                    df = cct.combine_dataFrame(tmpdf,
                                               df,
                                               col=None,
                                               append=append)

                    if not append:
                        df['timel'] = time.time()
                    elif fname == 'powerCompute':
                        o_time = df[df.timel < limit_t].timel.tolist()
                        o_time = sorted(set(o_time), reverse=False)
                        if len(o_time) >= ct.h5_time_l_count:
                            o_time = [time.time() - t_x for t_x in o_time]
                            o_timel = len(o_time)
                            o_time = np.mean(o_time)
                            if (o_time) > ct.h5_power_limit_time:
                                df['timel'] = time.time()
                                log.error("%s %s o_time:%.1f timel:%s" %
                                          (fname, table, o_time, o_timel))

        #            df=cct.combine_dataFrame(tmpdf, df, col=None,append=False)
                    log.info("read hdf time:%0.2f" % (time.time() - time_t))
                else:
                    # if index:
                    # df.index = map((lambda x:str(1000000-int(x)) if x.startswith('0') else x),df.index)
                    log.info("h5 None hdf reindex time:%0.2f" %
                             (time.time() - time_t))
            else:
                # df.loc[df.index.isin(['000002','000001'], level='code')]
                # df.loc[(df.index.get_level_values('code')== 600004)]
                # df.loc[(df.index.get_level_values('code')== '600199')]
                # da.swaplevel(0, 1, axis=0).loc['2017-05-25']
                # df.loc[(600004,20170414),:]
                # df.xs(20170425,level='date')
                # df.index.get_level_values('code').unique()
                # df.index.get_loc(600006)
                # slice(58, 87, None)
                # df.index.get_loc_level(600006)
                # da.swaplevel(0, 1, axis=0).loc['2017-05-25']
                # da.reorder_levels([1,0], axis=0)
                # da.sort_index(level=0, axis=0,ascending=False
                # setting: dfm.index.is_lexsorted() dfm = dfm.sort_index()  da.loc[('000001','2017-05-12'):('000005','2017-05-25')]
                # da.groupby(level=1).mean()
                # da.index.get_loc('000005')     da.iloc[slice(22,33,None)]
                # mask = totals['dirty']+totals['swap'] > 1e7     result =
                # mask.loc[mask]
                # store.remove('key_name', where='<where clause>')

                # tmpdf = tmpdf[~tmpdf.index.duplicated(keep='first')]
                # df = df[~df.index.duplicated(keep='first')]
                if not rewrite and tmpdf is not None and len(tmpdf) > 0:
                    # multi_code = tmpdf.index.get_level_values('code').unique().tolist()
                    multi_code = tmpdf.index.get_level_values(
                        'code').unique().tolist()
                    df_multi_code = df.index.get_level_values(
                        'code').unique().tolist()
                    dratio = cct.get_diff_dratio(multi_code, df_multi_code)
                    if dratio < ct.dratio_limit:
                        comm_code = list(set(df_multi_code) & set(multi_code))
                        # print df_multi_code,multi_code,comm_code,len(comm_code)
                        inx_key = comm_code[random.randint(
                            0,
                            len(comm_code) - 1)]
                        if inx_key in df.index.get_level_values('code'):
                            now_time = df.loc[inx_key].index[-1]
                            tmp_time = tmpdf.loc[inx_key].index[-1]
                            if now_time == tmp_time:
                                log.debug(
                                    "%s %s Multi out %s hdf5:%s No Wri!!!" %
                                    (fname, table, inx_key, now_time))
                                return False
                    elif dratio == 1:
                        print(("newData ratio:%s all:%s" % (dratio, len(df))))
                    else:
                        log.debug(
                            "dratio:%s main:%s new:%s %s %s Multi All Wri" %
                            (dratio, len(multi_code), len(df_multi_code),
                             fname, table))
                    # da.drop(('000001','2017-05-11'))
                else:
                    log.debug("%s %s Multi rewrite:%s Wri!!!" %
                              (fname, table, rewrite))

    time_t = time.time()
    if df is not None and not df.empty and table is not None:
        if df is not None and not df.empty and len(df) > 0:
            dd = df.dtypes.to_frame()

        if 'object' in dd.values:
            dd = dd[dd == 'object'].dropna()
            col = dd.index.tolist()
            log.info("col:%s" % (col))
            if not MultiIndex:
                df[col] = df[col].astype(str)
                df.index = df.index.astype(str)
                df = df.fillna(0)
            # else:
            #     print col
            #     for co in col:
            #         print ('object:%s'%(co))
            # df = df.drop(col,axis=1)
#                    df[co] = df[co].apply()
#                    recordStringInHDF5(h5file, h5file.root, 'mrtamb',u'\u266b Hey Mr. Tambourine Man \u266b')

        with SafeHDFStore(fname) as h5:
            df = df.fillna(0)
            if h5 is not None:
                if '/' + table in list(h5.keys()):
                    if not MultiIndex:

                        # if MultiIndex and rewrite:
                        #     src_code = h5[table].index.get_level_values('code').unique().tolist()
                        #     new_code = df.index.get_level_values('code').unique().tolist()
                        #     diff_code = list(set(new_code) - set(src_code))
                        #     dratio = cct.get_diff_dratio(new_code, src_code)
                        #     print dratio,len(diff_code)
                        #     import ipdb;ipdb.set_trace()
                        #     df = pd.concat([df, h5[table]], axis=0)
                        #     df = df.index.drop_duplicates()
                        # df[df.index.get_level_values('code') not in diff_code ]
                        h5.remove(table)
                        # h5[table]=df
                        h5.put(table,
                               df,
                               format='table',
                               index=False,
                               complib=complib,
                               data_columns=True)
                        # h5.put(table, df, format='table',index=False, data_columns=True, append=False)
                    else:
                        if rewrite:
                            h5.remove(table)
                        h5.put(table,
                               df,
                               format='table',
                               index=False,
                               complib=complib,
                               data_columns=True,
                               append=True)
                        # h5.append(table, df, format='table', append=True,data_columns=True, dropna=None)
                else:
                    if not MultiIndex:
                        # h5[table]=df
                        h5.put(table,
                               df,
                               format='table',
                               index=False,
                               complib=complib,
                               data_columns=True)
                        # h5.put(table, df, format='table',index=False, data_columns=True, append=False)
                    else:
                        h5.put(table,
                               df,
                               format='table',
                               index=False,
                               complib=complib,
                               data_columns=True,
                               append=True)
                        # h5.append(table, df, format='table', append=True, data_columns=True, dropna=None)
                        # h5[table]=df
                h5.flush()
            else:
                log.error("HDFile is None,Pls check:%s" % (fname))

    log.info("write hdf time:%0.2f" % (time.time() - time_t))

    return True
Exemple #5
0
                    top_all = tdd.get_append_lastp_to_df(top_now, lastpTDX_DF)
                    # top_all = top_all.merge(lastpTDX_DF, left_index=True, right_index=True, how='left')
                    # top_all = top_all[top_all['llow'] > 0]
                else:
                    # top_now = top_now[top_now.trade >= top_now.high * 0.98]
                    # for symbol in top_now.index:
                    #     # code = rl._symbol_to_code(symbol)
                    #     if symbol in top_all.index:

                    #         top_all.loc[symbol,['name', 'percent', 'dff', 'couts', 'trade', 'high', 'open', 'low', 'ratio', 'volume',
                    #        'prev_p']] = top_now.loc[symbol,['name', 'percent', 'dff', 'couts', 'trade', 'high', 'open', 'low', 'ratio', 'volume',
                    #        'prev_p']]

                    #     else:
                    #         top_all.append(top_now.loc[symbol])
                    top_all = cct.combine_dataFrame(top_all, top_now, col=None)

                # top_bak = top_all
                # top_all['buy'] = (
                # map(lambda x, y: y if int(x) == 0 else x, top_all['buy'].values, top_all['trade'].values))
                codelist = top_all.index.tolist()
                if len(codelist) > 0:
                    # log.info('toTDXlist:%s' % len(codelist))
                    # top_all = tdd.get_append_lastp_to_df(top_all)
                    # log.info("df:%s" % top_all[:1])
                    radio_t = cct.get_work_time_ratio()
                    log.debug("Second:vol/vol/:%s" % radio_t)
                    # top_all['volume'] = top_all['volume'].apply(lambda x: round(x / radio_t, 1))
                    log.debug("top_diff:vol")
                    top_all['volume'] = (map(
                        lambda x, y: round(x / y / radio_t, 1),
                    #         top_now.loc[symbol, 'dff'] = count_n - count_a
                    #         if status_change:
                    #             # top_all.loc[symbol] = top_now.loc[symbol]
                    #             top_all.loc[symbol, ['name', 'percent', 'dff', 'couts', 'trade', 'high', 'open', 'low', 'ratio', 'volume',
                    #                                  'prev_p']] = top_now.loc[symbol, ['name', 'percent', 'dff', 'couts', 'trade', 'high', 'open', 'low', 'ratio', 'volume',
                    #                                                                    'prev_p']]
                    #         else:
                    #             top_all.loc[symbol, ['percent', 'dff']] = top_now.loc[
                    #                 symbol, ['percent', 'dff']]
                    #             # top_all.loc[symbol, 'trade':] = top_now.loc[symbol, 'trade':]
                    #             top_all.loc[symbol, ['trade', 'high', 'open', 'low', 'ratio', 'volume',
                    #                                  'prev_p']] = top_now.loc[symbol, ['trade', 'high', 'open', 'low', 'ratio', 'volume',
                    #                                                                    'prev_p']]
                    #     else:
                    #         top_all.append(top_now.loc[symbol])
                    top_all = cct.combine_dataFrame(
                        top_all, top_now, col='couts', compare='dff')

                # top_all=top_all.sort_values(by=['dff','percent','couts'],ascending=[0,0,1])
                # top_all=top_all.sort_values(by=['dff','ratio','percent','couts'],ascending=[0,1,0,1])
                # top_all=top_all.sort_values(by=['dff','percent','couts','ratio'],ascending=[0,0,1,1])

                # top_all[(top_all.upperT > 3) & (top_all.top10 >2) &(top_all.close > top_all.upper*0.98) & (top_all.close < top_all.upper *1.05)]
                # top_all[(top_all.upperT > 3) & (top_all.top10 >2) &(top_all.close > top_all.upper*0.98) & (top_all.close < top_all.upper *1.05) &(top_all.lastp1d > top_all.upper)].name
                # cct.write_to_blocknew(block_path, dd.index.tolist())
                # writecode = "cct.write_to_blocknew(block_path, dd.index.tolist())"
                top_bak = top_all
                # market_sort_value, market_sort_value_key = ct.get_market_sort_value_key(st_key_sort, top_all=top_all)
                codelist = top_all.index.tolist()
                if len(codelist) > 0:
                    # log.info('toTDXlist:%s' % len(codelist))
                    # tdxdata = tdd.get_tdx_all_day_LastDF(codelist)
Exemple #7
0
                    top_all = tdd.get_append_lastp_to_df(top_now, lastpTDX_DF)

                else:
                    if 'couts' in top_now.columns.values:
                        if not 'couts' in top_all.columns.values:
                            top_all['couts'] = 0
                            top_all['prev_p'] = 0
                    # for symbol in top_now.index:
                    #     if symbol in top_all.index and top_now.loc[symbol, 'buy'] <> 0:
                    #         if 'couts' in top_now.columns.values:
                    #             top_all.loc[symbol, 'buy':'prev_p'] = top_now.loc[
                    #                 symbol, 'buy':'prev_p']
                    #         else:
                    #             top_all.loc[symbol, 'buy':'low'] = top_now.loc[
                    #                 symbol, 'buy':'low']
                    top_all = cct.combine_dataFrame(top_all, top_now, col=None)
                top_dif = top_all.copy()
                market_sort_value, market_sort_value_key = ct.get_market_sort_value_key(
                    st_key_sort, top_all=top_all)

                top_dif = top_dif[top_dif.lvol > ct.LvolumeSize]
                # if top_dif[:1].llow.values <> 0:
                # if not (cct.get_now_time_int() > 915 and cct.get_now_time_int() <= 925):
                if len(top_dif[:5][top_dif[:5]['buy'] > 0]) > 3:
                    log.debug('diff2-0-buy>0')
                    if cct.get_now_time_int() > 915 and cct.get_now_time_int(
                    ) < ct.checkfilter_end_time:
                        top_dif = top_dif[top_dif.low > top_dif.llow *
                                          ct.changeRatio]
                    log.debug('dif4 open>low0.99:%s' % len(top_dif))
                    # top_dif['buy'] = (map(lambda x, y: y if int(x) == 0 else x, top_dif['buy'].values, top_dif['trade'].values))
Exemple #8
0
def getBollFilter(df=None,
                  boll=ct.bollFilter,
                  duration=ct.PowerCountdl,
                  filter=True,
                  ma5d=True,
                  dl=14,
                  percent=True,
                  resample='d',
                  ene=False,
                  upper=False,
                  down=False,
                  indexdff=True,
                  cuminTrend=False,
                  top10=True):

    # drop_cxg = cct.GlobalValues().getkey('dropcxg')
    # if len(drop_cxg) >0:
    # log.info("stf drop_cxg:%s"%(len(drop_cxg)))
    # drop_cxg = list(set(drop_cxg))
    # drop_t = [ co for co in drop_cxg if co in df.index]
    # if len(drop_t) > 0:
    # df = df.drop(drop_t,axis=0)top
    # log.error("stf drop_cxg:%s"%(len(drop_t)))

    # hvdu max量天数  lvdu  min天数  hv max量  lv 量
    # fib < 2 (max) fibl > 2   lvdu > 3  (hvdu > ? or volume < 5)? ene
    time_s = time.time()
    # df['upper'] = map(lambda x: round((1 + 11.0 / 100) * x, 1), df.ma10d)
    # df['lower'] = map(lambda x: round((1 - 9.0 / 100) * x, 1), df.ma10d)
    # df['ene'] = map(lambda x, y: round((x + y) / 2, 1), df.upper, df.lower)
    '''
    df = df[(df.close > df.ma20d) | (df.close > df.ene)]
    if filter:
        if 'boll' in df.columns:
            df = df[(df.boll >= boll) | (df.buy > df.upper)]
    '''

    # if 'nlow' in df.columns:
    # df = df[ ((df.nlow >= df.llastp) & (df.nlow >= df.low)) | ((df.nlow <= df.low) & (df.open == df.nlow))]
    # if cct.get_work_time() and 'df2' in df.columns:
    #     if 915 < cct.get_now_time_int() < 930:
    #         df['cumnow'] =  map(lambda x, y: 1 if x - y > 0 else 0, df.close, df.cumaxe)
    #     else:
    #         df['cumnow'] =  map(lambda x, y: 1 if x - y > 0 else 0, df.high, df.cumaxe)
    #     df['df2'] = (df['df2'] + df['cumnow']).map(lambda x: int(x))
    # df = df[df.df2 > 1]
    # else:
    # df = df[df.df2 > 0]
    radio_t = cct.get_work_time_ratio()
    df['lvolr%s' % (resample)] = df['volume']
    # df['volume'] = (map(lambda x, y: round(x / y / radio_t, 1), df.nvol.values, df.lvolume.values))
    if cct.get_now_time_int() > 1530:
        df['volume'] = (map(
            lambda x, y, z: round((x / y / radio_t)
                                  if z < 9.9 else (x / y), 1), df.nvol.values,
            df.ma5vol.values, df.percent.values))
    else:
        df['volume'] = (map(
            lambda x, y, z: round((x / y / radio_t)
                                  if z < 9.9 else (x / y), 1), df.nvol.values,
            df.lvol.values, df.percent.values))
    # df['volume'] = (map(lambda x, y,z: round((x / y / radio_t) if z < 9.9 else (x / y) , 1), df.nvol.values, df.ma5vol.values,df.percent.values))
    # df['volume'] = (map(lambda x, y: round(x / y / radio_t, 1), df.nvol.values, df.lastv1d.values))

    indexfibl = cct.GlobalValues().getkey('indexfibl')
    sort_value = cct.GlobalValues().getkey('market_sort_value')
    market_key = cct.GlobalValues().getkey('market_key')
    market_value = cct.GlobalValues().getkey('market_value')

    # if int(market_value) > 1 and 930 < cct.get_now_time_int():

    df = compute_perd_value(df, market_value, 'perc')
    df = compute_perd_value(df, market_value, 'per')

    if sort_value <> 'percent' and (market_key in ['2', '3']
                                    and market_value not in ['1']):
        # print("sort_value:%s,market_key:%s ,market_value:%s" %
        #       (sort_value, market_key, market_value))
        if market_key is not None and market_value is not None:
            # if market_key == '3':

            if market_key == '3':
                market_value = int(market_value)
                log.info("stf market_key:%s" % (market_key))
                idx_k = cct.get_col_in_columns(df, 'perc%sd', market_value)
                # filter percd > idx
                # df= df[(df[("perc%sd" % (idx_k))] >= idx_k) | (df[("perc%sd" % (idx_k))]< -idx_k)]

                # if int(market_value) > 1 and 930 < cct.get_now_time_int():
                #     df= compute_perd_value(df, market_value, 'perc')
                #     df= compute_perd_value(df, market_value, 'per')

            # elif market_key == '2':
            #     if int(market_value) > 1 and 915 < cct.get_now_time_int():
            #         # df['per%d'%(market_value)] = compute_perd_value(df,market_value)
            #         df= compute_perd_value(df, market_value,'per')
            #         df= compute_perd_value(df, market_value, 'perc')

    # if sort_value <> 'percent' and (market_key in ['2','3'] and market_value not in ['1'] ):
    #     if indexfibl is not None:
    #         df = df[df.fibl >= (indexfibl - 1)]
    #     else:
    #         indexfibl = 1
    #     if cuminTrend:
    #         cuminfibl = cct.GlobalValues().getkey('cuminfibl')
    #         if cuminfibl is None:
    #             cuminfibl = cct.get_index_fibl()
    # if cuminfibl > 1:
    #     df = df[df.df2 >= cuminfibl]

    #    print df.loc['300107'][['close','cumine','llastp','cumaxe','cumaxc']]
    #     df = df[ (df.cumine == df.cumaxc) | (df.close >= df.cumine) | (df.llastp >=df.cumaxc) | (df.close >= df.cumaxe) ]
    # else:
    #     upper = True

    if not down:
        if upper:
            # upper_count = len( df[ ( ( df.buy > df.upper)| ( df.lastp0d > df.upper) | ( df.lastp1d > df.upper) | ( df.lastp2d > df.upper) | ( df.lastp3d > df.upper))])
            # # ene_count = len(df[df.buy > df.upper])
            # if upper_count > 30:
            #     df = df[ (  ( df.buy > df.upper)| ( df.lastp0d > df.upper) | ( df.lastp1d > df.upper) | ( df.lastp2d > df.upper) | ( df.lastp3d > df.upper))]
            # else:
            #     df = df[ ( (( df.buy > df.ene ) ) | ( df.buy > df.upper)| ( df.lasth0d > df.upper) | ( df.lasth1d > df.upper) | ( df.lasth2d > df.upper) | ( df.lasth3d > df.upper))]
            df = df[(df.low >= df.upper) | (df.close >= df.upper) |
                    (df.per1d >= 9.5) | (df.lastp1d == df.hmax) |
                    ((df.lastp1d <> df.hmax) & (df.high > df.hmax))]
        else:
            if 935 < cct.get_now_time_int() < 1400:
                df = df[((df.buy > df.ene) | (df.llastp > df.ene) |
                         (df.llastp >= df.max5) | (df.high >= df.max5) |
                         (df.max5 >= df.upper))]
            else:
                df = df[((df.buy > df.ene) | (df.llastp > df.ene) |
                         (df.llastp >= df.max5) | (df.high >= df.max5) |
                         (df.max5 >= df.upper))]

    # df['cumins'] = round(cum_counts.index[0], 2)
    # df['cumine'] = round(cumdf[-1], 2)
    # df['cumax']
    # df.rename(columns={'cumin': 'df2'}, inplace=True)
    if df is None:
        print "dataframe is None"
        return None
    else:
        # top10 = df[ (df.percent >= 9.99) & (df.b1_v > df.a1_v)]

        if resample in ['d', 'w']:
            # if not top10 or (cct.get_now_time_int() < 950 or cct.get_now_time_int() > 1502):
            #     df.loc[((df.b1_v > df.a1_v) & (df.percent > 9)), 'percent'] = 10.1
            #     df.loc[((df.percent >= 9.97) & (df.percent < 10.1)), 'percent'] = 10

            # else:
            #     df.loc[((df.b1_v > df.a1_v) & (df.percent > 9)), 'percent'] = 10.1
            #     df.loc[((df.percent >= 9.97) & (df.percent < 10.1)), 'percent'] = 10

            # df.loc[df.per1d >= 9.99, 'per1d'] = 10
            df['percent'] = df['percent'].apply(lambda x: round(x, 2))
            # time_ss = time.time()
            perc_col = [co for co in df.columns if co.find('perc') == 0]
            per_col = [co for co in df.columns if co.find('per') == 0]
            # per_col = list(set(per_col) - set(perc_col) - set(['per1d', 'perlastp']))
            per_col = list(
                set(per_col) - set(perc_col) - set(['per1d', 'perlastp']))

            perc_col.remove('percent')

            for co in perc_col:
                df[co] = df[co].apply(lambda x: round(x, 2))

            # da, down_zero, down_dn, percent_l = 1, 0, 0, 2
            # da, down_zero, down_dn, percent_l = 1, 0, -1, 1
            # df['perc_n'] = map((lambda h, lh, l, ll, c, lc: (1 if (h - lh) > 0 else down_dn) + (1 if c - lc > 0 else down_dn) + (1 if (l - ll) > 0 else down_dn) + (2 if (c - lh) > 0 else down_zero) + (2 if (l - lc) > 0 else down_zero) + (0 if (h - lc) > 0 else down_dn)), df['high'], df['lasth%sd' % da], df['low'], df['lastl%sd' % da], df['close'],df['lastp%sd' % da])
            # df['perc_n'] = map((lambda c, lc: (1 if (c - lc) > 0 else down_zero) + (1 if (c - lc) / lc * 100 > 3 else down_zero) +
            # (down_dn if (c - lc) / lc * 100 < -3 else down_zero)), df['close'], df['lastp%sd' % da])

            # idx_rnd = random.randint(0, len(df) - 10) if len(df) > 10 else 0

            # print "idx_rnd",idx_rnd,df.ix[idx_rnd].lastp0d ,df.ix[idx_rnd].close,df.ix[idx_rnd].lastp0d != df.ix[idx_rnd].close

            # if not upper:
            #     if cct.get_work_time() or df.ix[idx_rnd].lastp0d <> df.ix[idx_rnd].close:
            #         nowd, per1d = 0, 1
            #         if 'nlow' in df.columns:
            #             df['perc_n'] = map(cct.func_compute_percd2, df['close'], df['llastp'], df['open'],df['lasto%sd' % nowd], df['lasth%sd' %
            #                                                                                                   (nowd)], df['lastl%sd' % (nowd)], df['nhigh'], df['nlow'],df['nvol']/radio_t,df['lastv%sd'%(nowd)], df['hmax'],df['df2'])
            #         else:
            #             df['perc_n'] = map(cct.func_compute_percd2, df['close'], df['llastp'], df['open'],df['lasto%sd' % nowd], df['lasth%sd' %
            #                                                                                                   (nowd)], df['lastl%sd' % (nowd)], df['high'], df['low'],df['nvol']/radio_t,df['lastv%sd'%(nowd)], df['hmax'],df['df2'])
            #     else:
            #         nowd, per1d = 1, 2
            #         # print  df['per%sd' % da+1], df['lastp%sd' % (da)], df['lasth%sd' % (da)], df['lastl%sd' % (da)], df['high'], df['low']
            #         df['perc_n'] = map(cct.func_compute_percd2, df['close'], df['llastp'], df['open'],df['lasto%sd' % nowd], df['lasth%sd' %
            #                                                                                               (nowd)], df['lastl%sd' % (nowd)], df['high'], df['low'], df['hmax'])
            '''
            idx_rnd = random.randint(0, len(df) - 10) if len(df) > 10 else 0
            if not upper:
               # if cct.get_work_time() or df.ix[idx_rnd].lastp1d <> df.ix[idx_rnd].close:
               if cct.get_work_time() :
                   nowd, per1d=1, 1
                   if 'nlow' in df.columns:
                       df['perc_n']=map(cct.func_compute_percd2020, df['open'], df['close'], df['nhigh'], df['nlow'], df['lasto%sd' % nowd], df['llastp'],
                                         df['lasth%sd' % (nowd)], df['lastl%sd' % (nowd)], df['ma5d'], df['ma10d'], df['nvol'] / radio_t, df['lastv%sd' % (nowd)])
                   else:
                       df['perc_n']=map(cct.func_compute_percd2020, df['open'], df['close'], df['high'], df['low'], df['lasto%sd' % nowd], df['llastp'],
                                         df['lasth%sd' % (nowd)], df['lastl%sd' % (nowd)], df['ma5d'], df['ma10d'], df['nvol'] / radio_t, df['lastv%sd' % (nowd)])
               else:
                   nowd, per1d=1, 1
                   # print  df['per%sd' % da+1], df['lastp%sd' % (da)], df['lasth%sd' % (da)], df['lastl%sd' % (da)], df['high'], df['low']
                   df['perc_n']=map(cct.func_compute_percd2020, df['open'], df['close'], df['high'], df['low'], df['lasto%sd' % nowd], df['llastp'],
                                         df['lasth%sd' % (nowd)], df['lastl%sd' % (nowd)], df['ma5d'], df['ma10d'], df['nvol'] / radio_t, df['lastv%sd' % (nowd)])

            for co in perc_col:
                df[co] = (df[co] + df['perc_n']).map(lambda x: int(x))
            '''

            # for co in per_col:
            # df[co] = (df[co] + df['percent']).map(lambda x: int(x))

            # print "percT:%.2f"%(time.time()-time_ss)
        else:
            df['percent'] = (map(
                lambda x, y: round((x - y) / y * 100, 1)
                if int(y) > 0 else 0, df.buy, df.lastp1d))
            # df.loc['002204'].percent
            # -15.4
            # ipdb> df.loc['002204'].ma10d
            # 3.2000000000000002
            # ipdb> df.loc['002204'].ma5d
            # 3.2999999999999998
    if 'fib' not in df.columns:
        df['fib'] = 0
    # else:

    co2int = ['boll', 'op', 'ratio', 'fib', 'fibl', 'df2']
    # co2int.extend([co for co in df.columns.tolist()
    #                if co.startswith('perc') and co.endswith('d')])
    co2int.extend(['top10', 'topR'])
    co2int = [inx for inx in co2int if inx in df.columns]

    for co in co2int:
        df[co] = df[co].astype(int)

    # if down:
    #     # if 'nlow' in df.columns:
    #     #     if 'max5' in df.columns:
    #     #         # df = df[(df.hmax >= df.ene) & (df.nlow >= df.low) & (df.low <> df.high) & (((df.low < df.hmax) & (df.high > df.cmean)) | (df.high > df.max5))]
    #     #         df = df[ (((df.buy > df.ene) & (df.volume / radio_t > 1.5)) ) |  (((df.lastv1d > df.lvol * 1.5) & (df.lastv1d > df.lvol * 1.5)) & (df.lastp1d > df.ene) )]
    #     #     else:
    #     #         df = df[ (((df.buy > df.ene) & (df.volume / radio_t > 1.5)) ) |  (((df.lastv1d > df.lvol * 1.5) )  )]
    #     # else:
    #     #     # df = df[ (df.max5 >= df.ene) & (df.low <> df.high) & (((df.low < df.hmax) & (df.close > df.cmean)) | (df.high > df.cmean))]
    #     #     df = df[ (((df.buy > df.ene) & (df.volume / radio_t > 1.5)) )  | (((df.lastp1d > df.ene) ) | ((df.buy > df.max5)|(df.buy > df.ene)) | (df.max5 >= df.ene)  | (df.high > df.cmean) )]
    #     return df

    if cct.get_work_time() and 'b1_v' in df.columns and 'nvol' in df.columns:
        df = df[(df.b1_v > 0) | (df.nvol > 0)]

    if (cct.get_now_time_int() > 915 and cct.get_now_time_int() < 926):
        df['b1_v'] = df['volume']
    else:
        dd = df[df.percent < 10]
        dd['b1_v'] = dd['volume']
        df = cct.combine_dataFrame(df, dd.loc[:, ['b1_v']])
        # print "t:%0.2f"%(time.time()-time_ss)

        # if int(market_value) < 3 and 930 < cct.get_now_time_int():
        #     if 'nlow' in df.columns:
        #         # df = df[((df.per1d < 3) & (df.nlow >= df.llastp)) | ((df.per1d > 5) & (df.buy > df.llastp))]
        #         df = df[((df.per1d < 3) & (df.nlow >= df.llastp)) | ((df.per1d > 5) & (df.buy > df.llastp))]
        #     else:
        #         df = df[((df.per1d < 3) & (df.open > df.llastp)) | ((df.per1d > 5) & (df.buy > df.llastp))]

    # else:
    #     if 'fib' in df.columns:
    #         df = df[df.fib <= 5]

    # log.error("perc%sd"%(market_value))

    # elif market_key is not None and market_key == '2':
    #     if market_value in ['1', '2']:
    #         df['dff'] = (map(lambda x, y, z: round((x + (y if z > 20 else 3 * y)), 1), df.dff.values, df.volume.values, df.ratio.values))

    # df['df2'] = (map(lambda x, y, z: w=round((x - y) / z * 100, 1), df.high.values, df.low.values, df.llastp.values))
    # df['df2'] = (map(func_compute_df2, df.close.values, df.llastp.values,df.high.values, df.low.values,df.ratio.values))
    # df['df2'] = (map(func_compute_df2, df.close.values, df.llastp.values,df.high.values, df.low.values))
    '''
    filter_up= 'ma5d'
    filter_dn= 'ma10d'
    if ma5d and filter_up in df.columns:
        if filter_dn in df.columns:
            if market_key is not None and market_key == '3':
                df= df[(df.buy >= df[filter_up]) & (
                    df.buy * 1.02 >= df[filter_dn] * ct.changeRatio)]
            else:
                df= df[(df.buy >= df[filter_up])]
        else:
            df= df[df.buy >= df[filter_up] * ct.changeRatio]
    '''

    # df = df[(df.lvolume > df.lvol * 0.9) & (df.lvolume > df.lowvol * 1.1)]

    # if 'nlow' in df.columns and 932 < cct.get_now_time_int() < 1030:

    if ene:
        pass
        if 'nclose' in df.columns:
            # df = df[ ((df.buy > df.ene) ) | ((df.buy > df.upper) & ( df.nclose > df.cmean))]
            df = df[((df.buy > df.llastp)) |
                    ((df['nclose'] > df['ene'] * ct.changeRatio) &
                     (df['percent'] > -3) & (df.volume > 1.5)) |
                    ((df['nclose'] > df['upper'] * ct.changeRatio) &
                     (df['buy'] > df['upper'] * ct.changeRatioUp)) |
                    ((df['llastp'] > df['upper']) &
                     (df['nclose'] > df['upper']))]
        else:
            df = df[((df.buy > df.llastp)) | ((df.buy > df.ene)) |
                    ((df.buy > df.upper) & (df.close > df.cmean))]

        if 'nlow' in df.columns and 930 < cct.get_now_time_int():
            # for col in ['nhigh', 'nclose', 'nlow','nstd']:
            #     df[col] = df[col].apply(lambda x: round(x, 2))
            if 'nhigh' in df.columns and 'nclose' in df.columns:
                # ncloseRatio = map(lambda x, y: x * ct.changeRatio if x * ct.changeRatio > y else y, df.nclose, df.nlow)
                df['ncloseRatio'] = map(lambda x: x * 0.99, df.nclose)
                df['nopenRatio'] = map(lambda x: x * 0.99, df.open)
                # nhighRatio = map(lambda x, y: x * ct.changeRatio if x * ct.changeRatio > y else y, df.nhigh, df.nclose)
                # if cct.get_now_time_int() > ct.nlow_limit_time:

                #           name   open    low   high  close  nclose   nlow  nhigh  nstd  ticktime
                # code
                # 601899  紫金矿业   4.25   4.24   4.69   4.69    4.52   4.24   4.42  0.12  15:00:00
                # 603917  合力科技  27.95  27.69  31.54  31.54   30.46  27.69  30.00  0.70  15:00:00
                # 300713   英可瑞  81.00  81.00  89.82  89.77   87.53  80.90  86.36  1.75  15:02:03
                # 000933  神火股份   9.07   9.02  10.00  10.00    9.71   9.02   9.44  0.24  15:02:03
                # 600050  中国联通   6.49   6.37   6.51   6.41    6.44   6.44   6.51  0.02  15:00:00
                # 002350  北京科锐  10.17  10.17  10.75  10.23   10.31  10.17  10.75  0.07  15:02:03
                # 603363  傲农生物  17.49  16.91  18.35  18.35   17.35  17.18  18.00  0.34  15:00:00
                # 000868  安凯客车   8.77   8.53   8.82   8.82    8.82   8.53   8.82  0.01  15:02:03
                # 002505  大康农业   2.91   2.86   2.99   2.89    2.91   2.90   2.99  0.02  15:02:03
                # 601939  建设银行   7.50   7.41   7.61   7.55    7.50   7.43   7.52  0.05  15:00:00
                # 600392  盛和资源  16.85  16.81  18.63  18.63   17.84  16.81  17.51  0.69  15:00:00 (11, 41)
                # 603676   卫信康  17.44  16.95  17.96  17.82   17.34  17.03  17.77  0.18  15:00:00
                if 'nstd' in df.columns:
                    df['stdv'] = map(lambda x, y: round(x / y * 100, 1),
                                     df.nstd, df.open)

                # top_temp[:40][['nstd','stdv','name','volume','dff','percent']]
                # top_temp.loc['603363'][['nstd','stdv','name','volume','high','nhigh','percent','open','nclose']]

                # df['stdv'] = map(lambda x, y, z: round(z / (x / y * 100), 1), df.nstd, df.open, df.volume)

                # df.loc['002906'][['open','nclose','close','ncloseRatio','nopenRatio','low','nlow']]

                df = df[(df.low > df.upper) |
                        (((df.nopenRatio <= df.nclose) & (df.low >= df.nlow) &
                          (df.close >= df.ncloseRatio)) |
                         ((df.nopenRatio <= df.nclose) &
                          (df.close >= df.ncloseRatio) &
                          (df.high >= df.nhigh)))]
                # else:
                # df = df[(((df.low >= df.nlow) & (df.close >= ncloseRatio)) | ((df.close >= ncloseRatio) & (df.close > nhighRatio)))]
            else:
                df = df[((df.low >= df.nlow) &
                         (df.close > df.llastp * ct.changeRatio))]
            # if 'nhigh' in df.columns and 'nclose' in df.columns:
            #     if cct.get_now_time_int() > ct.nlow_limit_time:
            #         df = df[(df.low >= df.nlow) & ((df.open > df.llastp * ct.changeRatio) & (df.nclose > df.llastp * ct.changeRatio)) &
            #                 (((df.low >= df.nlow) & (df.close >= df.nclose)) | ((df.close >= df.nclose) & (df.close > df.nhigh * ct.changeRatio) & (df.high >= df.nhigh)))]
            #     else:
            #         df = df[((df.open > df.llastp * ct.changeRatio) & (df.close > df.llastp * ct.changeRatio)) &
            #                 (((df.low >= df.nlow) & (df.close >= df.nclose)) | ((df.close >= df.nclose) & (df.close > df.nhigh * ct.changeRatio)))]
            # else:
            #     df = df[((df.low >= df.nlow) & (df.close > df.llastp))]

        if filter:

            if cct.get_now_time_int() > 915 and cct.get_now_time_int() <= 1000:
                df = df[((df.buy > df.llastp)) |
                        (df.buy > df.hmax * ct.changeRatio) |
                        (df.buy < df.lmin * ct.changeRatioUp)]
                # df = df[(df.buy > df.hmax * ct.changeRatio) & (df.low > df.llastp)]
                # df = df[(df.buy > df.cmean * ct.changeRatioUp) | (df.open > df.llastp)]
                # df = df[df.buy > df.cmean]

            elif cct.get_now_time_int() > 1000 and cct.get_now_time_int(
            ) <= 1430:
                df = df[((df.buy > df.llastp)) |
                        (df.buy > df.hmax * ct.changeRatio) |
                        (df.buy < df.lmin * ct.changeRatioUp)]
                # df = df[(df.buy > df.hmax * ct.changeRatio) | (df.low > df.llastp)]
                # df = df[(df.buy > df.hmax * ct.changeRatio) & (df.low > df.llastp)]

                # df = df[(df.buy > df.cmean * ct.changeRatioUp) | (df.open > df.llastp)]
                # df = df[df.buy > df.cmean]
            else:
                df = df[((df.buy > df.llastp)) |
                        (df.buy > df.hmax * ct.changeRatio) |
                        (df.buy < df.lmin * ct.changeRatioUp)]

                # df = df[(df.buy > df.hmax * ct.changeRatio) | (df.low > df.llastp)]
                # df = df[(df.buy > df.hmax * ct.changeRatio) & (df.low > df.llastp)]

                # df = df[(df.buy > df.cmean * ct.changeRatioUp) | (df.open > df.llastp)]
                # df = df[df.buy > df.cmean]

            if 'vstd' in df.columns:
                # df = df[(df.lvol * df.volume > (df.vstd + df.lvol)) | ((df.percent > -10) & (df.hv / df.lv > 1.5))]
                # dd = df.loc['000760'] dd.hv/dd.lv,dd.volume
                df['hvRatio'] = map(
                    lambda x, y: round(x / y / cct.get_work_time_ratio(), 1),
                    df.hv, df.lv)
                df['volRatio'] = (map(lambda x, y: round(x / y / radio_t, 1),
                                      df.nvol.values, df.lv.values))

                # df = df[(df.lvol * df.volume > (df.vstd + df.lvol)) | ((df.percent > -5) & (df.hv / df.lv > 3))]

                # if 1000 < cct.get_now_time_int() < 1450:
                #     df = df[ (3 < df.ratio) & (df.ratio < 20)]
                if 'nclose' in df.columns:
                    # df = df[((df.hvRatio > df.volRatio) & ((df.buy > df.lastp) & (df.nclose > df.lastp))) | ((
                    df = df[(((df.buy > df.lastp) & (df.nclose > df.lastp))) |
                            (((df.percent > -5) &
                              ((df.vstd + df.lvol) * 1.2 < df.nvol) &
                              (df.nvol > (df.vstd + df.lvol))))]
                else:
                    # df = df[((df.hvRatio > df.volRatio) & ((df.buy > df.lastp))) | ((
                    df = df[(((df.buy > df.lastp))) |
                            (((df.percent > -5) &
                              ((df.vstd + df.lvol) * 1.2 < df.nvol) &
                              (df.nvol > (df.vstd + df.lvol))))]
                # [dd.lvol * dd.volume > (dd.vstd + dd.lvol) | dd.lvol * dd.volume >(dd.ldvolume + dd.vstd]
            # print df.loc['000801']

            if percent:
                pass
                '''
                if 'stdv' in df.columns and 926 < cct.get_now_time_int():
                    # df = df[((df.volume > 2 * cct.get_work_time_ratio()) & (df.percent > -3)) | ((df.stdv < 1) &
                    #                (df.percent > 2)) | ((df.lvolume > df.lvol * 0.9) & (df.lvolume > df.lowvol * 1.1))]
                    
                    df_index = tdd.getSinaIndexdf()
                    if isinstance(df_index, type(pd.DataFrame())):
                        df_index['volume'] = (map(lambda x, y: round(x / y / radio_t, 1), df_index.nvol.values, df_index.lastv1d.values))
                        index_vol = df_index.loc['999999'].volume
                        if 'percent' in df_index.columns and '999999' in df_index.index:
                            index_percent = df_index.loc['999999'].percent
                        else:
                            # import ipdb;ipdb.set_trace()
                            log.error("index_percent" is None)
                            index_percent = 0

                        index_boll = df_index.loc['999999'].boll
                        index_op = df_index.loc['999999'].op
                        # df = df[((df.percent > -3) | (df.volume > index_vol)) & (df.percent > index_percent)]
                        # df = df[((df.percent > -1) | (df.volume > index_vol * 1.5)) & (df.percent > index_percent)  & (df.boll >= index_boll)]
                        df = df[((df.percent > -1) | (df.volume > index_vol * 1.5)) & (df.percent > index_percent)]
                    else:
                        print ("df_index is Series",df_index.T)
                else:
                    df = df[((df.volume > 1.2 * cct.get_work_time_ratio()) & (df.percent > -3))]
                '''
                # df = df[((df['buy'] >= df['ene'])) | ((df['buy'] < df['ene']) & (df['low'] > df['lower'])) | ((df['buy'] > df['upper']) & (df['low'] > df['upper']))]
                # df = df[(( df['ene'] * ct.changeRatio < df['open']) & (df['buy'] > df['ene'] * ct.changeRatioUp)) | ((df['low'] > df['upper']) & (df['close'] > df['ene']))]

                # df = df[(( df['ene'] < df['open']) & (df['buy'] < df['ene'] * ct.changeRatioUp))]

                # df = df[(df.per1d > 9) | (df.per2d > 4) | (df.per3d > 6)]
                # df = df[(df.per1d > 0) | (df.per2d > 4) | (df.per3d > 6)]
            # time_ss=time.time()
            # codel = df.index.tolist()
            # dm = tdd.get_sina_data_df(codel)
            # results = cct.to_mp_run_async(getab.Get_BBANDS, codel,'d',5,duration,dm)
            # bolldf = pd.DataFrame(results, columns=['code','boll'])
            # bolldf = bolldf.set_index('code')
            # df = cct.combine_dataFrame(df, bolldf)
            # print "bollt:%0.2f"%(time.time()-time_ss),
            per3d_l = 2
            percent_l = -1
            op_l = 3
            # if 'boll' in df.columns:
            #     if 915 < cct.get_now_time_int() < 950:
            #         # df = df[(df.boll >= boll) | ((df.percent > percent_l) & (df.op > 4)) | ((df.percent > percent_l) & (df.per3d > per3d_l))]
            #         # df = df[((df.percent > percent_l) & (df.op > 4)) | ((df.percent > percent_l) & (df.per3d > per3d_l))]
            #         pass
            #     elif 950 < cct.get_now_time_int() < 1501:
            #         # df = df[(df.boll >= boll) | ((df.low <> 0) & (df.open == df.low) & (((df.percent > percent_l) & (df.op > op_l)) | ((df.percent > percent_l) & (df.per3d > per3d_l))))]
            #         # df = df[(df.boll >= boll) & ((df.low <> 0) & (df.open >= df.low *
            #         # ct.changeRatio) & (((df.percent > percent_l)) | ((df.percent >
            #         # percent_l) & (df.per3d > per3d_l))))]
            #         df = df[(df.boll >= boll)]
            #     # else:
            # df = df[(df.boll >= boll) | ((df.low <> 0) & (df.open == df.low) &
            # (((df.percent > percent_l) & (df.op > op_l)) | ((df.percent > percent_l)
            # & (df.per3d > per3d_l))))]

        # if 945 < cct.get_now_time_int() and market_key is None:
        #     df.loc[df.percent >= 9.94, 'percent'] = -10

    # else:
    #     # df['upper'] = map(lambda x: round((1 + 11.0 / 100) * x, 1), df.ma10d)
    #     # df['lower'] = map(lambda x: round((1 - 9.0 / 100) * x, 1), df.ma10d)
    #     # df['ene'] = map(lambda x, y: round((x + y) / 2, 1), df.upper, df.lower)
    #     # df = df[((df['buy'] >= df['ene'])) | ((df['buy'] < df['ene']) & (df['low'] > df['lower'])) | ((df['buy'] > df['upper']) & (df['low'] > df['upper']))]
    #     # df = df[(( df['ene'] * ct.changeRatio < df['open']) & (df['buy'] > df['ene'] * ct.changeRatioUp)) | ((df['low'] > df['upper']) & (df['close'] > df['ene']))]
    #     if 'nclose' in df.columns:
    #         # df = df[((df['nclose'] > df['ene'] * ct.changeRatio) & (df['percent'] > -3) & (df.volume > 1.5)) |
    #         #         ((df['nclose'] > df['upper'] * ct.changeRatio) & (df['buy'] > df['upper'] * ct.changeRatioUp)) | ((df['llastp'] > df['upper']) & (df['nclose'] > df['upper']))]
    #         df = df[(df.nclose > df.cmean)]
    #     else:
    #         df = df[(df.buy > df.cmean)]

    print("bo:%0.1f" % (time.time() - time_s)),

    df['ral'] = (map(lambda x, y: round((x + y), 1), df.percent, df.ral))
    df['ra'] = (map(lambda x, y: round((x + y), 1), df.percent, df.ra))
    return df
def get_market_price_sina_dd_realTime(dp='',vol='0',type='0'):
    '''
    input df count and merge price to df
    '''

    if len(dp)==0:
            dp=get_sina_Market_json()
    if len(dp)>10:
        # df=df.dropna('index')
        # df=df.drop_duplicates('code')
        # dm=pd.merge(df,dp,on='name',how='left')
        # print(type(dp))
#        dp=dp.drop_duplicates('code')
        log.info("Market_realTime:%s"%len(dp))
        # dp=dp.set_index('code')
        dp=dp.fillna(0)
        dp=dp.dropna('index')
        # if dp[:1].volume.values >0:
        # log.debug("dp.volume>0:%s"%dp[:1].volume.values)
        # dp['volume']=dp['volume'].apply(lambda x:round(float(x)/100,1))
        # dp=dp.loc[:,'trade':].astype(float)
        log.info("DP:%s" % dp[:1].open)

        # if len(dp[:10][dp[:10]['buy'] > 0]) > 2 and len(dp[:10][dp[:10]['percent'] == 0]) > 2:
        #     if 'close' in dp.columns:
        #         if len(dp[:5][dp[:5]['close'] > 0]) > 2:
        #             dp['percent'] = (map(lambda x, y: round((x - y) / y * 100, 1), dp['buy'].values, dp['close'].values))
        #             log.info("DP-1-percent==0:%s" % dp[:1].percent)

        # dp.loc[dp.percent>9.9,'percent']=10

        dp['dff']=0
        
        df=get_sina_all_json_dd(vol,type)

        if len(df)>5:

            # print df[df.couts>0][:2]
            dm = cct.combine_dataFrame(dp,df)
            log.info("top_now:main:%s subobject:%s dm:%s "%(len(dp),len(df),len(dm)))
#            dm=pd.merge(dp,df,on='name',how='left')
            log.debug("dmMerge:%s"%dm.columns)
            # print dm[dm.couts>0][:2]
            dm.couts=dm.couts.fillna(0)
            dm.prev_price=dm.prev_price.fillna(0.0)
            dm.couts=dm.couts.astype(int)
#            dm=dm.drop_duplicates('code')
#            dm=dm.set_index('code')
            dm.rename(columns={'prev_price': 'prev_p'}, inplace=True)
            # print dm.sort_values(by=['couts','percent','dff','ratio'],ascending=[0,0,0,1])[:2]
            # dm=dm.fillna(int(0))
            # dm.ratio=dm.ratio
            # dm=dm.loc[:,ct.SINA_Market_Clean_UP_Columns]
        else:
            # if len(dp) > 0 and 'code' in dp.columns:
            if len(dp) > 0:
                if 'code' in dp.columns:dp=dp.set_index('code')
                dp['couts'] = 0
                dp['prev_p'] = 0
                dm = dp
            else:
                log.error('dp is None')
                dm = ''
            # dm=dp.loc[:,ct.SINA_Market_Clean_Columns]
            # dm=dp.loc[:,ct.SINA_Market_Clean_UP_Columns]
            # dm['prev_p']=0.0
                    # ['name','buy','dff','percent','ratio','high','open','volume','low','couts']
                    #['name','buy','dff','percent','trade','high','ratio','volume','couts']

    else:
        dm=''
    # print type(dm)

    return dm
Exemple #10
0
def get_dfcfw_rzrq_SHSZ2(url=ct.DFCFW_RZYE2sh):
    data = {}
    log.info("rzrq:%s" % (url))
    dd = pd.DataFrame()
    # rzdata = cct.get_url_data(url)
    #shrzrq2
    rzdata = cct.get_url_data_R(ct.DFCFW_RZYE2sh)
    # rzdata = rzdata.replace('var HIoUWbQY=','')
    # rz_dic = re.findall('{"result"[\D\d]+?}', rzdata.encode('utf8'))
    rz_dic = re.findall('{"result":[\D\d]+.', rzdata.encode('utf8'))[0]
    rz_dic = rz_dic.replace(';', '')
    # ct.DFCFW_RZYE2sh
    rzdata_dic = json.loads(rz_dic)
    rzdata_list = (rzdata_dic['result']['data'])
    df = pd.DataFrame(rzdata_list, columns=ct.dfcfw_rzye_columns2sh)
    # ['DIM_DATE','RZYEZB', 'RQCHL10D', 'RQCHL3D', 'RQYE', 'RQMCL', 'RQYL', 'R]
    # df.index = pd.to_datetime(df.index,format='%Y-%m-%d')
    # rz_dic = re.findall('{"tdate"[\D\d]+?}', rzdata.encode('utf8'))
    df.rename(columns={'DIM_DATE': 'tdate'}, inplace=True)
    # RZYE->rzye_hs rzye_h none rzye_h none
    df.rename(columns={'RZYE': 'sh'}, inplace=True)
    # df.rename(columns={'rzye_h': 'sh'}, inplace=True)
    # df.rename(columns={'rzye_h': 'sz'}, inplace=True)
    df.tdate = df.tdate.apply(lambda x: x[:10])
    df = df.set_index('tdate')
    dd = df.loc[:, ['sh']]

    #szrzrq
    rzdata = cct.get_url_data_R(ct.DFCFW_RZYE2sz)
    # rzdata = rzdata.replace('var HIoUWbQY=','')
    # rz_dic = re.findall('{"result"[\D\d]+?}', rzdata.encode('utf8'))
    rz_dic = re.findall('{"result":[\D\d]+.', rzdata.encode('utf8'))[0]
    rz_dic = rz_dic.replace(';', '')

    # ct.DFCFW_RZYE2sh
    rzdata_dic = json.loads(rz_dic)
    rzdata_list = (rzdata_dic['result']['data'])
    df = pd.DataFrame(rzdata_list, columns=ct.dfcfw_rzye_columns2sh)
    # ['DIM_DATE','RZYEZB', 'RQCHL10D', 'RQCHL3D', 'RQYE', 'RQMCL', 'RQYL', 'R]
    # df.index = pd.to_datetime(df.index,format='%Y-%m-%d')

    # rz_dic = re.findall('{"tdate"[\D\d]+?}', rzdata.encode('utf8'))
    df.rename(columns={'DIM_DATE': 'tdate'}, inplace=True)
    # RZYE->rzye_hs rzye_h none rzye_h none
    df.rename(columns={'RZYE': 'sz'}, inplace=True)
    # df.rename(columns={'rzye_h': 'sh'}, inplace=True)
    # df.rename(columns={'rzye_h': 'sz'}, inplace=True)
    df.tdate = df.tdate.apply(lambda x: x[:10])
    df = df.set_index('tdate')
    dd = cct.combine_dataFrame(dd, df.loc[:, ['sz']])
    df = dd

    df['sh'] = df['sh'].apply(lambda x: round(
        (float(x) / 1000 / 1000 / 100), 2))
    df['sz'] = df['sz'].apply(lambda x: round(
        (float(x) / 1000 / 1000 / 100), 2))
    df['all'] = map(lambda x, y: round(x + y, 1), df.sh.values, df.sz.values)

    # data=get_tzrq(url,today)
    # yestoday = cct.last_tddate(1)
    # log.debug(today)
    # beforeyesterday =  cct.last_tddate(days=2)

    def get_days_data(days=1, df=None):
        rzrq_status = 1
        # data=''
        da = 0
        i = 0
        data2 = ''
        while rzrq_status:
            for x in range(days, 10):
                yestoday = cct.last_tddate(x)
                if yestoday in df.index:
                    data2 = df.loc[yestoday]
                    # log.info("yestoday:%s data:%s" % (yestoday, data2))
                    break
                    # print da
                else:
                    log.error("%s:None" % (yestoday))
            rzrq_status = 0
        return data2

    data1 = get_days_data(1, df)
    data2 = get_days_data(2, df)

    # data = df.loc[yestoday]
    # data2 = df.loc[beforeyesterday]
    # log.info("data1:%s,data2:%s", data1, data2)
    if len(data2) > 0:
        # print data1
        data['all'] = round(data1.loc['all'], 2)
        data['sh'] = round(data1.loc['sh'], 2)
        data['sz'] = round(data1.loc['sz'], 2)
        data['dff'] = round(data1.loc['all'] - data2.loc['all'], 2)
        data['shrz'] = round(data1.loc['sh'] - data2.loc['sh'], 2)
        data['szrz'] = round(data1.loc['sz'] - data2.loc['sz'], 2)
    else:
        log.error("df.index:%s" % (df.index.values[0]))
        data['dff'] = 'error'
        data['all'] = 0
        data['sh'] = 0
        data['sz'] = 0
        data['shrz'] = 0
        data['szrz'] = 0
    if len(data) == 0:
        log.error("Fund_f NO Url:%s" % url)

    return data