def start(self, codes, n): time0 = time.time() print('process %s start:' % str(n)) self.Rice = interface_Rice() self.Record = stock_orderForm() self.Record.tablename = 'stock_orderForm_train' self.TrainOrder = mon_trainOrder() self.codes = codes res = self.Rice.kline(codes, period=self.period, start=self.startDate, end=self.endDate, pre=90) for code in codes: for conds in self.iterCond(): self.uid = '%s_%s_pop' % (code.replace('.', '_'), conds) self.batchid = uuid.uuid1() df = res[code] # 计算统一特征 df['createTime'] = df.index df = self.add_stock_index(df) df['code'] = code df['mode'] = df.apply(lambda row: self.point(row), axis=1) if code.find('603383') > -1 or code.find('601139') > -1: file = self.Rice.basePath + '%s.csv' % self.uid print(file) df.to_csv(file, index=1) self.saveStage(df) print('process %s end: %s ' % (str(n),str(time.time()-time0)))
def empty(self): Record = stock_orderForm() Record.tablename = 'stock_orderForm_1' Record.empty(filter=" method='%s'" % self.methodName) if self.saveMongo: TrainOrder = mon_trainOrder() TrainOrder.empty({'method': '%s' % self.methodName})
def confirm(self): G = GuangFa_interface() res = G.getMatch() Record = stock_orderForm() if res is not None and len(res) > 0: res = res[res['matchtype'] == 0] Record.confirm(res.to_dict(orient='records'))
def start_5(self, codes, n): time0 = time.time() self.Rice = interface_Rice() self.Record = stock_orderForm() Base = stock_baseInfo() self.dict = Base.getDict(isBound=0) #l = [str(c) for c in self.Rice.getValidDate1(start='1999-01-01', end=public.getDate())] #self.validDates= pd.Series(l,name='date') #print(self.validDates) dfs = self.Rice.get_financials(codes, years=20) for c in codes: if c not in dfs.keys(): continue self.uid = '%s_stock5' % (c) df = dfs[c] df = df.iloc[::-1] df.loc[:, 'code'] = c #df['code'] = c df['date'] = df['announce_date'].apply(lambda x: public.parseTime( str(x), format='%Y%m%d', style='%Y-%m-%d') if not np.isnan(x) else '') df['powm'] = df['adjusted_return_on_equity_diluted'].apply( lambda x: 1 if x >= self.incomeRatioLine else 0) df['sum'] = ta.SUM(df['powm'], timeperiod=5) if self.keyCode == c: print(df) self.saveStage(df) print(n, 'finished time:', time.time() - time0)
def pool_5(self, Func=None): pool = Pool(processes=5) Base = stock_baseInfo() lists = Base.getCodes(isBound=0) Record = stock_orderForm() print('total', len(lists)) if self.isEmptyUse: Record.empty() if Func is None: Func = self.start_5 for k in range(0, len(lists), self.pageCount): codes = lists[k:k + self.pageCount] #if self.keyCode not in codes: continue #print(codes) #Func(codes, int(k/self.pageCount+1)) #break try: pool.apply_async(Func, (codes, int(k / self.pageCount + 1))) pass except Exception as e: print(e) continue pool.close() pool.join()
def start(self, full_codes, Record, Tick, pid, shareDict): time0 = time.time() self.used_stocks = full_codes self.Record = stock_orderForm() if not self.isWorking: self.Record.tablename = self.orderFormTest if self.isTickSave: self.Tick = mon_tick() self.Rice = interface_Rice(isSub=True) # 进程控制类 self.procMap = ProcessMap() self.shareDict = shareDict self.shareDict = self.iniShare(full_codes) # 初始化节点 self.iniNode(full_codes) orders = self.onTick(self.Rice.snap(full_codes)) if len(orders)>0: self.Record.insertAll(orders) # 子进程启动 #logger.info(("model_stock_pop: subprocess finished", pid, " orders:", len(orders), " buy:", len([d['code'] for d in orders if d['isBuy']>0]), time.time()-time0)) self.Record.closecur() self.Record = None
def start(self, codes, n): time0 = time.time() print('process %s start:' % str(n)) self.Rice = interface_Rice() self.Record = stock_orderForm() self.Record.tablename = self.recordTableName self.TrainOrder = mon_trainOrder() res = self.Rice.kline(codes, period=self.period, start=self.startDate, end=self.endDate, pre=1, type='stock') self.klineColumns = res[codes[0]].columns Ticks = self.Rice.kline(codes, period='tick', start=self.startDate, end=self.endDate, pre=2, type='stock') #Ticks = self.Rice.kline(['SC1907','RB1907'], period='tick', start=self.startDate, end=self.endDate, pre=2, type='future') #print(Ticks) for code in codes: self.code = code df = res[code] tk = Ticks[code] tk['datetime'] = tk.index # 计算统一特征 df['datetime'] = df.index #df['code'] = code for conds in self.iterCond(): self.uid = self.uidKey % (self.code, str(self.timePeriods), conds) df, tk = self.total(df, tk) self.saveStage(df, tk) print('process %s end: %s ' % (str(n), str(time.time()-time0)))
def update_last(self): Rice = interface_Rice() Record = stock_orderForm() res = Record.getPosition(method=self.methodName, codes=None) codes = [res[c]['code'] for c in res.keys()] dfs = Rice.snap(codes) for code in codes: #print(code, dfs[code]['last']) Record.update_last(code, dfs[code]['last'], batchid=res[code]['batchid']) Record.closecur()
def pool_filter(self): time0 = time.time() Base = stock_baseInfo() Base.iniBound() lists = Base.getCodes(isBound=0) pool = Pool(processes=4) for k in range(0, len(lists), self.pageCount): codes = lists[k:k + self.pageCount] self.subFilter(codes, k) #pool.apply_async(self.subFilter, (codes, k)) pool.close() pool.join() # 添加持仓股票 Base = stock_baseInfo() Record = stock_orderForm() pos = Record.getPosition(method=self.methodName, codes=None) Base.updateBound([pos[c]['code'] for c in pos.keys()])