Beispiel #1
0
def decover1(source, interval=1):
    ''' 去除间隔期内!=0数值的重复出现,并将信号标准化为1
        新的信号会增强interval. 
        去除效率大于derepeatc
    '''
    nsource = nequals(source, 0)
    ms = msum2(nsource, interval + 1)  #间隔0为本位和,间隔1位本左邻和
    return gand(equals(ms, 1), nsource)
Beispiel #2
0
def decover1(source,interval=1):
    ''' 去除间隔期内!=0数值的重复出现,并将信号标准化为1
        新的信号会增强interval. 
        去除效率大于derepeatc
    '''
    nsource = nequals(source,0)
    ms = msum2(nsource,interval+1)  #间隔0为本位和,间隔1位本左邻和
    return gand(equals(ms,1),nsource)
Beispiel #3
0
def under_cross(signal,source,follow):
    ''' 信号日低于或下叉。source一般为downlimit,follow为low
        不仅仅给出下叉信号,而且还给出signal日follow是否低于source
        信号日低于,则将屏蔽买入
        下叉则是卖出
    '''
    sd = equals(cross(source,follow),-1)
    indices = (signal > 0)
    sd[indices] = greater_equals(source[indices],follow[indices])
    return sd
Beispiel #4
0
def under_cross(signal, source, follow):
    ''' 信号日低于或下叉。source一般为downlimit,follow为low
        不仅仅给出下叉信号,而且还给出signal日follow是否低于source
        信号日低于,则将屏蔽买入
        下叉则是卖出
    '''
    sd = equals(cross(source, follow), -1)
    indices = (signal > 0)
    sd[indices] = greater_equals(source[indices], follow[indices])
    return sd
Beispiel #5
0
def xmaxmin_points(source,extends,functor,gfunctor,limit):
    ''' 计算最高或最低点,extends为作用范围. 返回值中前extends和后extends位都置0
    '''
    covered = extends * 2 + 1 #最大点必然大于之前的extends个元素和之后的extends个元素
    if(len(source) < covered):
        return np.zeros_like(source)
    peak_values = tmaxmin(source,covered,functor,gfunctor,limit)
    xpeak_values = rollx(peak_values,-extends)
    cores = equals(source,xpeak_values)
    ncores = derepeatc(cores)
    ncores[:extends] = ncores[-extends:] = 0
    return ncores
Beispiel #6
0
def xmaxmin_points(source, extends, functor, gfunctor, limit):
    ''' 计算最高或最低点,extends为作用范围. 返回值中前extends和后extends位都置0
    '''
    covered = extends * 2 + 1  #最大点必然大于之前的extends个元素和之后的extends个元素
    if (len(source) < covered):
        return np.zeros_like(source)
    peak_values = tmaxmin(source, covered, functor, gfunctor, limit)
    xpeak_values = rollx(peak_values, -extends)
    cores = equals(source, xpeak_values)
    ncores = derepeatc(cores)
    ncores[:extends] = ncores[-extends:] = 0
    return ncores
Beispiel #7
0
def derepeatc(source):
    ''' 去除!=0数值的连续出现(只剩下第一个),正规化为1
        c是consecutive的意思
    '''
    t = subd(nequals(source,0))
    return equals(t,1)
Beispiel #8
0
def opendayofweek(weekdays):    #周开盘日
    #特定情形下会不正确,如某周一交易日后,下一个交易日正好是下周二,则该周二不会被识别为周开盘日. 好在错误对称。
    #另,第一个交易日也被识别为周开盘日
    return greater(lesser_equals(weekdays-rollx(weekdays)) + equals(weekdays,1)) 
Beispiel #9
0
def closedayofweek(weekdays): #周收盘日
    #特别特殊的情形下会不正确,如某周一交易日后,下一个交易日正好是下周二,则该周一不会被识别为周收盘日
    #另,最后一个交易日也被识别为周收盘日
    return greater(greater_equals(weekdays-rollx(weekdays,-1)) + equals(weekdays,5))
Beispiel #10
0
def derepeatc(source):
    ''' 去除!=0数值的连续出现(只剩下第一个),正规化为1
        c是consecutive的意思
    '''
    t = subd(nequals(source, 0))
    return equals(t, 1)
Beispiel #11
0
def opendayofweek(weekdays):  #周开盘日
    #特定情形下会不正确,如某周一交易日后,下一个交易日正好是下周二,则该周二不会被识别为周开盘日. 好在错误对称。
    #另,第一个交易日也被识别为周开盘日
    return greater(
        lesser_equals(weekdays - rollx(weekdays)) + equals(weekdays, 1))
Beispiel #12
0
def closedayofweek(weekdays):  #周收盘日
    #特别特殊的情形下会不正确,如某周一交易日后,下一个交易日正好是下周二,则该周一不会被识别为周收盘日
    #另,最后一个交易日也被识别为周收盘日
    return greater(
        greater_equals(weekdays - rollx(weekdays, -1)) + equals(weekdays, 5))