# # ((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() 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))) if cct.get_now_time_int() > 915: top_dif = top_dif[top_dif.buy > 0] log.debug('top_dif:%s' % (len(top_dif))) top_dif['dff'] = (map(lambda x, y: round( (x - y) / y * 100, 1), top_dif['buy'].values, top_dif['lastp'].values)) # print top_dif.loc['600610',:] # top_dif = top_dif[top_dif.trade > 0] # if cct.get_now_time_int() >< 932:
# print "code:",symbol count_n = top_now.loc[symbol, 'buy'] count_a = top_all.loc[symbol, 'buy'] # print count_a,count_n # print count_n,count_a if count_a == 0 and count_n == 0: continue elif count_a == 0 and count_n !=0: top_all.loc[symbol, 'buy'] = top_now.loc[symbol, 'buy'] count_a = count_n else: pass if cct.get_now_time_int() < 930 and count_a != count_n: # if not count_n == count_a: top_all.loc[symbol, 'buy'] = top_now.loc[symbol, 'buy'] else: if not count_n == count_a: # log.info("n_buy-a_buy:%s" % (count_n - count_a)) top_now.loc[symbol, 'diff'] = round( ((float(count_n) - float(count_a)) / float(count_a) * 100), 1) if status_change and 'counts' in top_now.columns.values: print "change:", time.time() - time_s # top_now.loc[symbol,'lastp']=top_all.loc[symbol,'lastp'] # top_all.loc[symbol, 'buy':'counts'] = top_now.loc[symbol, 'buy':'counts'] top_all.loc[symbol, 'buy':'prev_p'] = top_now.loc[symbol, 'buy':'prev_p'] else: # top_now.loc[symbol,'lastp']=top_all.loc[symbol,'lastp']
# 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() 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)) 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] # if cct.get_now_time_int() > 915 and cct.get_now_time_int() <= 926: # top_dif['percent']= (map(lambda x, y: round((x-y)/y*100,1) if int(y) > 0 else 0, top_dif.buy, top_dif.llastp)) if cct.get_now_time_int() > 915: top_dif = top_dif[top_dif.buy > 0] top_dif['dff'] = (map(lambda x, y: round( (x - y) / y * 100, 1), top_dif['buy'].values, top_dif['lastp'].values)) # print top_dif.loc['600610',:] # top_dif = top_dif[top_dif.trade > 0] # if cct.get_now_time_int() > 932:
# print top_all[:10] print rl.format_for_print(top_all[:10]) # print "staus",status if status: for code in top_all[:10].index: code = re.findall("(\d+)", code) if len(code) > 0: code = code[0] kind = sl.get_multiday_ave_compare_silent(code) top_all = top_bak del top_bak gc.collect() else: print "no data" int_time = cct.get_now_time_int() if cct.get_work_time(): if int_time < 930: while 1: time.sleep(60) if cct.get_now_time_int() < 931: time.sleep(60) print ".", else: top_all = pd.DataFrame() time_s = time.time() print "." break else: time.sleep(60) elif cct.get_work_duration():
# print "staus",status if status: for code in top_dif[:10].index: code = re.findall('(\d+)', code) if len(code) > 0: code = code[0] kind = sl.get_multiday_ave_compare_silent(code) # print top_all[top_all.low.values==0] # else: # print "\t No RealTime Data" else: print "\tNo Data" int_time = cct.get_now_time_int() if cct.get_work_time(): if int_time < 925: time.sleep(30) elif int_time < 930: time.sleep((930 - int_time) * 60) top_all = pd.DataFrame() time_s = time.time() else: time.sleep(60) elif cct.get_work_duration(): while 1: time.sleep(60) if cct.get_work_duration(): print ".", time.sleep(60)
sys.exit() # str.isdigit()是用来判断字符串是否纯粹由数字组成 elif not num_input or not len(num_input) == 6: print("Please input 6 code:or exit") num_input = '' if num_input: if ave == None: ave = get_code_search_loop(num_input, code, dayl=days) else: ave = get_code_search_loop(num_input, code, dayl=days, ave=ave) code = num_input int_time = cct.get_now_time_int() if cct.get_work_time(): if int_time < 1000: cct.sleep(60) else: cct.sleep(ct.duration_sleep_time) int_time = cct.get_now_time_int() if cct.get_work_time(): if int_time < 930: while 1: cct.sleep(60) if cct.get_now_time_int() < 931: cct.sleep(60) print ".", else: # cct.sleep(random.randint(0, 30))
def all(self): self.stockcode = StockCode() self.stock_code_path = self.stockcode.stock_code_path self.stock_codes = self.stockcode.get_stock_codes() self.load_stock_codes() # print "stocks:",len(self.stock_codes) self.stock_codes = [elem for elem in self.stock_codes if elem.startswith(('6','30','00'))] h5 = h5a.load_hdf_db(self.hdf_name,self.table, code_l=self.stock_codes) # print "stocks:",len(self.stock_codes) if h5 is not None and len(h5) > 0: o_time = h5[h5.timel <> 0].timel if len(o_time) > 0: o_time = o_time[0] l_time = time.time() - o_time sina_limit_time = ct.sina_limit_time sina_time_status = (cct.get_work_day_status() and 915 < cct.get_now_time_int() < 926) # return_hdf_status = not cct.get_work_day_status() or (cct.get_work_day_status() and (cct.get_work_time() and l_time < sina_limit_time)) return_hdf_status = not cct.get_work_time() or (cct.get_work_time() and l_time < sina_limit_time) log.info("915:%s sina_time:%0.2f limit:%s"%(sina_time_status,l_time,sina_limit_time)) if sina_time_status and l_time < 8: log.info("open 915 hdf ok:%s"%(len(h5))) return h5 elif not sina_time_status and return_hdf_status: log.info("return hdf5 data:%s"%(len(h5))) return h5 else: log.info("no return hdf5:%s"%(len(h5))) # self.stock_with_exchange_list = list( # map(lambda stock_code: ('sh%s' if stock_code.startswith(('5', '6', '9')) else 'sz%s') % stock_code, # self.stock_codes)) self.stock_with_exchange_list = list( map(lambda stock_code: ('sh%s' if stock_code.startswith(('6')) else 'sz%s') % stock_code, self.stock_codes)) self.stock_list = [] self.request_num = len(self.stock_with_exchange_list) // self.max_num for range_start in range(self.request_num): num_start = self.max_num * range_start num_end = self.max_num * (range_start + 1) request_list = ','.join( self.stock_with_exchange_list[num_start:num_end]) self.stock_list.append(request_list) # print len(self.stock_with_exchange_list), num_end if len(self.stock_with_exchange_list) > num_end: request_list = ','.join( self.stock_with_exchange_list[num_end:]) self.stock_list.append(request_list) self.request_num += 1 # a = 0 # for x in range(self.request_num): # print x # i = len(self.stock_list[x].split(',')) # print i # a += i # print a log.debug('all:%s' % len(self.stock_list)) # log.error('all:%s req:%s' % # (len(self.stock_list), len(self.stock_list))) return self.get_stock_data()
def format_response_data(self,index=False): stocks_detail = ''.join(self.stock_data) # print stocks_detail result = self.grep_stock_detail.finditer(stocks_detail) # stock_dict = dict() list_s = [] for stock_match_object in result: stock = stock_match_object.groups() # print stock # print stock # fn=(lambda x:x) # list.append(map(fn,stock)) # df = pd.DataFrame(list,columns=ct.SINA_Total_Columns) # list_s.append({'code'}) list_s.append( {'code': stock[0], 'name': stock[1], 'open': float(stock[2]), 'close': float(stock[3]), 'now': float(stock[4]), 'high': float(stock[5]), 'low': float(stock[6]), 'buy': float(stock[7]), 'sell': float(stock[8]), 'volume': int(stock[9]), 'turnover': float(stock[10]), # 'amount': float(stock[10]), 'b1_v': int(stock[11]), 'b1': float(stock[12]), 'b2_v': int(stock[13]), 'b2': float(stock[14]), 'b3_v': int(stock[15]), 'b3': float(stock[16]), 'b4_v': int(stock[17]), 'b4': float(stock[18]), 'b5_v': int(stock[19]), 'b5': float(stock[20]), 'a1_v': int(stock[21]), 'a1': float(stock[22]), 'a2_v': int(stock[23]), 'a2': float(stock[24]), 'a3_v': int(stock[25]), 'a3': float(stock[26]), 'a4_v': int(stock[27]), 'a4': float(stock[28]), 'a5_v': int(stock[29]), 'a5': float(stock[30]), 'dt': (stock[31]), 'ticktime': (stock[32])}) # print list_s # df = pd.DataFrame.from_dict(stock_dict,columns=ct.SINA_Total_Columns) df = pd.DataFrame(list_s, columns=ct.SINA_Total_Columns) # if self.index_status and cct.get_work_time(): # if self.index_status: # if cct.get_work_time() or (cct.get_now_time_int() > 915) : # df = df.drop('close', axis=1) df.rename(columns={'close': 'llastp'}, inplace=True) if (cct.get_now_time_int() > 915 and cct.get_now_time_int() < 931): # df.rename(columns={'buy': 'close'}, inplace=True) df['close']=df['buy'] df['low']=df['buy'] elif (cct.get_now_time_int() > 830 and cct.get_now_time_int() <= 915): # df.rename(columns={'buy': 'close'}, inplace=True) df['buy']=df['llastp'] df['close']=df['buy'] df['low']=df['buy'] else: # df.rename(columns={'now': 'close'}, inplace=True) df['close'] = df['now'] # df = df = df.drop_duplicates('code') # df = df.loc[:, ct.SINA_Total_Columns_Clean] # df = df.loc[:, ct.SINA_Total_Columns] # df.rename(columns={'turnover': 'amount'}, inplace=True) df = df.fillna(0) # df = df.sort_values(by='code', ascending=0) df = df.set_index('code') # print ("Market-df:%s %s time: %s" % ( # cct.get_now_time())) log.info("hdf:all%s %s"%(len(df),len(self.stock_codes))) h5a.write_hdf_db(self.hdf_name,df,self.table,index=index) # self.index_status = False log.info("wr end:%0.2f"%(time.time() - self.start_t)) return df
# 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() 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)) # if 'volumn' in top_dif.columns and 'lvol' in top_dif.columns: top_dif['volume'] = (map( lambda x, y: round(x / y / radio_t, 1), top_dif['volume'], top_dif['lvol'])) # if 'lastp' in top_dif.columns and 'buy' in top_dif.columns: top_dif['dff'] = map(lambda x, y: round( (x - y) / y * 100, 1), top_dif['buy'].values, top_dif['lastp'].values)
# # 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() 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))) if cct.get_now_time_int() > 915: top_dif = top_dif[top_dif.buy > 0] log.debug('top_dif:%s' % (len(top_dif))) top_dif['dff'] = ( map(lambda x, y: round((x - y) / y * 100, 1), top_dif['buy'].values, top_dif['lastp'].values)) # print top_dif.loc['600610',:] # top_dif = top_dif[top_dif.trade > 0] # if cct.get_now_time_int() > 932: # top_dif = top_dif[top_dif.low > 0]
top_all["counts"] = 0 top_all["prev_p"] = 0 for symbol in top_now.index: if "counts" in top_now.columns.values: top_all.loc[symbol, "buy":"prev_p"] = top_now.loc[symbol, "buy":"prev_p"] else: # top_now.loc[symbol, 'diff'] = 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, "buy":"low"] = top_now.loc[symbol, "buy":"low"] # top_all.loc[symbol, 'buy'] = top_now.loc[symbol, 'buy'] # top_all = top_all[top_all.buy > 0] top_dif = top_all if cct.get_now_time_int() < 935: top_dif["diff"] = map( lambda x, y: round((x - y) / y * 100, 1), top_dif["buy"].values, top_dif["lastp"].values ) top_dif = top_dif[top_dif.buy > 0] else: top_dif["diff"] = map( lambda x, y: round((x - y) / y * 100, 1), top_dif["trade"].values, top_dif["lastp"].values ) # print top_dif.loc['600610',:] top_dif = top_dif[top_dif.low > 0] top_dif = top_dif[top_dif.trade > 0] # top_dif.loc['600610','volume':'lvol'] top_dif = top_dif[top_dif.lvol > 100000] top_dif["volume"] = map(
# top_all = top_all[top_all.open>=top_all.low*0.99] # top_all = top_all[top_all.buy >= top_all.open*0.99] # top_all = top_all[top_all.trade >= top_all.low*0.99] # top_all = top_all[top_all.trade >= top_all.high*0.99] # top_all = top_all[top_all.buy >= top_all.llastp] # top_all = top_all[top_all.percent >= 0] # if cct.get_now_time_int() <1500: top_dif = top_all.copy() top_dif['dff'] = (map(lambda x, y: round( (x - y) / y * 100, 1), top_dif['buy'].values, top_dif['lastp'].values)) log.info('dif1:%s' % len(top_dif)) if not (cct.get_now_time_int() > 915 and cct.get_now_time_int() <= 925): top_dif = top_dif[top_dif.lvol > ct.LvolumeSize] 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] # top_dif = top_dif[top_dif.buy >= top_dif.lhigh * ct.changeRatio] log.debug('dif2:%s' % len(top_dif)) # if cct.get_now_time_int() > 915 and cct.get_now_time_int() <= 926: # top_dif['percent']= (map(lambda x, y: round((x-y)/y*100,1) if int(y) > 0 else 0, top_dif.buy, top_dif.llastp)) # if top_dif[:1].llow.values <> 0: if len(top_dif[:5][top_dif[:5]['buy'] > 0]) > 3: log.debug('diff2-0-low>0')
# log.debug("TDX Col:%s" % tdxdata.columns.values) # # df_now=top_all.merge(data,on='code',how='left') # # df_now=pd.merge(top_all,data,left_index=True,right_index=True,how='left') # top_all = top_all.merge(tdxdata, left_index=True, right_index=True, how='left') # log.info('Top-merge_now:%s' % (top_all[:1])) # top_all = top_all[top_all['llow'] > 0] # log.info("df:%s" % top_all[:1]) radio_t = cct.get_work_time_ratio() log.debug("Second:vol/vol/:%s" % radio_t) # top_dif['volume'] = top_dif['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_all['volume'].values, top_all['lvol'].values)) if cct.get_now_time_int() > 915: top_all = top_all[top_all.low > top_all.llow * ct.changeRatio] # top_all = top_all[top_all.trade > top_all.lhigh * ct.changeRatio] # if cct.get_now_time_int() > 915 and cct.get_now_time_int() <= 926: # top_all['percent'] = (map(lambda x, y: round( # (x - y) / y * 100, 1) if int(y) > 0 else 0, top_all.trade, top_all.llastp)) # top_all = top_all[top_all.prev_p >= top_all.lhigh] # top_all = top_all.loc[:, # ['name', 'percent', 'ma5d','dff', 'couts', 'volume', 'trade', 'prev_p', 'ratio']] if cct.get_now_time_int() > 1030 and cct.get_now_time_int( ) < 1400: top_all = top_all[(top_all.volume > ct.VolumeMinR) & (top_all.volume < ct.VolumeMaxR)]
# 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() 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)) 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] # if cct.get_now_time_int() > 915 and cct.get_now_time_int() <= 926: # top_dif['percent']= (map(lambda x, y: round((x-y)/y*100,1) if int(y) > 0 else 0, top_dif.buy, top_dif.llastp)) if cct.get_now_time_int() > 915: top_dif = top_dif[top_dif.buy > 0] top_dif['dff'] = ( map(lambda x, y: round((x - y) / y * 100, 1), top_dif['buy'].values, top_dif['lastp'].values)) # print top_dif.loc['600610',:] # top_dif = top_dif[top_dif.trade > 0] # if cct.get_now_time_int() > 932:
from JSONData import tdx_data_Day as tdd from JSONData import sina_data from JohhnsonUtil import LoggerFactory as LoggerFactory from JohhnsonUtil import commonTips as cct if __name__ == "__main__": # parsehtml(downloadpage(url_s)) # StreamHandler(sys.stdout).push_application() log = LoggerFactory.getLogger('Autodata') # log.setLevel(LoggerFactory.DEBUG) # handler=StderrHandler(format_string='{record.channel}: {record.message) [{record.extra[cwd]}]') # log.level = log.debug # error_handler = SyslogHandler('Sina-M-Log', level='ERROR') try: if cct.get_work_day_status() and cct.get_now_time_int() < 1505: # tdx_data=tdd.get_tdx_all_day_DayL_DF(market='cyb', dayl=1) print sina_data.Sina().get_stock_code_data('300006') tdx_data = rl.get_sina_Market_json('cyb') if len(tdx_data) < 1: raise KeyboardInterrupt("StopTime") else: print tdx_data[-2:] code = '300366' except (KeyboardInterrupt) as e: pass except (IOError, EOFError, Exception) as e: print "Error", e #traceback.print_exc() sleeptime = random.randint(5, 15)