九转序列选股的QA实现
发布于 3 个月前 作者 vensentzhou 617 次浏览 来自 代码实现

截屏2020-11-26 下午11.52.57.png

九转序列指标思想来源于技术分析领域著名大师汤姆·迪马克的TD序列,其核心功能为发现当前股价走势的拐点,提高抄底、逃顶的成功率。属于左侧交易指标。闲来无事,用QA实现一下,权当练手。

def nine_change(data):
    close=data.close
    low= data.low
    high=data.high
    lower_1=pd.concat([low-low.shift(i) for i in [2,3]],axis=1).dropna().max(axis=1).apply(lambda x:1 if x<0 else 0)
    lower_2=pd.concat([low.shift()-low.shift(i) for i in [2,3]],axis=1).dropna().max(axis=1).apply(lambda x:1 if x<0 else 0)
    lower=pd.concat([lower_1,lower_2],axis=1).any(axis=1)
    down_9=(close-close.shift(4)).apply(lambda x:1 if x <0 else 0).rolling(9).sum().apply(lambda x:1 if x==9 else 0)
    higher_1=pd.concat([high-high.shift(i) for i in [2,3]],axis=1).dropna().min(axis=1).apply(lambda x:1 if x>0 else 0)
    higher_2=pd.concat([high.shift()-high.shift(i) for i in [2,3]],axis=1).dropna().min(axis=1).apply(lambda x:1 if x>0 else 0)
    higher=pd.concat([higher_1,higher_2],axis=1).any(axis=1)
    
    up_9=(close-close.shift(4)).apply(lambda x:1 if x >0 else 0).rolling(9).sum().apply(lambda x:1 if x==9 else 0)
    
    down=pd.concat([lower,down_9],axis=1).dropna().all(axis=1)
    up=pd.concat([higher,up_9],axis=1).dropna().all(axis=1)
    return pd.DataFrame({
        'lower':lower,
        'down_9':down,
        'higher':higher,
        'up_9':up
    })
	codes=QA.QA_fetch_stock_block_adv().get_block('沪深300').code
	data=QA.QA_fetch_stock_day_adv(codes,'2020-09-01','2020-11-26')
	ind=data.add_func(nine_change)
	ind.loc[(pd.Timestamp('2020-11-26'),slice(None)),:].loc[ind.down_9==1]

最后看看 今晚都选出那些股票? 截屏2020-11-26 下午11.57.43.png 好像和同花顺都不太一样?但是包含关系,不影响使用。欢迎大佬们优化!!

3 回复

这个就转序列据说相当的牛

不说了 同花顺这个指标坑了我好几次了 都是泪

九转序列能用的话,直接肉眼就能对任一个股抄底逃顶了。

回到顶部