Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
def limitdown2(high,low,limit=-990):   #一字跌停,以万分之表示
    pre = rollx(high,1)
    return band(high-low==0,pre>high)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
def limitdown2(high, low, limit=-990):  #一字跌停,以万分之表示
    pre = rollx(high, 1)
    return band(high - low == 0, pre > high)
Ejemplo n.º 8
0
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)