def evalcmd(dir_mo): end = True import readline # import rlcompleter # readline.set_completer(cct.MyCompleter(dir_mo).complete) readline.parse_and_bind('tab:complete') while end: # cmd = (cct.cct_raw_input(" ".join(dir_mo)+": ")) cmd = (cct.cct_raw_input(": ")) # cmd = (cct.cct_raw_input(dir_mo.append(":"))) # if cmd == 'e' or cmd == 'q' or len(cmd) == 0: # print cmd,":",len(cmd) if cmd == 'e' or cmd == 'q': break elif len(cmd) == 0: continue else: try: if not cmd.find(' =') < 0: exec(cmd) else: print eval(cmd) print '' except Exception, e: print e
def evalcmd(dir_mo): end = True import readline # import rlcompleter # readline.set_completer(cct.MyCompleter(dir_mo).complete) readline.parse_and_bind('tab:complete') while end: # cmd = (cct.cct_raw_input(" ".join(dir_mo)+": ")) cmd = (cct.cct_raw_input(": ")) # cmd = (cct.cct_raw_input(dir_mo.append(":"))) # if cmd == 'e' or cmd == 'q' or len(cmd) == 0: if cmd == 'e' or cmd == 'q': break elif len(cmd) == 0: continue else: try: print(eval(cmd)) print('') except Exception as e: print(e) evalcmd(dir_mo) break
cct.sleep(ct.duration_sleep_time) else: # top_all = pd.DataFrame() cct.sleeprandom(60) time_s = time.time() print "." break else: raise KeyboardInterrupt("StopTime") except (KeyboardInterrupt) as e: # try: # st = cct.cct_raw_input(status # except (KeyboardInterrupt) as e: # st = '' # pass st = cct.cct_raw_input(ct.RawMenuArgmain() % (market_sort_value)) if len(st) == 0: status = False elif len(st.split()[0]) == 1 and st.split()[0].isdigit(): st_l = st.split() st_k = st_l[0] if st_k in ct.Market_sort_idx.keys() and len(top_all) > 0: st_key_sort = st market_sort_value, market_sort_value_key = ct.get_market_sort_value_key(st_key_sort, top_all=top_all) else: log.error("market_sort key error:%s" % (st)) cct.sleeprandom(5) elif st.lower() == 'r': dir_mo = eval(cct.eval_rule)
start = cct.day8_to_day10(args.start) end = cct.day8_to_day10(args.end) get_linear_model_histogramDouble(code, args.ptype, args.dtype, start, end, args.vtype) # get_linear_model_histogramDouble(code, args.ptype, args.dtype, start, end, args.vtype) # candlestick_powercompute(code,start, end) op, ra, st, days = pct.get_linear_model_status( code, start=start, end=end, filter=args.filter) print "code:%s op:%s ra:%s start:%s" % (code, op, ra, st) # get_linear_model_status(code, dtype=args.dtype, start=start, end=end, filter=args.filter,dl=args.dl) sys.exit(0) except (KeyboardInterrupt) as e: print "KeyboardInterrupt:", e st = cct.cct_raw_input("status:[go(g),clear(c),quit(q,e)]:") if st == 'q' or st == 'e': sys.exit(0) else: num_input = '' except (IOError, EOFError, Exception) as e: print "Exception:", e import traceback traceback.print_exc() # st = cct.cct_raw_input("status:[go(g),clear(c),quit(q,e)]:") # if st == 'q' or st == 'e': # sys.exit(0) # else: num_input = ''
def get_roll_mean_all(single=True, tdx=False, app=True, duration=100, ma_250_l=1.02, ma_250_h=1.11): # df = tdd.search_Tdx_multi_data_duration('tdx_all_df_300', 'all_300', df=None,code_l=code_list, start=start, end=None, freq=None, col=None, index='date') block_path = tdd.get_tdx_dir_blocknew() + '060.blk' if not app and cct.get_file_size( block_path) > 100 and cct.creation_date_duration(block_path) == 0: print "It's Today Update" return True code_list = sina_data.Sina().market('all').index.tolist() print "all code:", len(code_list) if duration < 300: h5_fname = 'tdx_all_df' + '_' + str(300) h5_table = 'all' + '_' + str(300) else: h5_fname = 'tdx_all_df' + '_' + str(900) h5_table = 'all' + '_' + str(900) # df = tdd.search_Tdx_multi_data_duration('tdx_all_df_300', 'all_300', df=None,code_l=code_list, start='20150501', end=None, freq=None, col=None, index='date') df = tdd.search_Tdx_multi_data_duration(h5_fname, h5_table, df=None, code_l=code_list, start=None, end=None, freq=None, col=None, index='date') # df = tdd.search_Tdx_multi_data_duration(h5_fname, h5_table, df=None,code_l=code_list, start=None, end=None, freq=None, col=None, index='date',tail=1) code_uniquelist = df.index.get_level_values('code').unique() code_select = code_uniquelist[random.randint(0, len(code_uniquelist) - 1)] print round(time.time() - time_s, 2), df.index.get_level_values( 'code').unique().shape, code_select, df.loc[code_select].shape # df.groupby(level=[0]),df.index.get_level_values(0) # len(df.index.get_level_values('code').unique()) # df = df[~df.index.duplicated(keep='first')] dfs = df def get_groupby_mean_median_close(dfs): groupd = dfs.groupby(level=[0]) df = groupd['close'].agg({'median': 'median', 'mean': 'mean'}) df['close'] = groupd.tail(1).reset_index().set_index(['code'])['close'] # dfs['mean'] = groupd['close'].agg('mean') # dfs['median'] = groupd['close'].agg('median') # dfs = dfs.fillna(0) # idx = pd.IndexSlice # mask = ( (dfs['mean'] > dfs['median']) # & (dfs['close'] > dfs['mean']) # ) # df=dfs.loc[idx[mask, :]] df = df[(df['mean'] > df['median']) & (df['close'] > df['mean'])] # dt_low = None # if dl == 1: # dfs = groupd.tail(1) # print("dfs tail1") # else: # dl = 30 # dindex = tdd.get_tdx_Exp_day_to_df( # '999999', dl=dl).sort_index(ascending=False) # dt = tdd.get_duration_price_date('999999', df=dindex) # dt = dindex[dindex.index >= dt].index.values # dt_low = dt[-1] # dtlen = len(dt) if len(dt) >0 else 1 # dfs = groupd.tail(dtlen) # print("dfs tail:%s dt:%s"%(dtlen,dt)) # dfs = get_multi_date_duration(dfs,dt[-1]) return df groupd = dfs.groupby(level=[0]) # rollma = ['5','10','60','100','200'] # rollma = ['5','10','250'] if duration < 300: rollma = ['10'] else: rollma = ['10', '250'] rollma.extend([str(duration)]) # import ipdb;ipdb.set_trace() # df.loc['300130'][:2] # dfs['mean'] = groupd['close'].agg('mean') # dfs['median'] = groupd['close'].agg('median') for da in rollma: cumdays = int(da) dfs['ma%d' % cumdays] = groupd['close'].apply(pd.rolling_mean, cumdays) if cumdays == 10: dfs['upper'] = dfs['ma%d' % cumdays].apply(lambda x: round( (1 + 11.0 / 100) * x, 1)) dfs['lower'] = dfs['ma%d' % cumdays].apply(lambda x: round( (1 - 9.0 / 100) * x, 1)) dfs['ene'] = map(lambda x, y: round((x + y) / 2, 1), dfs['upper'], dfs['lower']) # 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) # dfs['amount%d'%cumdays] = groupd['amount'].apply(pd.rolling_mean, cumdays) # df.ix[df.index.levels[0]] #df.ix[df.index[len(df.index)-1][0]] #last row # dfs = tdd.search_Tdx_multi_data_duration(df=dfs,code_l=code_list, start='20170918', end='20170918', freq=None, col=None, index='date') # print dfs[:1],len(dfs) # groupd.agg({'low': 'min'}) # '''idx mask filter''' # ''' dt_low = None df_idx = None if single: dfs = groupd.tail(1) print("dfs tail1") else: dl = 30 dindex = tdd.get_tdx_Exp_day_to_df('999999', dl=dl).sort_index(ascending=False) dt = tdd.get_duration_price_date('999999', df=dindex) dt = dindex[dindex.index >= dt].index.values dt_low = dt[-1] dtlen = len(dt) if len(dt) > 0 else 1 dfs = groupd.tail(dtlen) # import ipdb;ipdb.set_trace() df_idx = get_groupby_mean_median_close(dfs) print("dfs tail:%s dt:%s" % (dtlen, dt)) dfs = get_multi_date_duration(dfs, dt[-1]) # groupd2 = dfs.groupby(level=[0]) # dfs['ma%d'%cumdays] = groupd['close'].apply(pd.rolling_mean, cumdays) # dfs.reset_index().groupby(['code'])['date'].transform('count') single = True dfs = dfs.fillna(0) idx = pd.IndexSlice # mask = (dfs[('ma%s')%(rollma[0])] > dfs[('ma%s')%(rollma[1])]) & (dfs[('ma%s')%(rollma[-1])] > 0) & (dfs[('close')] > dfs[('ma%s')%(rollma[0])]) & (dfs[('close')] > dfs[('ma%s')%(rollma[-1])]) # mask = (dfs[('ma%s')%(rollma[0])] > dfs[('ma%s')%(rollma[1])]) & (dfs[('ma%s')%(rollma[-1])] > 0) & (dfs[('close')] > dfs[('ma%s')%(rollma[1])]) & (dfs[('close')] > dfs[('ma%s')%(rollma[-1])]) # mask = (dfs[('ma%s')%(rollma[0])] > dfs[('ma%s')%(rollma[1])]) & (dfs[('ma%s')%(rollma[-1])] > 0) & (dfs[('close')] > dfs[('ma%s')%(rollma[-1])]) # mask = ( (dfs[('ma%s')%(rollma[0])] > 0) & (dfs[('ma%s')%(rollma[-1])] > 0) & (dfs[('close')] > dfs[('ma%s')%(rollma[-1])]) & (dfs[('close')] > dfs[('ma%s')%(rollma[0])])) # mask = ( (dfs[('ma%s')%(rollma[0])] > 0) & (dfs[('ma%s')%(rollma[-1])] > 0) # & (dfs[('close')] > dfs[('ma%s')%(rollma[-1])]*ma_250_l) # & (dfs[('close')] < dfs[('ma%s')%(rollma[-1])]*ma_250_h) # & (dfs[('close')] > dfs[('ma%s')%(rollma[0])])) # & (dfs['mean'] > dfs['median']) # & (dfs['close'] > dfs['mean']) if len(rollma) > 1: mask = ((dfs[('ma%s') % (rollma[0])] > 0) & (dfs[('ma%s') % (rollma[-1])] > 0) & (dfs[('ma%s') % (rollma[0])] > dfs[('ma%s') % (rollma[-1])]) & (dfs[('close')] > dfs[('ma%s') % (rollma[0])]) & (dfs[('close')] > dfs[('ma%s') % (rollma[-1])] * ma_250_h) & ((dfs[('close')] > dfs['ene']) | (dfs[('close')] > dfs['upper']))) else: mask = ((dfs[('ma%s') % (rollma[0])] > 0) & (dfs[('close')] > dfs[('ma%s') % (rollma[0])]) & ((dfs[('close')] > dfs['ene']) | (dfs[('close')] > dfs['upper']))) # mask = ((dfs[('close')] > dfs[('ma%s')%(rollma[-1])])) df = dfs.loc[idx[mask, :]] df = get_multi_code_count(df) print(df.couts[:5]) # import ipdb;ipdb.set_trace() # df.sort_values(by='couts',ascending=0) # groupd.first()[:2],groupd.last()[:2] # groupd = df250.groupby(level=[0]) # ''' # groupd.transform(lambda x: x.iloc[-1]) # groupd.last() # groupd.apply(lambda x: x.close > x.ma250) # df.shape,df.sort_index(ascending=False)[:5] # ?groupd.agg # groupd = df.groupby(level=[0]) # groupd['close'].apply(pd.rolling_mean, 250, min_periods=1) #ex:# Group df by df.platoon, then apply a rolling mean lambda function to df.casualties # df.groupby('Platoon')['Casualties'].apply(lambda x:x.rolling(center=False,window=2).mean()) code_uniquelist = df.index.get_level_values('code').unique() code_select = code_uniquelist[random.randint(0, len(code_uniquelist) - 1)] if app: print round(time.time() - time_s, 2), 's', df.index.get_level_values( 'code').unique().shape, code_select, df.loc[code_select][-1:] if single: # groupd = df.groupby(level=[0]) if tdx: # block_path = tdd.get_tdx_dir_blocknew() + '060.blk' # if cct.get_work_time(): # codew = df[df.date == cct.get_today()].index.tolist() if dt_low is not None: groupd2 = df.groupby(level=[0]) df = groupd2.tail(1) df = df.reset_index().set_index('code') # import ipdb;ipdb.set_trace() # df = df[(df.date >= dt_low) & (df.date <= cct.get_today())] dd = df[(df.date == dt_low)] df = df[(df.date >= cct.last_tddate(1))] # import ipdb;ipdb.set_trace() print("df:%s df_idx:%s" % (len(df), len(df_idx))) if df_idx is not None and len(df_idx) > 0: df = df.loc[df_idx.index, :].dropna() print("Main Down dd :%s MainUP df:%s couts std:%0.1f " % (len(dd), len(df), df.couts.std())) # print df.date.mode()[0] df = df.sort_values(by='couts', ascending=1) df = df[df.couts > df.couts.std()] # df = df[(df.date >= df.date.mode()[0]) & (df.date <= cct.get_today())] codew = df.index.tolist() if app: print round(time.time() - time_s, 2), 'groupd2', len(df) else: df = df.reset_index().set_index('code') df = df[(df.date >= cct.last_tddate(days=10)) & (df.date <= cct.get_today())] codew = df.index.tolist() top_temp = tdd.get_sina_datadf_cnamedf(codew, df) top_temp = top_temp[(~top_temp.index.str.contains('688')) & (~top_temp.name.str.contains('ST'))] codew = top_temp.index.tolist() #clean st and 688 if app: hdf5_wri = cct.cct_raw_input("rewrite code [Y] or append [N]:") if hdf5_wri == 'y' or hdf5_wri == 'Y': append_status = False else: append_status = True else: append_status = False if len(codew) > 10: cct.write_to_blocknew(block_path, codew, append_status, doubleFile=False, keep_last=0) print "write:%s block_path:%s" % (len(codew), block_path) else: print "write error:%s block_path:%s" % (len(codew), block_path) # df['date'] = df['date'].apply(lambda x:(x.replace('-',''))) # df['date'] = df['date'].astype(int) # print df.loc[code_select].T,df.shape MultiIndex = False else: MultiIndex = True h5a.write_hdf_db('all300', df, table='roll200', index=False, baseCount=500, append=False, MultiIndex=MultiIndex) return df