如何用C程序实现 读取DAT股票文件数据?专家请进!

alibaren 2014-11-09 08:49:19
最近在研究同花顺这个软件的目录结构,突发奇想,能不能直接用C写一个程序把缓存的DAT数据文件读取出来自己分析呢!

可是我尝试了很多次,都失败了!我失败的主要原因是对这个数据文件的数据形式没有分析好!导致数据一直不方便读取。

现在把我研究的这个文件附图如下:



综合网上其他人的研究,我自己分析如下:
--===============================================================
-- 文件头16个字节剖析(CODE:883300 分时线)
-- 0x6864312E3000 6 固定
-- 0xF2000000 4 记录数 242条 刚好一天的数据
-- 0x7A00 2 记录开始位置: 122 我觉得不对,因为实际上 文件头(16) + 列定义(84) = 100
-- 0x5400 2 每条记录的长度: 84
-- 0x1500 2 每条记录的列数: 21
-----------------------------------------------------------------
-- 列定义: 04表示列长度
1 -- 0x0D700004 4
2 -- 0x0A700004 4
3 -- 0x17700004 4
4 -- 0x16700004 4
5 -- 0x13700004 4
6 -- 0xCF700004 4
7 -- 0xCC700004 4
8 -- 0xCB700004 4
9 -- 0xCA700004 4
10-- 0xC9700004 4
11-- 0xDF700004 4
12-- 0XD2700004 4
13-- 0XD1700004 4
14-- 0xD0700004 4
15-- 0XE6700004 4
16-- 0xE5700004 4
17-- 0xE4700004 4
18-- 0xE3700004 4
19-- 0xE2700004 4
20-- 0xE1700004 4
21-- 0xE0700004 4
--===============================================================
现在的问题出来了,1,数据是从哪个字节开始的? 2,数据如何转换?3,程序是否可以封装成DLL然后让同花顺主程序(hexin.exe)调用DLL ,实现及时获取数据!
...全文
915 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
alibaren 2014-12-03
  • 打赏
  • 举报
回复
其实读取这个二进制文件不难,只是因为以前没有弄过,不熟悉方法。 后来看了一下书,搜索了一下资料,参考了一下博友们的建议,再加上我自己的思考, 终于有一天早上,我把全部字段给破解出来了,原来大多数都是unsigned int 类型,只不过它的第一字节还不是数据组成体,而是调解倍数的。这算是我自己独立重大发现吧。在全网搜遍了也没有人这么解析过数据。 哈哈哈!坚持下去!学好C
alibaren 2014-12-03
  • 打赏
  • 举报
回复
历经一个月锲而不舍的研究,终于把同花顺分时数据拿到了! 感谢那些无私帮助我的博友们! 有了你们,我才有坚持下去的动力!
alibaren 2014-11-22
  • 打赏
  • 举报
回复
引用 17 楼 haibo_kang 的回复:
按照惯例,应该使时间戳格式,我都忘了当时是自己写的函数还是用的库函数,应该不难,你试试
按你的方法我正在尝试,现在有一个问题我还没解决,之前以为不难,但是现在我还是搞不定, 如何将19 55 4c 32 这样的按照 32 4C 55 19的顺序读出来呢,请直接告诉我具体实现的程序细节,拜托
kevin_khb 2014-11-18
  • 打赏
  • 举报
回复
按照惯例,应该使时间戳格式,我都忘了当时是自己写的函数还是用的库函数,应该不难,你试试
alibaren 2014-11-17
  • 打赏
  • 举报
回复
引用 15 楼 haibo_kang 的回复:
int a = 0x19554c32; 这样就能拿到数据,但读文件的时要二进制打开读,就是fopen("数据文件名“,"rb"); 然后fread读,都到一个buf里,让后将buf按照你的类型强转就行。 实在不行你发我,只要直到确定数据格式,10分钟就好了,我这个写了4年。。。。。
非常感谢你的帮助,我自己破解出来了。其实就是一个倒装,然后直接换算成十进制,只是这一条记录里我还是没能破解出时间这个字段,要是兄台你有办法,请赐教
kevin_khb 2014-11-13
  • 打赏
  • 举报
回复
int a = 0x19554c32; 这样就能拿到数据,但读文件的时要二进制打开读,就是fopen("数据文件名“,"rb"); 然后fread读,都到一个buf里,让后将buf按照你的类型强转就行。 实在不行你发我,只要直到确定数据格式,10分钟就好了,我这个写了4年。。。。。
alibaren 2014-11-11
  • 打赏
  • 举报
回复
引用 12 楼 haibo_kang 的回复:
这一看就是二进制数据,前面是头,你分析出来了,当然也不知道对不对。 后面是数据,但是你不知道数据的格式,就是不知道是字符串还是整数还是浮点数。。。。。 不知道,那你只能试。。。 知道的话,很简单,直接fread读到缓冲,然后强转成它真正的格式就行了。。。。
是股票的数据,基本上是无符号浮点型,除了一个日期时间外没有别的数据类型
alibaren 2014-11-11
  • 打赏
  • 举报
回复
说错了 是unsigned int 占四个字节
我截取最后几十条数据,大家帮我看下改怎么转换成十进制



例如最后一组:OX19554c32 -----> (?)
是直接转换成十进制吗?
kevin_khb 2014-11-10
  • 打赏
  • 举报
回复
这一看就是二进制数据,前面是头,你分析出来了,当然也不知道对不对。 后面是数据,但是你不知道数据的格式,就是不知道是字符串还是整数还是浮点数。。。。。 不知道,那你只能试。。。 知道的话,很简单,直接fread读到缓冲,然后强转成它真正的格式就行了。。。。
alibaren 2014-11-10
  • 打赏
  • 举报
回复
引用 10 楼 jmy5945hh 的回复:
例如 http://data.eastmoney.com/zjlx/detail.html
很感谢你的热心,可这些不是我要的数据
alibaren 2014-11-10
  • 打赏
  • 举报
回复
引用 6 楼 mujiok2003 的回复:
不同的exchange的market data 和 reference data格式是不同的。
大湿,话说的好玄幻 完全听不懂的赶脚 这个是自定义指标公式下股票分时(一天)的数据文件
alibaren 2014-11-10
  • 打赏
  • 举报
回复
具体如何实现?
引用 7 楼 jmy5945hh 的回复:
偏方 不要从客户端抓数据,最好的办法是爬虫走网页
xionggch 2014-11-10
  • 打赏
  • 举报
回复
这个你要先确定数据文件的结构没有问题 帮忙顶个.............
景语 2014-11-10
  • 打赏
  • 举报
回复
偏方 不要从客户端抓数据,最好的办法是爬虫走网页
mujiok2003 2014-11-10
  • 打赏
  • 举报
回复
不同的exchange的market data 和 reference data格式是不同的。
alibaren 2014-11-10
  • 打赏
  • 举报
回复
看来我的问题有难度 ,没人敢回答
alibaren 2014-11-10
  • 打赏
  • 举报
回复
引用 3 楼 xionggch 的回复:
这个你要先确定数据文件的结构没有问题 帮忙顶个.............
数据文件结构没有问题 现在问题是无法分析出来数据形式
alibaren 2014-11-09
  • 打赏
  • 举报
回复
自己动手 风衣足食
alibaren 2014-11-09
  • 打赏
  • 举报
回复
没人理 自己顶

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧