通达信数据格式

股票软件数据格式详解之--通达信数据格式

 

通达信数据不是钱龙格式的。但很容易转化成钱龙格式,稍微懂点数据格式的朋友都容易转化。钱龙是长整型的数据,通达信是单精度型数据。钱龙一天数据占40个字节,通达信占32个字节。大智慧和钱龙的格式是一样的。

通达信数据格式:

1-4字节 Date:LongInt; //日期
5-8字节 OPen:LongInt; //开盘*100(元)
9-12字节 High:LongInt; //最高价*100(元)

13-16字节 Low:LongInt; //最低价*100(元)
17-20字节 Close:LongInt; //收盘*100(元)

21-24字节 single; //Amount
25-28字节 Volume:LongInt; //Volume 成交量(股)
29-32字节 // Reserved
其数据结构定义如下:

typedef struct mystructtag
{
    int date;
    int open;
    int high;
    int low;
    int close;
    int amount;
    int vol;
    int reservation;
} StockData;

 


基本声明
    Public NumBase(5) As Long '通达信格式基数
    Public NumUnit(4) As Long '每单位对应的16进制数
    Public NumUnitPrice(4) As Long '每单位对于的10进制数,已被从元为单位扩大1000倍

基本模块


    Public Sub intTDXelg()Sub intTDXelg()
        NumBase(0) = 1065353216 : NumBase(1) = 1082130432 : NumBase(2) = 1090519040 : NumBase(3) = 1098907648 : NumBase(4) = 1109655552 ': NumBase(5) = 1118830592
        NumUnit(0) = 4194304 : NumUnit(1) = 2097152 : NumUnit(2) = 1048576 : NumUnit(3) = 524288 ': NumUnit(4) = 262144
        NumUnitPrice(0) = 0 : NumUnitPrice(1) = 4000 : NumUnitPrice(2) = 8000 : NumUnitPrice(3) = 16000 ': NumUnitPrice(4) = 32000
    End Sub
在form load 事件中调用intTDXelg

    Public Structure stockDayRecordStructure stockDayRecord '保存一门股票的日数据信息
        Dim stockdate As Date
        Dim openor As Single
        Dim hightor As Single
        Dim lowor As Single
        Dim endor As Single
        Dim changor As Integer
        Dim id As Integer
        Dim VbP As Integer
    End Structure

    Public Function getRealPrice()Function getRealPrice(ByVal formerPrice As Long) As Long '注意移植此函数是要把公共变量NumBase预NumUnit移动移植
        Dim i As Integer
        For i = 1 To 4                                 '该函数可返回32元人民币以下对于的准确价格
            If formerPrice < NumBase(i) Then
                getRealPrice = (Val((formerPrice - NumBase(i - 1)) & "000") / NumUnit(i - 1)) + NumUnitPrice(i - 1)
                Exit For                                  ' & 000 相当于 * 1000,以‰为单位
            End If
        Next i
    End Function

读取模块


Function LoadDayData()Function LoadDayData(ByVal filename As String, ByRef dr() As stockDayRecord, ByVal t As Short) As Long
'股票读取接口,第一个参数为装载股票数据的结构体
        Dim fs As FileStream = File.OpenRead(filename)
        Dim br As New BinaryReader(fs)
        Dim n As Integer
        Dim i As Integer, j As Integer
        Select Case t
            Case 1 '中天
              Case 2 '通达信 暂时不用
                n = (fs.Length - 4) / 32
                LoadDayData = n
                ReDim dr(n)
                br.ReadInt32() '文件头到底是什么,另外是头天顺序颠放到了某个地方
                For i = 1 To n
                    Dim d As Integer = br.ReadInt32()
                    dr(i).stockdate = DateSerial(d / 10000, (d Mod 10000) / 100, d Mod 100)
                    dr(i).openor = getRealPrice(br.ReadInt32) / 1000
                    dr(i).hightor = getRealPrice(br.ReadInt32) / 1000
                    dr(i).lowor = getRealPrice(br.ReadInt32) / 1000
                    dr(i).endor = getRealPrice(br.ReadInt32) / 1000
                    br.ReadInt32()
                    dr(i).changor = br.ReadInt32
                    dr(i).id = i
                    If (dr(i).hightor <> dr(i).lowor) Then dr(i).VbP = dr(i).changor / ((dr(i).hightor - dr(i).lowor) * 1000)
                    br.ReadInt32()
                Next
        End Select
        fs.Dispose()
        LoadDayData = j
    End Function

### 回答1: VBA是一种编程语言,可以在Microsoft Office软件中使用,包括Excel。通达信是一款常用的股票分析软件,它的数据格式以二进制形式存储。 想要在VBA中读取通达信数据格式,可以使用以下步骤: 1. 在VBA编辑器中,使用`Open`语句打开通达信二进制数据文件。 2. 使用`Seek`语句将文件指针定位到需要读取数据的位置。通达信数据文件的结构具有一定的规律,可以根据需要读取的数据类型和位置计算偏移量。 3. 使用`Input`语句或`Get`语句读取指定位置的数据。根据通达信数据格式的类型和长度,可以选择不同的读取方法。 4. 将读取的数据存储到VBA变量中进行后续处理和分析。 5. 循环执行步骤3和步骤4,直到读取完所有需要的数据。 6. 使用`Close`语句关闭文件。 在读取通达信数据格式时,需要了解其具体的结构和存储规则。通达信提供了一份详细的数据格式说明文档,可以参考该文档来理解不同类型数据的存储方式和计算方法。 同时,还可以借助第三方库或工具来读取通达信数据格式。有些开发者开源了类似工具,可以在网络上进行搜索,选择适合自己的工具使用。 这是一个基本的引导,具体的代码实现会因需求的不同而有所差异。在编写VBA代码时,建议使用合适的错误处理机制,以便在读取过程中处理可能出现的错误或异常情况。 ### 回答2: VBA是一种用于编写微软Office系列软件宏的编程语言,可以通过编写VBA代码来读取通达信数据格式通达信是一种常见的股票软件,它的数据格式比较特殊。要通过VBA读取通达信数据格式,首先需要了解通达信数据格式的结构和规则。 通达信数据格式使用二进制方式存储数据,每条数据包含多个字段,如股票代码、日期、开盘价、收盘价等等。要读取这些数据,可以使用二进制读取的方法来逐个读取每个字段。 在VBA中,可以使用File对象和BinaryStream对象来进行文件读取。首先通过File对象打开通达信数据文件,然后使用BinaryStream对象来读取文件的二进制数据。通过读取二进制数据的方式,可以按照通达信数据格式的规则来解析数据。 解析数据的过程中,可以根据数据字段的类型来逐个读取数据,将其转换为VBA中的变量类型。例如,可以将股票代码字段转换为字符串类型,将日期字段转换为日期类型,将开盘价和收盘价字段转换为数值类型。 读取完所有数据之后,就可以根据自己的需求进行进一步的数据处理和分析。例如,可以计算每只股票的收益率、绘制K线图等等。 总之,通过编写VBA代码来读取通达信数据格式需要了解数据格式的结构和规则,并利用VBA的文件读取和二进制处理功能来解析数据。这样就可以方便地在VBA中进行通达信数据的读取和分析。 ### 回答3: VBA是一种可以用于自动化操作的编程语言,通达信是一种证券交易软件。在VBA中,我们可以通过一些方法来读取通达信数据格式。 首先,我们需要确保在VBA中可以操作通达信软件的接口或者API。这样才能够通过VBA来读取通达信的数据。一般来说,我们可以通过调用通达信的DLL文件或者使用通达信提供的API来实现与通达信软件的交互。 其次,我们需要了解通达信数据格式的结构。通达信数据文件通常是二进制格式的,其中包含了股票代码、交易日期、开盘价、收盘价、最高价、最低价等等信息。通过解析这些二进制数据,我们可以将其转化为可读取的格式。 在VBA中,我们可以使用一些文件操作的方法,如Open、Close、Seek等方法来读取通达信的数据文件。我们可以根据通达信数据文件的格式,逐个字段地读取数据并进行处理。 另外,我们还可以使用VBA中的数组或者集合来存储读取到的数据,并进行进一步的分析和处理。通过对通达信数据的读取和处理,我们可以实现各种功能,如计算股票的指标、绘制K线图等等。 需要注意的是,读取通达信数据格式需要对VBA编程有一定的了解,并且需要有通达信软件的相关接口和数据文件。对于初学者来说,可能需要进行一些学习和实践,才能够熟练地操作和读取通达信的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值