Skip to content

关于 BARSSINCEN #62

@peakgao

Description

@peakgao

已有的实现是:
def BARSSINCEN(S, N): # N周期内第一次S条件成立到现在的周期数,N为常量 by jqz1226
return pd.Series(S).rolling(N).apply(lambda x:N-1-np.argmax(x) if np.argmax(x) or x[0] else 0,raw=True).fillna(0).values.astype(int)

如果条件都不成立,则返回的是0,这个不是期望的,应该改成这样:
return pd.Series(S).rolling(N).apply(lambda x:N-1-np.argmax(x) if np.argmax(x) or x[0] else float('nan'),raw=True).values

比如下面这个选股条件:
XG:BARSSINCEN(C>=REF(HHV(H,250),1),50)=0 AND VOL>MA(VOL,5)*1.5 AND MA(C,5)>MA(C,10) AND MA(C,10)>MA(C,20);

如果用原有实现,那么即使条件 C>=REF(HHV(H,250),1) 不满足, BARSSINCEN(C>=REF(HHV(H,250),1),50)=0 反而成立了

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions