如何快速的找到所有股票的今年新低?

发布于: 雪球转发:28回复:42喜欢:151

我经常会在文章里分享当天有多少股票创了今年的新低,有网友多次问我,这些数据是怎么来的?今天我们就说说这个事情。

如果要找一个股票是不是创了历史的新低?这个事情很简单,导出复权的价格后判断一下,当天的最低价是不是今年的最低价?或者用眼睛看一眼日K线就大概知道这个股票是否创了今年的新低?关键是现在已经有近5000只股票了,一个一个去查的工作量实在太大了,有没有什么更加高效的办法呢?

这里我们介绍的一种方法,是利用果仁网平台里的自定义函数来获取的。果仁网除了提供大量的常用函数外,还提供了一个自定义函数,可以把你想要获得的数据自己定义一个自定义函数。

我们把这个自定义函数的名字就命名为“今年新低”,定义为: if(后复权最低价=min(后复权最低价,dayy(0)),1,0) 意思就是如果当天的后复权最低价等于今年所有交易日里的后附去最低价的最小值,那么就返回1,否则就返回0。

然后我们在筛选条件里选择自定义函数”今年新低”大于0,如果要按照市值排序,可以在排名条件里选择总市值从大排名到小,选择日期为9月30日,就一下子筛选出了当天东方财富中远海控等400只在当天创了今年新低的股票。

同样,我们可以自定义今年新高、历史新高、历史新低等自定义函数来满足我们快速筛选的要求。

今年新高: if(后复权最高价=max(后复权最高价,dayy(0)),1,0)

历史新高: if(后复权最高价=max(后复权最高价,0),1,0)

历史新低: if(后复权最低价=min(后复权最低价,0),1,0)

但当我们导出这些新高新低后发现一个问题,就是有部分历史新高新低的股票,不在今年新高新低里面,比如历史新低里市值最大的股票是龙源电力,9月30日确实创出了历史新低,那么为什么不在今年新低里面呢?显然这是一个bug。我们再对照这两个表的异同,发现历史新低里不在今年新低股票龙源电力、三一重能国博电子中无人机龙芯中科等有一个共同的特点,就是都是今年新上市的股票,显然我们在判别今年新低的时候把这种异常情况漏了。所以今年新低要改成:

if(or(后复权最低价=min(后复权最低价,dayy(0)), 后复权最低价=min(后复权最低价,0)),1,0)

同样把今年新高改成: if(or(后复权最高价=max(后复权最高价,dayy(0)), 后复权最高价=max(后复权最高价,0)),1,0)

最终9月30日创了今年新低的一共有507只股票,其中230只创了历史新低;12只股票创了今年新高,其中6只创了历史新高。

这个bug算是在程序中的常见bug,得到结果后要养成反复核对的习惯,养成不断修正的习惯,这也是这个小例子给我们的一点启发。

当然你可以用python等工具获得,不管什么工具只要能解决问题都可以。所有导出的数据我都放在附件里,需要的自行去下载。 链接: 网页链接 提取码: riea

精彩讨论

孟浩应2022-10-03 09:32

同花顺问财:今年新低

然然好运2022-10-03 13:38

哪有那么复杂,同花顺输入几个文字就可以了,还公式

轻舟流水2022-10-03 10:48

简单的东西搞复杂了。用一条选股公式就行了。如果是收盘价创今年新低,就是
今年新低:c<ref(llv(c,x),1);
c:代表收盘价,
X:代表交易天数,估算一下就行了。
如果是最低价创今年新低,就把c改成L。

纳履而去2022-10-03 09:22

芝士就是力量

全部讨论

2022-10-03 09:32

同花顺问财:今年新低

2022-10-03 13:38

哪有那么复杂,同花顺输入几个文字就可以了,还公式

2022-10-03 10:48

简单的东西搞复杂了。用一条选股公式就行了。如果是收盘价创今年新低,就是
今年新低:c<ref(llv(c,x),1);
c:代表收盘价,
X:代表交易天数,估算一下就行了。
如果是最低价创今年新低,就把c改成L。

2022-10-03 09:22

芝士就是力量

2022-10-04 03:19

搞复杂了

2022-10-03 22:35

金老师真❤️无私奉献

2022-10-03 17:18

其实直接问财更方便:网页链接

2022-10-03 10:26

可以直接用估值百分位更合理 还兼顾了业绩波动的影响

2022-10-03 09:38

授人以渔,赞

2023-03-08 20:49

请问金老师,如果选三年新低,应该改函数里面的哪个参数?