通达信数据格式
来源:互联网 发布:浏览器兼容或网络问题 编辑:程序博客网 时间:2024/05/01 15:23
股票软件数据格式详解之--通达信数据格式
通达信数据不是钱龙格式的。但很容易转化成钱龙格式,稍微懂点数据格式的朋友都容易转化。钱龙是长整型的数据,通达信是单精度型数据。钱龙一天数据占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
- 通达信数据格式
- 通达信数据格式
- 关于通达信数据格式的发布
- 通达信的5分钟数据格式 *.lc5
- 数据格式
- 数据格式
- 数据格式
- 数据格式
- 通达信目录结构详解
- 通达信公式函数
- 通达信扣抵公式
- 通达信公式破解
- 通达信插件选股(基于通达信插件编…
- 修改后的通达信截图
- 读取通达信日线数据
- 通达信绿色免安装方法
- 通达信的系统BOLL-M
- 神仙趋势,运筹帷幄,通达信公式
- Nginx ("engine x")
- Oracle中序列的使用实例
- SSH集成方案
- 程序多态的实现。
- Oracle中case语句的使用实例
- 通达信数据格式
- 需要看一些关于权力的书
- volatile在线程中的作用
- 大智慧新一代 2.08.07.0907 数据格式
- VB.NET 中生成Excel文件并弹出对话框保存
- Oracle中子查询的使用实例
- 管理落后的中国铁路——春运难的根本原因
- js小技巧
- Oracle中联合查询的实例使用