def trade_maker(self, tmaker, dates, stock, sbuy, ssell, begin=0): #kwargs目的是吸收无用参数,便于cruiser ''' trade_strategy是对sbuy和ssell进行预处理,如买卖都是次日交易则为B1S1 ''' t = stock.transaction #logger.debug('%s old ssell:%s' % (stock.code,ssell.tolist())) #for t,sb,ss in zip(dates,sbuy,ssell):print t,sb,ss sbuy, ssell = self.trade_strategy(t, sbuy, ssell) sbuy = band(sbuy, bnot(sresume(stock.transaction[VOLUME], 10, covered=3))) #对停牌10日以上的的股票,消除其紧随3天的sbuy信号 #logger.debug(u'sbuy,after strategy:%s',sbuy.tolist()) #logger.debug(u'ssell,after strategy:%s',ssell.tolist()) ssignal = self.trade_signal_maker(sbuy, ssell) #print stock.code,ssignal #logger.debug('%s signals:%s' % (stock.code,ssignal.tolist())) #logger.debug('%s seller:%s' % (stock.code,ssell.tolist())) #for t,sb,ss,ssig in zip(dates,sbuy,ssell,ssignal):print t,sb,ss,ssig return tmaker(stock, ssignal, dates, self.buy_pricer(stock), self.sell_pricer(stock), begin=begin)
def sfollow(source1,source2,covered=1): ''' 简单追踪共振 在source1发出信号covered范围内source2是否发出共振信号 covered < 1 视同1,即为同一天 两个序列都是!=0为有信号,但都建议>0表示有信号 ''' assert len(source1) == len(source2) #rev = np.zeros_like(source1) extended = extend(source1,covered) if covered>1 else source1 rev = band(extended,source2) #for i in xrange(len(source1)): # if(extended[i] and source2[i]): # rev[i] = 1 return rev
def sfollow(source1, source2, covered=1): ''' 简单追踪共振 在source1发出信号covered范围内source2是否发出共振信号 covered < 1 视同1,即为同一天 两个序列都是!=0为有信号,但都建议>0表示有信号 ''' assert len(source1) == len(source2) #rev = np.zeros_like(source1) extended = extend(source1, covered) if covered > 1 else source1 rev = band(extended, source2) #for i in xrange(len(source1)): # if(extended[i] and source2[i]): # rev[i] = 1 return rev
def trade_maker(self,tmaker,dates,stock,sbuy,ssell,begin=0): #kwargs目的是吸收无用参数,便于cruiser ''' trade_strategy是对sbuy和ssell进行预处理,如买卖都是次日交易则为B1S1 ''' t = stock.transaction #logger.debug('%s old ssell:%s' % (stock.code,ssell.tolist())) #for t,sb,ss in zip(dates,sbuy,ssell):print t,sb,ss sbuy,ssell = self.trade_strategy(t,sbuy,ssell) sbuy = band(sbuy,bnot(sresume(stock.transaction[VOLUME],10,covered=3))) #对停牌10日以上的的股票,消除其紧随3天的sbuy信号 #logger.debug(u'sbuy,after strategy:%s',sbuy.tolist()) #logger.debug(u'ssell,after strategy:%s',ssell.tolist()) ssignal = self.trade_signal_maker(sbuy,ssell) #print stock.code,ssignal #logger.debug('%s signals:%s' % (stock.code,ssignal.tolist())) #logger.debug('%s seller:%s' % (stock.code,ssell.tolist())) #for t,sb,ss,ssig in zip(dates,sbuy,ssell,ssignal):print t,sb,ss,ssig return tmaker(stock,ssignal,dates,self.buy_pricer(stock),self.sell_pricer(stock),begin=begin)
def limitdown2(high,low,limit=-990): #一字跌停,以万分之表示 pre = rollx(high,1) return band(high-low==0,pre>high)
def limitup2(high,low,limit=990): #一字涨停,以万分之表示,不再依赖limit,认为上涨一线就是停 #return band(high-low==0,limitup1(high,limit)) pre = rollx(high,1) return band(high-low==0,pre<high)
def limitdown2(high, low, limit=-990): #一字跌停,以万分之表示 pre = rollx(high, 1) return band(high - low == 0, pre > high)
def limitup2(high, low, limit=990): #一字涨停,以万分之表示,不再依赖limit,认为上涨一线就是停 #return band(high-low==0,limitup1(high,limit)) pre = rollx(high, 1) return band(high - low == 0, pre < high)