| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5311 人关注过本帖, 1 人收藏
标题:有对股票指标的编程感兴趣的吗?大家探讨下
只看楼主 加入收藏
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
结帖率:100%
收藏(1)
 问题点数:0 回复次数:120 
有对股票指标的编程感兴趣的吗?大家探讨下
1a0001.rar (164.97 KB)
附件是上证的日数据,我想编出k,d值,RSV=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100; 当天的收盘价shclose减9天内的最低值shlow 除 9天内的最高-最低,9需要设置为变量,方便参数的修改
K=SMA(RSV,3,1);
D=SMA(K,3,1);
需要解决2个常用的函数sma和ema,
EMA是指数平滑平均,它真正的公式表达是:当日指数平均值=平滑系数*(当日指数值-昨日指数平均值)+昨日指数平均值;平滑系数=2/(周期单位+1);由以上公式推导开,得到:EMA(C,N)=2*C/(N+1)+(N-1)/(N+1)*昨天的指数收盘平均值;
仔细看:X=EMA(C,2)=2/3*C+1/3*REF(C,1); EMA(C,3)=2/4*C+2/4*X;所以,它在计算平均值时,考虑了前一日的平均值,平滑系数是定的,它是利用今日的值与前一日的平均值的差,再考虑平滑系数,计算出来的平均值,所以也有叫异同平均的。
因为EMA的平滑系数是定的,=2/(周期+1);如果要改变平滑系数咋办?这就用到了SMA;
SMA(C,N,M)与EMA的区别就是增加了全重参数M,也就是用M代替EMA平滑系数中的2,这样我们可以根据需要调整当日数值在均价中的权重=M/N。(要求N>M);
要的结果就是测试指标提示买入卖出点的正确性,能获得的收益
搜索更多相关主题的帖子: 指数 系数 平均值 上证 收盘 
2012-03-15 11:11
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
先解决rsv的取值,设n=9,就是比较1-9行中的shlow那个值最低,shhigh中那个最高,取9行的shclose计算,写入9行的k中,然后从2-10行再计算,程序怎么编?
2012-03-15 12:45
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
USE 1a0001.DBF
GO 1
l1=shlow
h1=shhigh
GO 2
l2=shlow
h2=shhigh
GO 3
l3=shlow
h3=shhigh
GO 4
l4=shlow
h4=shhigh
GO 5
l5=shlow
h5=shhigh
GO 6
l6=shlow
h6=shhigh
GO 7
l7=shlow
h7=shhigh
GO 8
l8=shlow
h8=shhigh
l0=MIN(l1,l2,l3,l4,l5,l6,l7,l8)
h0=MAX(h1,h2,h3,h4,h5,h6,h7,h8)
n=9
GO n
DO WHILE !EOF()
l9=shlow
h9=shhigh
c9=shclose
l=MIN(l0,l9)
h=MAX(h0,h9)
RSV=(c9-l)/(h-L)*100
REPLACE k WITH rsv
SKIP
n=n+1
ENDDO
程序有问题,第10天的取值还是用了第一天的低值,另我用了9个取值,能用个循环的方法取值?
2012-03-15 15:38
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9844
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用reedwu在2012-3-15 15:38:50的发言:

USE 1a0001.DBF
GO 1
l1=shlow
h1=shhigh
GO 2
l2=shlow
h2=shhigh
GO 3
l3=shlow
h3=shhigh
GO 4
l4=shlow
h4=shhigh
GO 5
l5=shlow
h5=shhigh
GO 6
l6=shlow
h6=shhigh
GO 7
l7=shlow
h7=shhigh
GO 8
l8=shlow
h8=shhigh
l0=MIN(l1,l2,l3,l4,l5,l6,l7,l8)
h0=MAX(h1,h2,h3,h4,h5,h6,h7,h8)
n=9
GO n
DO WHILE !EOF()
l9=shlow
h9=shhigh
c9=shclose
l=MIN(l0,l9)
h=MAX(h0,h9)
RSV=(c9-l)/(h-L)*100
REPLACE k WITH rsv
SKIP
n=n+1
ENDDO
程序有问题,第10天的取值还是用了第一天的低值,另我用了9个取值,能用个循环的方法取值?
local l(9)
USE 1a0001.DBF
scan for between(recno(),1,9)
    l(recno())=shlow
endscan
do while 改为scan  endscan 或for  endfor 速度快

[ 本帖最后由 sdta 于 2012-3-15 16:39 编辑 ]

坚守VFP最后的阵地
2012-03-15 15:43
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
楼上有1a0001.rar的附件,不能下载?
2012-03-15 15:54
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
应该是双循环的问题,一个是skip -1 参数n次表示前几天的最低值,一个是skip 1 到表尾
2012-03-15 16:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
很可惜我没本钱炒股!

授人以渔,不授人以鱼。
2012-03-15 17:01
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
学以致用,将来你做股票的时候一定能用到,可惜我的vfp功力不深,数据是不会忽悠人的
2012-03-15 20:21
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
local l(9)
 USE 1a0001.DBF
 scan for between(recno(),1,9)
     l(recno())=shlow
 endscan
 do while 改为scan  endscan 或for  endfor 速度快
 
[ 本帖最后由 sdta 于 2012-3-15 16:39 编辑 ]
不好意思,这段程序能理解是取1~9行的shlow数据?哪怎样才能比较出哪个是最小值?h=min(l(recno()))不能通过,而且下次的取值是比较2~10行中的最小值,这个是用9天的最小值,最好是直接改成变量n,取n天里最小值和最大值再用第n天的shclose计算出rsv,写入第n天的k值中,执行到表尾。我的水平有限,可能表达上不清楚,不好意思了,谢谢你的答复。
2012-03-15 20:57
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9844
专家分:27213
注 册:2012-2-5
收藏
得分:0 
回复 9楼 reedwu
local l(9),CSTR
CSTR=""
USE 1a0001.DBF
FOR I=1 TO 9 &&1-9天
    GO I
    l(I)=shlow
    CSTR=CSTR+l(I)+IIF(I<9,",","")
ENDFOR
? MAX(&CSTR),MIN(&CSTR)


[ 本帖最后由 sdta 于 2012-3-15 21:09 编辑 ]

坚守VFP最后的阵地
2012-03-15 21:07
快速回复:有对股票指标的编程感兴趣的吗?大家探讨下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017884 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved