| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5311 人关注过本帖, 1 人收藏
标题:有对股票指标的编程感兴趣的吗?大家探讨下
只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
回复 30楼 reedwu
程序代码:
CLOSE TABLES
USE 1a0001.DBF ALIAS A
T1=seconds()
BLANK ALL FIELDS K,D
FOR I=1 TO RECCOUNT()-8
    SELECT SHHIGH,SHLOW FROM 1A0001 WHERE BETWEEN(RECNO(),I,I+8) INTO ARRAY AA
    =ACOPY(AA,BB)
    =ASORT(BB) && BB(1,2)为最小值,BB(9,1)为最大值
    SELECT A
    REPLACE K WITH BB(1,2),D WITH BB(9,1),TRIX WITH (ABS(shclose-k)/ABS(d-k))*100 FOR RECNO()=I+8
ENDFOR

?"运行时间: ",seconds()-T1," 秒"


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

坚守VFP最后的阵地
2012-03-16 10:49
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
USE 1a0001.DBF ALIAS A
BLANK ALL FIELDS K
FOR I=1 TO RECCOUNT()-8
SELECT SHLOW FROM 1A0001 WHERE BETWEEN(RECNO(),I,I+8) INTO ARRAY AA
=ACOPY(AA,BB)
=ASORT(BB) && BB(1)为最小值,BB(9)为最大值
SELECT A
REPLACE K WITH BB(1) FOR RECNO()=I+8

SELECT SHhigh FROM 1A0001 WHERE BETWEEN(RECNO(),I,I+8) INTO ARRAY AA
=ACOPY(AA,BB)
=ASORT(BB) && BB(1)为最小值,BB(9)为最大值
SELECT A
REPLACE d WITH BB(9) FOR RECNO()=I+8

ENDFOR
n=9
GO n
DO WHILE !EOF()
rsv=((shclose-k)/(d-k))*100
REPLACE trix WITH rsv  
SKIP
n=n+1
ENDDO

成功计算出rsv,谢谢,现在编 K=SMA(RSV,3,1);
2012-03-16 10:53
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 31楼 sdta
哈哈,没注意到你又改进了程序,我的笨程序见笑了
2012-03-16 10:58
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
回复 32楼 reedwu
代码不要分开写,按我的代码写就能达到要求了。

坚守VFP最后的阵地
2012-03-16 10:59
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 34楼 sdta
&&sma程序测试
CLOSE TABLES
 USE 1a0001.DBF ALIAS A
  n=9
  GO n
  DO WHILE !EOF()
 f=trix
 go n-1
g=trma
go n
h=(f+2*g)/3
 REPLACE trma WITH h
 SKIP
 n=n+1
 ENDDO
 CLOSE ALL
通过测试

[ 本帖最后由 reedwu 于 2012-3-16 14:51 编辑 ]
2012-03-16 13:00
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 35楼 reedwu
不用了,上楼已解决,但请高手优化下

[ 本帖最后由 reedwu 于 2012-3-16 14:52 编辑 ]
2012-03-16 13:26
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 31楼 sdta
发现个问题,运行后发现5185行~5187行数值应该是2325.03,5188行数值是2332.25,但你程序的结果是5185~5188行的数值都是2332.25,为什么?sma也已解决,现在测试如何取第一次k>d的上证指数的收盘价作为买入点,到这次k<d止的收盘价作为卖出点的获利情况,连续n次直到表底,总的获利和每次发生k>d,k<d时的时间点。如果通过的话,大家就可以测试其他乱吹的什么神奇指标真正的面目了。


[ 本帖最后由 reedwu 于 2012-3-16 15:01 编辑 ]
2012-03-16 14:40
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
回复 37楼 reedwu
程序代码:
CLOSE TABLES
USE 1a0001.DBF ALIAS A
T1=seconds()
BLANK ALL FIELDS K,D
FOR I=1 TO RECCOUNT()-8
    SELECT SHHIGH,SHLOW FROM 1A0001 WHERE BETWEEN(RECNO(),I,I+8) INTO ARRAY AA
    =ACOPY(AA,BB)
    =ASORT(BB,1) &&按SHHIGH排序
    BB1=BB(9,1) &&最大值
    =ASORT(BB,2) &&按SHLOW排序
    BB2=BB(1,2) &&最小值
    SELECT A
    REPLACE K WITH BB2,D WITH BB1,TRIX WITH (ABS(shclose-k)/ABS(d-k))*100 FOR RECNO()=I+8
ENDFOR

?"运行时间: ",seconds()-T1," 秒"


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

坚守VFP最后的阵地
2012-03-16 15:11
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 38楼 sdta
是k值
2012-03-16 15:50
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用reedwu在2012-3-16 13:00:34的发言:

&&sma程序测试
CLOSE TABLES
 USE 1a0001.DBF ALIAS A
  n=9
  GO n
  DO WHILE !EOF()
 f=trix
 go n-1
 g=trma
go n
 h=(f+2*g)/3
 REPLACE trma WITH h
 SKIP
 n=n+1
 ENDDO
 CLOSE ALL
通过测试
trma的值都是空?改过的代码在38楼


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

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



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

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