def _get_non_practice_trials_output(self, participant_sessions): spss_output_list = [] non_practice_sessions = self._get_non_practice_sessions( participant_sessions) for participant_session in non_practice_sessions: participant_id = participant_session.get_participant_id() try: mws_RWV = self._mean_walking_speed_RWV[participant_id] except: print "MasterDataGenerator: Warning! Could not find mean walking speed (RWV) under the given participant ID" mws_RWV = NO_VALUE_NUM try: mrs_RWV = self._mean_running_speed_RWV[participant_id] except: print "MasterDataGenerator: Warning! Could not find mean running speed (RWV) under the given participant ID " mrs_RWV = NO_VALUE_NUM try: mws_HMDV = self._mean_walking_speed[participant_id] except: print "MasterDataGenerator: Warning! Could not find mean walking speed (HMDV) under the given participant ID" mws_HMDV = NO_VALUE_NUM rdp = RawDataParser(participant_session, mws_HMDV, mws_RWV, mrs_RWV) spss_output_list.extend(rdp.get_spss_output()) return spss_output_list
def __init__(self,db_name='stock.db'): self.logger = mylogger('stock.log') self.db = DBClass(db_name) self.db.create_SE_table() self.parser = RawDataParser()
class GetStockData(object): def __init__(self,db_name='stock.db'): self.logger = mylogger('stock.log') self.db = DBClass(db_name) self.db.create_SE_table() self.parser = RawDataParser() def log(self, msg): self.logger.log(msg) def save_sh_stock(self): sh_str = 'http://stock.gtimg.cn/data/view/rank.php?t=rankash/chr&p=%s&o=0&l=80&v=list_data' #上证 all_sh_code = self.get_all_code(sh_str) for item in all_sh_code: self.save_stock_data(item[0]) def save_sz_stock(self): sz_str = 'http://stock.gtimg.cn/data/view/rank.php?t=rankasz/chr&p=%s&o=0&l=80&v=list_data' #深证 all_sz_code = self.get_all_code(sz_str) for item in all_sz_code: self.save_stock_data(item[0]) def save_stock_data(self, stock_name): self.get_stock_sub_data(stock_name) self.db.create_stock_daily_table(stock_name) year_list = range(90, 99+1) year_list.extend(range(00, 15+1)) self.get_stock_data(stock_name, year_list) def get_all_code(self, url_str, db_flag=True): #获取股票代码 code_list = [] try: r = urllib2.urlopen(url_str%(1)) raw_data = r.read() # raw_data = requests.get(url_str%(1)).content except: self.log('requests.get error') return code_list code_list.extend(self.parser.parse_code(raw_data)) total = self.parser.parse_val(raw_data, 'total') for i in xrange(2,total+1): try: r = urllib2.urlopen(url_str%(i)) raw_data = r.read() # raw_data = requests.get(url_str%(i)).content except: self.log('requests.get error') continue code_list.extend(self.parser.parse_code(raw_data)) if db_flag == True: self.db.insert_SE_record(code_list) return code_list def get_stock_data(self, stock_name, year_list, db_flag=True): #获取某股票数据 self.log('getting data: %s'%(stock_name)) data_list = [] for year in year_list: url = 'http://data.gtimg.cn/flashdata/hushen/daily/%02d/%s.js'%(year, stock_name) try: r = urllib2.urlopen(url) raw_data = r.read() # raw_data = requests.get(url).content except: self.log('stock %s, requests.get error'%(stock_name)) continue if raw_data.find('404 Not Found') != -1: self.log('Year %02d, stock %s, no data'%(year, stock_name)) continue data_list.extend(self.parser.parse_daily_data(raw_data)['data']) if db_flag == True and data_list: self.db.insert_stock_daily_record(stock_name, data_list) return data_list def get_stock_sub_data(self, stock_name, db_flag=True): sub_list = [] self.db.create_stock_sub_table(stock_name+'_sub') url = 'http://data.gtimg.cn/flashdata/hushen/fuquan/%s.js'%(stock_name) try: r = urllib2.urlopen(url) raw_data = r.read() # raw_data = requests.get(url).content except: self.log('stock %s, requests.get error'%(stock_name)) return sub_list if raw_data.find('404 Not Found') != -1: self.log('stock %s, sub, no data'%(stock_name)) return sub_list sub_list = self.parser.parse_sub_data(raw_data) if db_flag == True and sub_list: self.db.insert_stock_sub_table(stock_name+'_sub', sub_list) return sub_list
def __init__(self): self.parser = RawDataParser() self.year = int(time.strftime("%y", time.localtime()))
class StockAlert(object): def __init__(self): self.parser = RawDataParser() self.year = int(time.strftime("%y", time.localtime())) def get_daily_data(self): #此函数已废弃,用get_market_data代替 stock_data = self.get_stock_data('sh000001', [self.year]) pre_close = stock_data[-2][2] cur_close = stock_data[-1][2] msg_title = u'%s'%stock_data[-1][0] msg = u'上证:%.2f(+%.2f)'%(cur_close, (cur_close-pre_close)/pre_close*100) stock_data = self.get_stock_data('sz399001', [self.year]) pre_close = stock_data[-2][2] cur_close = stock_data[-1][2] msg = msg + u' 深证:%.2f(+%.2f)'%(cur_close, (cur_close-pre_close)/pre_close*100) stock_data = self.get_stock_data('sz399006', [self.year]) pre_close = stock_data[-2][2] cur_close = stock_data[-1][2] msg = msg + u' 创业板:%.2f(+%.2f)'%(cur_close, (cur_close-pre_close)/pre_close*100) return(msg_title, msg) def get_market_data(self, market_stock=['sh000001', 'sz399001', 'sz399006', 'sh000300']): market_data = [] for stock_name in market_stock: market_data.append(self.get_real_data(stock_name)) msg = u'上证:%s(%s%%)'%(market_data[0][2], market_data[0][4]) msg = msg + u' 深成:%s(%s%%)'%(market_data[1][2], market_data[1][4]) msg = msg + u' 创业板:%s(%s%%)'%(market_data[2][2], market_data[2][4]) msg = msg + u' 沪深300:%s(%s%%)'%(market_data[3][2], market_data[3][4]) state = self.get_market_state() return (state, msg) def calc_ma(self,stock_name='sh000300'): today = time.strftime("%y%m%d", time.localtime()) year_list = range(90, 99+1) year_list.extend(range(00, self.year+1)) data_list = self.get_stock_data(stock_name, year_list) price_list = [] for item in data_list: price_list.append(item[2]) if data_list[-1][0] != today: #data is not update, add it real_data = self.get_real_data(stock_name) price_list.append(float(real_data[2])) MA5 = self.MA(price_list, 5) MA60 = self.MA(price_list, 60) if(MA5[-1]>MA60[-1]): msg = u'沪深300: MA5(%.2f)>MA60(%.2f)[买入]'%(MA5[-1], MA60[-1]) else: msg = u'沪深300: MA5(%.2f)<MA60(%.2f)[买入]'%(MA5[-1], MA60[-1]) return (msg, MA5, MA60) def MA(self, x, n): y = x[:] for t in xrange(len(x)): if t<n: y[t] = sum(x[0:t+1])/len(x[0:t+1]) else: y[t] = sum(x[t-n+1:t+1])/len(x[t-n+1:t+1]) return y def get_market_state(self): url = 'http://qt.gtimg.cn/q=marketStat' try: r = urllib2.urlopen(url) raw_data = r.read() except: return None return self.parser.parse_market_state(raw_data) def get_real_data(self, stock_name, short_flag=True): if short_flag is True: stock_name = 's_' + stock_name url = 'http://qt.gtimg.cn/q=%s'%(stock_name) try: r = urllib2.urlopen(url) raw_data = r.read() except: return None if raw_data.find('404 Not Found') != -1: return None return self.parser.parse_real_data(raw_data) def get_stock_data(self, stock_name, year_list): #获取某一年的数据 data_list = [] for year in year_list: url = 'http://data.gtimg.cn/flashdata/hushen/daily/%02d/%s.js'%(year, stock_name) try: r = urllib2.urlopen(url) raw_data = r.read() except: continue if raw_data.find('404 Not Found') != -1: continue data_list.extend(self.parser.parse_daily_data(raw_data)['data']) return data_list def get_stock_sub_data(self, stock_name): sub_list = [] url = 'http://data.gtimg.cn/flashdata/hushen/fuquan/%s.js'%(stock_name) try: r = urllib2.urlopen(url) raw_data = r.read() except: return sub_list if raw_data.find('404 Not Found') != -1: return sub_list sub_list = self.parser.parse_sub_data(raw_data) return sub_list