Beispiel #1
0
    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)))
Beispiel #2
0
 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})
Beispiel #3
0
 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'))
Beispiel #4
0
    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)
Beispiel #5
0
    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()
Beispiel #6
0
    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
Beispiel #7
0
    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)))
Beispiel #8
0
    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()
Beispiel #9
0
    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()])