Example #1
0
def fup60b(stock):
    '''
        60分钟从负数上来的有失败上叉先导的第一次成功上叉
    '''
    t = stock.transaction
    linelog('%s:%s' % (fup60.__name__,stock.code))

    hzero =  cached_zeros(len(stock.hour))
    
    pdiff,pdea = cmacd(stock.hour)
    
    cross0 = cross(hzero,pdiff)

    udcross = cross(pdea,pdiff)

    #失败上叉:最近5个周期内被下叉信号抵消,或者最近5个周期内出现第二个上叉信号(导致msum仍然>0)
    fcross = gand(udcross>0,gor(rollx(msum(udcross,5),-5)==0,rollx(msum(udcross>0,5),-5)>1))

    ucross = gand(udcross>0,pdiff>0,bnot(fcross))

    xsum1 = rsum(ucross,cross0)  #此时,第一个cross>0和第二个之间的位置被填满1
    xsum = rsum(xsum1,cross0)   #此时,只有第一个发生位为1

    signal = gand(equals(xsum,1),pdiff>0)

    return hour2day(signal)
Example #2
0
def fup60b(stock):
    '''
        60分钟从负数上来的有失败上叉先导的第一次成功上叉
    '''
    t = stock.transaction
    linelog('%s:%s' % (fup60.__name__, stock.code))

    hzero = cached_zeros(len(stock.hour))

    pdiff, pdea = cmacd(stock.hour)

    cross0 = cross(hzero, pdiff)

    udcross = cross(pdea, pdiff)

    #失败上叉:最近5个周期内被下叉信号抵消,或者最近5个周期内出现第二个上叉信号(导致msum仍然>0)
    fcross = gand(
        udcross > 0,
        gor(
            rollx(msum(udcross, 5), -5) == 0,
            rollx(msum(udcross > 0, 5), -5) > 1))

    ucross = gand(udcross > 0, pdiff > 0, bnot(fcross))

    xsum1 = rsum(ucross, cross0)  #此时,第一个cross>0和第二个之间的位置被填满1
    xsum = rsum(xsum1, cross0)  #此时,只有第一个发生位为1

    signal = gand(equals(xsum, 1), pdiff > 0)

    return hour2day(signal)
Example #3
0
def fup60(stock):
    '''
        60分钟从负数上来的第一次上叉
        #或从负数上来的成功地第一次上叉(不到5个周期就下叉计作失败)
    '''
    t = stock.transaction
    linelog('%s:%s' % (fup60.__name__, stock.code))

    hzero = cached_zeros(len(stock.hour))

    pdiff, pdea = cmacd(stock.hour)

    cross0 = cross(hzero, pdiff)

    ucross = gand(cross(pdea, pdiff) > 0)

    xsum1 = rsum(ucross, cross0)  #此时,第一个cross>0和第二个之间的位置被填满1
    xsum = rsum(xsum1, cross0)  #此时,只有第一个发生位为1

    signal = gand(equals(xsum, 1), pdiff > 0)

    return hour2day(signal)
Example #4
0
def fup60(stock):
    '''
        60分钟从负数上来的第一次上叉
        #或从负数上来的成功地第一次上叉(不到5个周期就下叉计作失败)
    '''
    t = stock.transaction
    linelog('%s:%s' % (fup60.__name__,stock.code))

    hzero =  cached_zeros(len(stock.hour))
    
    pdiff,pdea = cmacd(stock.hour)
    
    cross0 = cross(hzero,pdiff)

    ucross = gand(cross(pdea,pdiff)>0)

    xsum1 = rsum(ucross,cross0)  #此时,第一个cross>0和第二个之间的位置被填满1
    xsum = rsum(xsum1,cross0)   #此时,只有第一个发生位为1
    

    signal = gand(equals(xsum,1),pdiff>0)

    return hour2day(signal)