| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5305 人关注过本帖, 1 人收藏
标题:有对股票指标的编程感兴趣的吗?大家探讨下
取消只看楼主 加入收藏
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 52楼 sdta
你看下运行的结果,我是手工在trma的第8行加了个100,这样9~17行的结果就对了,但即使不加也不会影响18行后面的结果,你看最后2条记录,trma(5199)=18.9949,trix(5200)=82.7349,trma(5200)=(82.7349+2*18.9949)/3 结果应该是40.2415,而你的结果是27.5783,也不是取trix(5199)56.9848的结果,为什么?是不是g=0出的问题,你直接trma=trix(5200)/3

[ 本帖最后由 reedwu 于 2012-3-16 21:04 编辑 ]
2012-03-16 20:57
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 56楼 sdta
公式没问题,最好把3也设为变量m,这样sma(nday,m,1)就可以表达为 trma(nday)=(trix(nday)+(m-1)*trma(nday-1))/m 了,方便以后改参数
2012-03-16 21:11
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 58楼 sdta
都不对,都是直接/3
2012-03-16 21:27
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 60楼 sdta
trix的没问题
2012-03-16 21:35
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 62楼 sdta
正确,现在语句简单了。我在1a0001中加了字段trmd,trmd(nday)=(trma(nday)+2*trmd(nday-1))/3,作为kdj的d值
USE 1a0001.DBF ALIAS A
 T1=seconds()
 BLANK ALL FIELDS K,D,TRIX,TRMA,trmd
G=100 &&此处设为100,否则nday开始的几条数据不正确
 h=100

 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)
  
  GO I+(nday-1)
     G=TRMA  &&trma列为kdj.k
     repl TRMd WITH (TRma+2*h)/3 FOR RECNO()=I+(nday-1) &&增加了trmd列,为kdj.d 本想放上面的,但编译不通过,搞不懂,所以另写一行了
     GO I+(nday-1)
     h=trmd
ENDFOR
 MESSAGEBOX("共用时间: "+TRANSFORM(seconds()-T1,"@Z 999.99")+" 秒")
 BROWSE
通过,结果正确

[ 本帖最后由 reedwu 于 2012-3-17 00:48 编辑 ]
2012-03-16 23:38
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 44楼 reedwu
2012.rar (36.96 KB)
SELECT shno,shtime,shclose,trma,trmd FROM 1a0001 WHERE trma>trmd 只能取到trma>trmd 的值,如4426行~4443行,但我想只取出4426行,其他连续的trma>trmd就过滤掉,直到出现4444行,trma<trmd,并将4426行和4444行放在新表中的同一行中,怎么编?
2012-03-17 10:31
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 65楼 reedwu
&&k>d
CLOSE TABLES
 USE 1a0001.DBF ALIAS A
SELECT shno,shtime,shclose,trma,trmd FROM a WHERE trma>trmd INTO TABLE kd
ALTER table kd ADD COLUMN trme number(8,4)  &&增加了个字段,如果下一条也是k>d的话,那shno之差就是1,然后删除=1的就是每次的金叉记录,下面死叉的同理
USE kd
  n=2
 GO n
 DO WHILE !EOF()
 a=shno
 GO n-1
 b=shno
 h=a-b
GO n
  REPLACE trme WITH h
 SKIP
 n=n+1
 ENDDO
DELETE FOR trme=1
PACK
 CLOSE ALL


&&k<d
USE 1a0001.DBF ALIAS A
SELECT shno,shtime,shclose,trma,trmd FROM a WHERE trma<trmd INTO TABLE dk
ALTER table dk ADD COLUMN trme number(8,4)
USE dk
  n=2
 GO n
 DO WHILE !EOF()
 a=shno
 GO n-1
 b=shno
 h=a-b
GO n
  REPLACE trme WITH h
 SKIP
 n=n+1
 ENDDO
DELETE FOR trme=1
PACK
 CLOSE ALL
用trmd>trma生成kd表,用trmd<trma生成dk表,我再合并上2表,呵呵,麻烦了点,但也算成了


[ 本帖最后由 reedwu 于 2012-3-17 13:08 编辑 ]
2012-03-17 11:21
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 68楼 sdta
因为前几天收盘就是最高价,所以数值都是100,不然的话,前30多条的记录都是错的,呵呵,不过也没关系,肯定不会用到那么前的数据
2012-03-17 12:42
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 70楼 sdta
正确,程序更精简了,帮我看看66楼的程序,我把每次k>d的值取出后放进了kd表,把每次k<d的值取出后放进了dk表,然后合并2表,但dk表的第一条记录shno是17比kd表第一条记录35早,所以要过滤掉,然后就是在kd表中增加字段把dk的数据写在kd的后面,

[ 本帖最后由 reedwu 于 2012-3-17 13:20 编辑 ]
2012-03-17 13:11
reedwu
Rank: 1
等 级:新手上路
威 望:1
帖 子:113
专家分:5
注 册:2006-9-23
收藏
得分:0 
回复 73楼 sdta
不一定要追加记录的,2表也是中间过程,出来的记录应该是对应的,有k>d,就有k<d,但开始时可能会少条k>d的记录,表尾会少k<d的记录,如我kd表中第1条k>d的记录对应的shno是35,dk表中的第1条记录是17,第2条记录是47,所以要把dk中第2条对应到kd表的第1条中,表示kd金叉后持续12天才死叉,我是要合并2张表后看看数据再计算收益,但程序应该可以直接计算出shclose(47)-shclose(35),判断依据可能是上一记录是trma>trmd,但下1条记录是trma<=trmd了,不过还是能生成一张表好点能看到所有的信息,效果如下:
shno,shtime,  shclose,  shno,shtime,shclose,  profit   前三条是我kd表的值,后三条是dk表的值,增加profit,可能字段名要重设下
                         17 19919111 134.60              这条就不要了
35   19910206   129.13   47 19910226 133.93 133.93-129.13
70 ...                   78...
5200  20120313                                           这后面没数据了所以只有金叉,可以留                                   

[ 本帖最后由 reedwu 于 2012-3-17 15:19 编辑 ]
2012-03-17 14:58
快速回复:有对股票指标的编程感兴趣的吗?大家探讨下
数据加载中...
 
   



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

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