搜索
查看: 50804|回复: 12

[讨论] 用VFP读取通达信日K线资料

[复制链接]
发表于 2010-10-16 22:27 | 显示全部楼层

用VFP读取通达信日K线资料

来自:MACD论坛(bbs.shudaoyoufang.com) 作者:luckeeylee 浏览:50804 回复:12

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
通达信日K线资料是存在 C:\new_gxzq_v6\Vipdoc\sh\lday(上海股票)
C:\new_gxzq_v6\Vipdoc\sz\lday (深圳股票)两个地方,文件是以DAY为扩展名的。文件是以二进制格式存放。
每天的记录为32个字节。
* 以深发展1997年1月2日的数据为例:
* 00000000h: 36 B8 30 01 72 06 00 00 86 06 00 00 60 06 00 00 ;
* 00000010h: 72 06 00 00 77 69 D4 4C 68 FE 66 00 74 06 00 00 ;
* 以下是分解 00000000h:|36 B8 30 01|72 06 00 00|86 06 00 00|60 06 00 00|;
* [36 B8 30 01] = * 0x0130B836 = 19970102 日期[unsigned long]
* [72 06 00 00] = 0x00000672 = 1650/100 = 16.50 开盘[unsigned long]
* [86 06 00 00] = 0x00000686 = 1670/100 = 16.70 最高[unsigned long]
* [60 06 00 00] = 0x00000660 = 1632/100 = 16.32 最低[unsigned long]
* 00000010h:|72 06 00 00|77 69 D4 4C|68 FE 66 00|74 06 00 00|;
* [72 06 00 00] = 0x00000672 = 1650/100 = 16.50 收盘[unsigned long]
* [77 69 D4 4C] = 0x4CD46977 = 111365048.0 成交额[float]
* [68 FE 66 00] = 0x0066FE68 = 6749800 成交量[unsigned long]
* [74 06 00 00] = 0x00000674 = 1652/100 = 16.52 上日收盘[unsigned long](保留)

废话少讲,直接给出程式,不明的请留言。

CLEAR
SET PATH TO  r:\
gnfilehandle= FOPEN('r:\sz000001.day',0)
nsize = FSEEK(gnfilehandle, 0, 2)
IF nsize <= 0
WAIT WINDOW "This file is empty!" NOWAIT
= FCLOSE(gnfilehandle)
RETURN
ENDIF
CREATE CURSOR gp(date_ N(10),bv N(10,2),hv N(10,2),lv N(10,2),cv N(10,2),amo N(20,3),vol N(20),refcv N(10,2))
= FSEEK(gnfilehandle, 0, 0)      && 移动指针到开始
FOR i=1 TO nsize/32
cstring = FREAD(gnfilehandle,32)
*日期
tdate=EVALUATE("0x" + RIGHT(TRANSFORM(ASC(SUBSTR(cstring,4,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,3,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,2,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,1,1)), "@0"),2))
*开盘
tbv=EVALUATE("0x" + RIGHT(TRANSFORM(ASC(SUBSTR(cstring,8,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,7,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,6,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,5,1)), "@0"),2))/100
*最高
thv=EVALUATE("0x" + RIGHT(TRANSFORM(ASC(SUBSTR(cstring,12,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,11,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,10,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,9,1)), "@0"),2))/100
*最低
tlv=EVALUATE("0x" + RIGHT(TRANSFORM(ASC(SUBSTR(cstring,16,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,15,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,14,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,13,1)), "@0"),2))/100
*收盘
tcv=EVALUATE("0x" + RIGHT(TRANSFORM(ASC(SUBSTR(cstring,20,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,19,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,18,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,17,1)), "@0"),2))/100
*成交额
tamo=f16to10(RIGHT(TRANSFORM(ASC(SUBSTR(cstring,24,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,23,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,22,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,21,1)), "@0"),2))
*成交量
tvol=EVALUATE("0x" +RIGHT(TRANSFORM(ASC(SUBSTR(cstring,28,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,27,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,26,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,25,1)), "@0"),2))
*昨日收盘
trefcv=EVALUATE("0x" + RIGHT(TRANSFORM(ASC(SUBSTR(cstring,32,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,31,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,30,1)), "@0"),2)+;
  RIGHT(TRANSFORM(ASC(SUBSTR(cstring,29,1)), "@0"),2))/100
INSERT INTO gp(date_ ,bv ,hv ,lv ,cv,amo,vol,refcv) ;
  VALUES (tdate ,tbv ,thv ,tlv ,tcv,tamo,tvol,trefcv)
ENDFOR
= FCLOSE(gnfilehandle)
sample.JPG
金币:
奖励:
热心:
注册时间:
2010-10-7

回复 使用道具 举报

承保人组织 该用户已被删除
发表于 2010-10-16 23:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
金币:
奖励:
热心:
注册时间:

回复 使用道具 举报

签到天数: 67 天

发表于 2010-10-17 07:31 | 显示全部楼层
#*)*# #bb#
金币:
奖励:
热心:
注册时间:
2009-3-9

回复 使用道具 举报

签到天数: 67 天

发表于 2010-10-17 07:44 | 显示全部楼层
#loveliness# #loveliness#
金币:
奖励:
热心:
注册时间:
2009-3-9

回复 使用道具 举报

签到天数: 1 天

发表于 2010-10-17 15:06 | 显示全部楼层
期待更多更好的作品!
金币:
奖励:
热心:
注册时间:
2007-9-5

回复 使用道具 举报

签到天数: 1687 天

发表于 2010-10-17 15:09 | 显示全部楼层
VFP是什么东西啊#*31*#
金币:
奖励:
热心:
注册时间:
2008-5-12

回复 使用道具 举报

发表于 2010-10-24 02:14 | 显示全部楼层
请问函数f16to10的代码在哪里?成交金额一直无法解决,请帮助,另外如何写入通达信日线数据?谢谢。
金币:
奖励:
热心:
注册时间:
2010-10-24

回复 使用道具 举报

发表于 2010-10-24 02:16 | 显示全部楼层
* [77 69 D4 4C] = 0x4CD46977 = 111365048.0 成交额[float]
* [68 FE 66 00] = 0x0066FE68 = 6749800 成交量[unsigned long]

val(0x0066FE68) = 6749800  但是 val(0x4CD46977) != 111365048.0
金币:
奖励:
热心:
注册时间:
2010-10-24

回复 使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站声明:MACD仅提供交流平台,请交流人员遵守法律法规。
值班电话:18209240771   微信:35550268

举报|意见反馈|手机版|MACD俱乐部

GMT+8, 2025-9-13 00:08 , Processed in 0.042683 second(s), 12 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表