阅读原文:京东量化平台-为投资者提供数据支持、策略开发到策略输出的量化生态服务
京东金融官方资讯QQ:3414182370 有什么想问的想说的都可以来参与!还有机会获取奖品!
命题:找出连续下跌的K线
实现平台:京东量化
语言:python
今天有个朋友问我,能不能找到那些连续下跌6天以上的个股,对这样的个股进行买入,概率上说应该风险较小,听起来蛮不错。
果真是如此吗?让事实说话,下面我们一起编码,把连续下跌的股票找出来。
在写代码前,我们要想清楚实现思路:
第一步:如何定义连续下跌:一般来说,可以取得近20天的收盘数据,然后循环去判断。
这并不是个好方法,因为运算量很大,且需要编写的代码也多。下面我想到一个方法,就是用groupby模块的分组功能,然后构造一个迭代器这样,几乎不需要用到一次循环就可以得到需要的数值。
我们先来了解一下itertools.groupby
假设一个lst是[1,1,1,-1,-1]我们用分组得到
Out=[(key,len(list(group))) for key,group in itertools.groupby(lst)]
就会得到:
[(1,3),(-1,2)]
这里1代表上涨,-1代表下跌,那么得到连续下跌的K线数就是判断lst[-1][0]是不是等于-1,如果是,返回lst[-1][1]就是连续下跌的K线数值。看下图是不是:
科普了相关知识后,第二步,我们到[研究]里去实践一下:
上面返回的数组已经把当天的涨幅情况列出来了,但这个数值我们要把它变成1或者是-1。怎么办?
用自己除自己就可以了,把上面的代码一并加入,看下面。
创业板指数在元月1号至20号间产生了连续下跌的8根阴线,这完全没有问题,这种方法的结果很正确。
最后,我们只需要完善一下代码,那么找出一段时间内最大的连续阴线数就出来了,完整代码在下面。
我们只把算法应用到策略中就行了。代码中没有用到循环,所以速度很快。
说了这么多,最后策略回测结果怎么样呢?我还是分享一下吧。
阅读原文:http://club.jr.jd.com/quant/topic/1100358
关注京东量化学院!获取更多最新最全面的量化交易知识!