一个月内连续三天涨停的股票

阅读(707) 标签: 日期排序, 分组, file, import, derive, sort, run,

l  问题

下面是某证券交易所一个月内的日收盘价记录,其中CODE列为股票代码,DT为日期,CL为收盘价。

 

试找出这个月内曾连续三天涨停的股票。为避免四舍五入产生的误差,涨停的比率定为9.5%

l  思路

大致思路:将记录按代码和日期排序,然后按股票代码分组,就得到了每支股票一个月来的价格表,这样就能轻易的算出每支股票每天的涨跌率,通过将涨跌率和涨停线比较即可知道是否涨停,最后统计出连续三天涨停的天数。

1.  首先为日记录表的每一条记录都增加一个字段,用于记录和前一天相比的涨跌率,值暂时留空。

2.  将表按代码和日期排序,这个操作的目的是保证后面分组后的序列中,每组内都是按照日期排序的。

3.  将表按股票代码分组,由于已经按代码排序过了,就不用再次排序了。

4.  对每组内的每条记录,算出其涨跌率,注意如果是组内第一条记录,那么没有上一条记录,涨跌记为0

5.  选出每组连续3天涨停的的次数大于0的股票,再取出其代码即可。

l  代码

 

A

 

1

=file("C:\\txt\\StockRecords.txt").import@t()

股市日记录表

2

0.095

涨停线

3

=A1.derive(:UP)

添加一个用于记录涨跌幅度的列

4

=A3.sort(CODE,DT)

将表按代码和日期排序

5

=A4.group@o(CODE)

按代码分组

6

=A5.run(~.run(UP=if(#==1,0,(CL-CL[-1])/CL[-1])))

算出涨跌率并写入UP字段

7

=A6.select(~.count(UP>A2 && UP[-1]>A2 && UP[-2]>A2)>0).(CODE)

选出连续三天涨停次数大于0的股票的代码

 

l  结果