使用Python激活成功教程通达信股票数据[通俗易懂]

使用Python激活成功教程通达信股票数据[通俗易懂]使用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. 代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
from struct import unpack


# 将通达信的日线文件转换成CSV格式
def day2csv(source_dir, file_name, target_dir):
    # 以二进制方式打开源文件
    source_file = open(source_dir + os.sep + file_name, 'rb')
    buf = source_file.read()
    source_file.close()

    # 打开目标文件,后缀名为CSV
    target_file = open(target_dir + os.sep + file_name + '.csv', 'w')
    buf_size = len(buf)
    rec_count = buf_size / 32
    begin = 0
    end = 32
    header = str('date') + ', ' + str('open') + ', ' + str('high') + ', ' + str('low') + ', ' \
        + str('close') + ', ' + str('amount') + ', ' + str('vol') + ', ' + str('str07') + '\n'
    target_file.write(header)
    for i in xrange(rec_count):
        # 将字节流转换成Python数据格式
        # I: unsigned int
        # f: float
        a = unpack('IIIIIfII', buf[begin:end])
        line = str(a[0]) + ', ' + str(a[1] / 100.0) + ', ' + str(a[2] / 100.0) + ', ' \
            + str(a[3] / 100.0) + ', ' + str(a[4] / 100.0) + ', ' + str(a[5] / 10.0) + ', ' \
            + str(a[6]) + ', ' + str(a[7]) + ', ' + '\n'
        target_file.write(line)
        begin += 32
        end += 32
    target_file.close()

source = 'C:/new_dxzq_v6/vipdoc/sh/lday'
target = 'E:/tmp'
file_list = os.listdir(source)
for f in file_list:
    day2csv(source, f, target)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149090.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • APP稳定性测试_APP测试

    APP稳定性测试_APP测试APP稳定性测试概念指软件长时间的持续运行,系统版本是否稳定,是否能否持续的为用户提供服务测试指标异常的次数异常的频率测试工具MonkeyMonkey是向系统发送随机的用户事件流(如按键输入、触摸屏输入和手势输入等),实现对正在开发的应用程序进行稳定性测试。可以更好的模拟用户操作,确保App的稳定性。  通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常Monkey原理Monk.

    2025年10月14日
    4
  • 如何退出Vi或Vim编辑器「建议收藏」

    如何退出Vi或Vim编辑器「建议收藏」Thevieditorisconfusingifyou’renotusedtoit.Ittakesasecrethandshaketoescapethisapplicationifyou’vestumbledintoit.Here’showtoquitviorvimonLinux,macOS,oranyotherUnix-…

    2022年9月30日
    4
  • Actuator「建议收藏」

    Actuator「建议收藏」#Actuator引入依赖spring-boot-starter-actuator,通过endpoint来暴露HTTP或JMX来监管应用通过http://localhost:8080/actuat

    2022年8月5日
    8
  • win10自动更新有效强制永久关闭怎么办_win10怎么不自动更新

    win10自动更新有效强制永久关闭怎么办_win10怎么不自动更新网上的一些Win10彻底关闭WindowsUpdate自动更新的方法,主要是通过一些如设置流量计费或借助一些专门的小工具来实现,比如360来限速,但往往会发现,Win10自动更新就像打不死的小强,不管怎么关闭,之后还是会自动更新,让不少小伙伴颇为不爽。今天为大家带来了这篇教程,通过服务、注册表、组策略、计划任务中,全方位设置,彻底关闭Win10自动更新,感兴趣的小伙伴不妨试试吧。服务中关闭Wi…

    2025年6月16日
    4
  • 网络传输的两种方式——同步传输和异步传输的区别[通俗易懂]

    网络传输的两种方式——同步传输和异步传输的区别[通俗易懂]在网络通信过程中,通信双方要交换数据,需要高度的协同工作。为了正确的解释信号,接收方必须确切地知道信号应当何时接收和处理,因此定时是至关重要的。在计算机网络中,定时的因素称为位同步。同步是要接收方按照发送方发送的每个位的起止时刻和速率来接收数据,否则会产生误差。通常可以采用同步或异步的传输方式对位进行同步处理。1.异步传输(AsynchronousTransmission):异步传输…

    2022年4月19日
    275
  • unittest测试框架原理_学软件测试4个月没找到工作

    unittest测试框架原理_学软件测试4个月没找到工作unittest框架解析unittest是python的单元测试框架,unittest单元测试提供了创建测试用例,测试套件以及批量执行的方案,unittest在安装pyhton以后就直接自带了,直接importunittest就可以使用。作为单元测试的框架,unittest也是可以对程序最小模块的一种敏捷化的测试。在自动化测试中,必须需要知道所使用语言的单元测试框架。利用单元测试框架,创建一个类,该类继承unittest的TestCase,这样可以把每个case看成是一个最小的单元,

    2022年10月15日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号