• 统计学经济
  • 求助, 统计股票收盘价中连续涨3天又连续跌2天要怎么做?

大家好, 我是个搞JAVA的, 统计这一块不怎么熟悉, 我用的是 rJava.

想请教一下大家, 如果有一支股票10天的价格是

price <- c(19815.62, 19612.74, 19932.28, 19689.30, 19733.89, 19619.67, 19205.43, 19423.40, 19581.51, 19422.44)

要取出其中连续涨3天又连续跌2天这样5天5天的数据, 要怎么做呢?

回复 第1楼 的 sinceow:

好像说:二阶导数为零就是拐点,喂鸡分里有这个知识。

左正右负,左负右正,可以区分峰谷。

是这样的吧。

回复 第2楼 的 lyxmoo:

这个还真不能用二阶导数去判断,因为使用导数的前提是这条曲线是光滑的,而股票价格所构成的曲线不满足这一条件。用维尔斯特拉定理就可以造出一个处处连续,处处不可导的例子。1楼所说的价格就是这种情况。

回复 第1楼 的 sinceow:我封装成了一个函数,用来解决你的需求

findindex=function(price,pattern){<br />
var=diff(price)<br />
f=function(x){<br />
out=deparse(substitute(x))<br />
for( i in 1:length(x)){<br />
x[i]=ifelse(x[i]>0,1,ifelse(x[i]<0,0,2))<br />
}<br />
assign(out,x,envir=parent.frame())<br />
}<br />
f(var)<br />
strvar=paste(var,collapse="")<br />
temp=gregexpr(pattern,strvar)[[1]][1]<br />
if(temp!=-1){<br />
lowbound=temp+1<br />
upbound=lowbound+nchar(pattern)-1<br />
a=NULL<br />
for(i in 1:length(lowbound)){<br />
a=list(a,price[lowbound[i]:upbound[i]])<br />
}<br />
a=a[-1]<br />
return (a)}<br />
else<br />
return ("not match!")<br />
}


用法就是比如给定一个向量price,然后你想找什么规则就输入什么方式,比如你想找连续3天升然后2天降,则

findindex(price,"11100")

1代表升,0代表降,2代表平

我的返回是找到就返回一个list,没找到就not match

最后,程序没有经过过多调试,注意![s:11]
</p>

问题:要取出其中连续涨3天又连续跌2天这样5天5天的数据

判断:这是一个模式识别的算法选择。

初步思路:

假设A,B,C,D,E五天交易日为连续的,且A<B<C>D>E。那么,显而易见,B-A>0,C-B>0,D-C<0,E-D<0。这样,模式特征也就出来了。

初级模型:

1.拆分函数,求相邻两数之间差值。

2.逻辑判断函数,求所有差值的整数性质,若为正则设置值为True,若为负则设置值为False。

3.模式匹配函数,求指定宽度取值区间的所有符合指定模式的区间,若符合则此区间的模式变量的值为模式A(假设A是两升两降模式代码)。

4.合并函数,合并模式变量列到原数据集中。

注意:我这里在进行分析的时候是来自于假设为仅对一周交易日进行分析,而不考虑之前和之后的交易日数据,所以实质是只包含五个交易日的四个结果值,具体到本案,1#自行进行调整。显而易见这是一个股票交易特征提取的算法实现,所以代码自己写吧,

6 个月 后
dx.sign <- sign(diff(x))
fun<-function(i,x){
f[i]<-ifelse(x[i]>0££...,1,0)}
lapply(1:(length(x)-6),fun,x=dx.sign)
仅供参考
1 个月 后
只说一下想法:可以生成一个对应的示性向量,比如涨为‘1’,跌为‘0’,然后找你要的游程即可。