| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5311 人关注过本帖, 1 人收藏
标题:有对股票指标的编程感兴趣的吗?大家探讨下
只看楼主 加入收藏
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
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
通过测试
程序代码:
CLOSE TABLES
USE 1a0001.DBF ALIAS A
T1=seconds()
BLANK ALL FIELDS K,D,TRIX,TRMA
G=0
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,TRMA WITH (TRIX+2*G)/3 FOR RECNO()=I+8
    G=TRMA
ENDFOR
MESSAGEBOX("共用时间: "+TRANSFORM(seconds()-T1,"@Z 999.99")+" 秒")
BROWSE
结果可对,你下一步的代码段放在楼下。楼上的代码段和前面的不一样,怎么回事。

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

坚守VFP最后的阵地
2012-03-16 17:02
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
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
回复 44楼 reedwu
数据表中第一步计算的K、D值,不要动,在表中重新增加字段,一步步来,不要急。42楼贴子再看看。

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

坚守VFP最后的阵地
2012-03-16 17:13
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
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
回复 46楼 reedwu
程序代码:
CLOSE TABLES
USE 1a0001.DBF ALIAS A
T1=seconds()
BLANK ALL FIELDS K,D,TRIX,TRMA
G=0
nday=9 &&修改天数
FOR I=1 TO RECCOUNT()-(nday-1)
    SELECT SHHIGH,SHLOW FROM 1A0001 WHERE BETWEEN(RECNO(),I,I+(nday-1)) INTO ARRAY AA
    =ACOPY(AA,BB)
    =ASORT(BB,1) &&按SHHIGH排序
    BB1=BB(nday,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,TRMA WITH (TRIX+2*G)/3 FOR RECNO()=I+(nday-1)
    G=TRMA
ENDFOR
MESSAGEBOX("共用时间: "+TRANSFORM(seconds()-T1,"@Z 999.99")+" 秒")
BROWSE

坚守VFP最后的阵地
2012-03-16 18:38
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
谢谢童版主,颜色刺眼,能否换个颜色。

坚守VFP最后的阵地
2012-03-16 20:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你有权设置颜色的呀,自己喜欢哪种就换嘛。

授人以渔,不授人以鱼。
2012-03-16 20:26
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
快速回复:有对股票指标的编程感兴趣的吗?大家探讨下
数据加载中...
 
   



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

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