| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5305 人关注过本帖, 1 人收藏
标题:有对股票指标的编程感兴趣的吗?大家探讨下
取消只看楼主 加入收藏
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
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 38楼 sdta
是k值
2012-03-16 15:50
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 38楼 sdta
这次全部正确,,谢了
2012-03-16 16:21
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 40楼 sdta
我在trma,trix第8列上都输了100,下面是完整的程序,我先计算出rsv值写入trix,再计算出k值写进trma,更新到k,再计算出d,现在要编的是提取每次发生k>d时的列,过滤掉中间数据,再把发生k<d时的列提炼出来,这是第一步,就能计算金叉和死叉的获利情况了,第二步是把在这k>d期间中间发生的高点shhigh的列和k<d期间的最低点shlow的列提出来,看看金叉买入到高点能获利多少,再看看死叉卖出到最低点能避免多少的亏损,当然第2步比较难,分析难度高了


 CLOSE TABLES
 USE 1a0001.DBF ALIAS A
 && 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
 CLOSE ALL
 USE 1a0001.DBF ALIAS A
  n=9
 GO n
 DO WHILE !EOF()
 rsv=((shclose-k)/(d-k))*100
 REPLACE trix WITH rsv  
 SKIP
 n=n+1
 ENDDO
 
 CLOSE ALL


&&sma测试通过
USE 1a0001.DBF ALIAS A
 
 n=9
 GO n
 DO WHILE !EOF()
 a=trix
 GO n-1
 b=trma
 h=(a+2*b)/3
GO n
 REPLACE trma WITH h
 SKIP
 n=n+1
 ENDDO
  CLOSE ALL

 USE 1a0001.DBF ALIAS A
 REPLACE ALL k WITH trma
 
 n=9
 GO n
 DO WHILE !EOF()
 a=k
 GO n-1
 b=d
 h=(a+2*b)/3
GO n
 REPLACE d WITH h
 SKIP
 n=n+1
 ENDDO
 
 CLOSE ALL


[ 本帖最后由 reedwu 于 2012-3-16 16:43 编辑 ]
2012-03-16 16:27
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 43楼 sdta
2012.rar (36.96 KB)
正确,和同花顺的k,d值一致,后面编程要达到的效果,我先用excel做了下,供参考

[ 本帖最后由 reedwu 于 2012-3-17 10:19 编辑 ]
2012-03-16 17:07
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 45楼 sdta
那几个数值是过渡用的,我测算过,都是对的,所以我回写到k,d值中了,不过你是对的,我等会增设下字段,还是一步步走比较好。
另最好把9设成变量,那个是用9天的数据做的,万一要改成12了,那程序很多都要改,比如8要改成11,我的go 语句 中都要改,你看看能有其他方法?我的sma是直接计算的,取的参数是sma(9,3,1),9就是前面的计算rsv,如果3,和1改了,我的计算公式也要变动,最好在程序前面设个参数的修改,这样好调整参数,计算盈利的时候就方便了,只要调下数值,马上就能比较去那个参数比较适应上证了

[ 本帖最后由 reedwu 于 2012-3-16 18:02 编辑 ]
2012-03-16 18:00
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 43楼 sdta
你的trma有问题,trma(9)=(trix+2*trma(8))/3,你的程序是trix和trma一起出,是否有问题?
 REPLACE K WITH BB2,D WITH BB1,TRIX WITH (ABS(shclose-k)/ABS(d-k))*100,TRMA WITH (TRIX+2*G)/3 FOR RECNO()=I+(nday-1) &&trix是否也是前条的记录,而且计算结果也不对
     G=TRMA
2012-03-16 20:29
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 50楼 reedwu
我再理下思路,用nday作为变量,先计算nday里shhigh中最大的值max(程序中写入k列是失误,应多列一列),shlow中最小的值min(程序中写入d列是失误,应多列一列),,然后计算rsv=((shclose-min)/(max-min))*100(程序里写入trix列,最好改为rsv),然后用sma(nday,3,1)计算出k值(程序里是trma列,改为k列好,所以我的程序中有了repl all k with trma 这句),trma=(trix(nday)+2*trma(nday-1))/3,这就是股票软件中kdj指标的k值,然后再用sma(nday,3,1)计算d值,我的表里少了1列(所以我把前面的max,min2列的值覆盖了),应该再加1列,放d值(如新增1列为d),d=(trma(nday)+2*d(nday-1))/3,按我的程序得到的结果都是对的,我核对过,同时可以把trix,trma删掉
2012-03-16 20:46
快速回复:有对股票指标的编程感兴趣的吗?大家探讨下
数据加载中...
 
   



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

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