MyTT icon indicating copy to clipboard operation
MyTT copied to clipboard

关于 BARSSINCEN

Open peakgao opened this issue 4 weeks ago • 0 comments

已有的实现是: 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 反而成立了

peakgao avatar Dec 12 '25 12:12 peakgao