打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用Python破解通达信股票数据

  使用Python破解通达信股票数据

  最近在研究软件选股与自动交易,所以需要获取股票的每日数据。

  我的电脑上已经安装了券商的交易软件,交易软件提供商是通达信。

  下面简要介绍从通达信的交易软件中获取股票数据的过程,使用Python语言。

  本文参考了CSDN的一篇文章,原始链接如下:

  http://blog.csdn.net/liuyukuan/article/details/53560278

  一、通达信的股票文件格式

  通过交易软件的“盘后数据下载”功能,可以下载到所有股票的日线数据,具体位置在:

  交易软件的安装目录\vipdoc\sh[sz]\lday

  文件命名为:sh[sz]000001.day

  日线文件中,每32字节(32bytes)为一天的记录。

  每4个字节为一项数据:

  第1项,交易日期

  第2项,开盘价

  第3项,最高价

  第4项,最低价

  第5项,收盘价

  第6项,成交金额

  第7项,成交量

  第8项,未使用

  二、Python代码

  1. 设计思路:

  将日线文件转换成CS格式的文件,方便后期处理。

  CSV是一种文本文件的格式,使用逗号或其它分隔符将数据逐列隔开,每行代表一条记录。

  可以使用Excel打开CSV格式的文件。

  打开日线文件,依次读入32个字节,然后将这8项数据变成字符格式后以逗号隔开,写入CSV文件。

  2. 主要函数介绍:

  这里用到了strut库中的unpack函数,该函数用于将字节序列解析为字符串,有许多可用的格式。

  3. 代码:

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. import os
  4. from struct import unpack
  5. # 将通达信的日线文件转换成CSV格式
  6. def day2csv(source_dir, file_name, target_dir):
  7. # 以二进制方式打开源文件
  8. source_file = open(source_dir + os.sep + file_name, 'rb')
  9. buf = source_file.read()
  10. source_file.close()
  11. # 打开目标文件,后缀名为CSV
  12. target_file = open(target_dir + os.sep + file_name + '.csv', 'w')
  13. buf_size = len(buf)
  14. rec_count = buf_size / 32
  15. begin = 0
  16. end = 32
  17. header = str('date') + ', ' + str('open') + ', ' + str('high') + ', ' + str('low') + ', ' \
  18. + str('close') + ', ' + str('amount') + ', ' + str('vol') + ', ' + str('str07') + '\n'
  19. target_file.write(header)
  20. for i in xrange(rec_count):
  21. # 将字节流转换成Python数据格式
  22. # I: unsigned int
  23. # f: float
  24. a = unpack('IIIIIfII', buf[begin:end])
  25. line = str(a[0]) + ', ' + str(a[1] / 100.0) + ', ' + str(a[2] / 100.0) + ', ' \
  26. + str(a[3] / 100.0) + ', ' + str(a[4] / 100.0) + ', ' + str(a[5] / 10.0) + ', ' \
  27. + str(a[6]) + ', ' + str(a[7]) + ', ' + '\n'
  28. target_file.write(line)
  29. begin += 32
  30. end += 32
  31. target_file.close()
  32. source = 'C:/new_dxzq_v6/vipdoc/sh/lday'
  33. target = 'E:/tmp'
  34. file_list = os.listdir(source)
  35. for f in file_list:
  36. day2csv(source, f, target)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
[python]解析通达信盘后数据获取历史日线数据
打开CSV格式文件?英雄请留步!
数据保存!!!Python 爬取网页数据后,三种保存格式
推荐:6款Python 实用又好用的特殊文本格式处理库
教你一招:在Python中使用CSV、JSON和XML的简便方法!
Excel表格太多弄不过来?教你用python实现自动处理表格
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服