股票数据文件一般都是二进制文件,根据文件格式,获取相应的字节块,再转换成规定的数据类型即可。
以下为以前毕业设计的同学做的部分工作:
该实验平台使用的所有数据取自
大智慧股票软件的股票数据库中
上海股市
1995
年到
2008
年
1870
支上市公司股票日线数据。在实验平台中,实现读取两种日线数据格式算法,分别用来解析和读取后缀名为
DAD
和
DAY
两种数据格式的文件。
DAD
数据格式的文件的读取
DAD
数据格式的文件存储的是上海股市所有上市公司一个交易日的数据,包括股票代号、证券名称、开盘价、最高价、收盘价、成交量、成交额这些内容。
用
Ultra Edit
打开文件,起止地址、数据内容为十六进制,如图。
图
DAD
文件的
十六进制格式
对这十六进制内容进行规律分析,得到数据格式、结构如表
所示。
表格
数据格式、结构
标识
(33 FC 19 8C)
|
?? ?? ?? ??
|
本文件的股票数
|
00 00 00 00
|
FF FF FF FF
|
SHXX(SZXX)
股票
|
代码
XXXX(XX 00 00)
|
?? ?? ?? ??
|
?? ?? ?? ??
|
证券
|
名称
|
?? ?? ?? ??
|
日期
|
开盘价
|
最高价
|
最低价
|
收盘价
|
成交量
(
手
)
|
成交额
(
元
)
|
?? ?? ?? ??
|
FF FF FF FF
|
SHXX(SZXX)
股票
|
代码
XXXX(XX 00 00)
|
?? ?? ?? ??
|
?? ?? ?? ??
|
证券
|
名称
|
?? ?? ?? ??
|
日期
|
开盘价
|
最高价
|
最低价
|
收盘价
|
成交量
(
手
)
|
成交额
(
元
)
|
?? ?? ?? ??
|
如表
所示,前
16
个字节为头信息,
1-4
为安装数据的标识
(33 FC 19 8C)
,
5-8
为
?? ?? ?? ??
,
9-12
为本文件的股票数,
13-16
为
00 00 00 00
。
每个日
K
线为
64
字节,具体如下:
17-20
为
FF FF FF FF
,
21 –
28
:
53 48 36 30 30 30 30 30
股票代号,字符串
(=SH600000)
37 –
44
:
C6 D6 B7 A2 D2 F8
D0 D0
,证券名称,字符串
(=
浦发银行
)
49 –
52
:
80 58 FD 47
,日期,整数型
(=1207785600
即
2008-04-10
)
53 –
56
:
0A
D7 09 42
,开盘价,浮点型
(=34.46)
57 –
60
:
14 AE 0C
42
,
最高价,浮点型
(=35.17)
61 –
64
:
EC 51 05 42
,
最低价,浮点型
(=33.33)
65 –
68
:
D7 A3 09 42
,
收盘价,浮点型
(=34.41)
69 –
72
:
C0 B2 2D 48
,成交量,浮点型
(=177867.0)
73 –
78
:
6A
B1 10 4E
,
成交金额,浮点型
(=6.0688653E8)
73 –
78
:
C5 00 00 00
,未知
日期字段不是直接保存容易读懂的日期,而是保存一个数值,这个数值是实际日期距离
1970
年
01
月
01
日
0
时
0
分
0
秒
的秒数。所以把日期字段值除以
86400
(一天总秒数)即可得到实际日期距
1970
年
01
月
01
日
的天数,就可以算出实际日期。对于上例来说,上证指数第一个数据记录的日期值为
1207785600,
表示
2008
年
04
月
10
日
(计算:
1970
年
1
月
1
日
+1207785600/86400
)
相关代码:
public void readStockFile(String openPath) {
list = new ArrayList<Vector<Comparable>>();
DataInputStream bis = null;
try {
bis = new DataInputStream(new BufferedInputStream(new FileInputStream(new File(openPath))));
} catch (FileNotFoundException fileNotFoundException) {
fileNotFoundException.printStackTrace();
}
try {
bis.skipBytes(16);//跳过第一行数据
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
for (int k = 0; bis.read() != -1; k++) {//读取第k条股票数据
Vector vt = new Vector();
bis.skipBytes(4);//跳过FF FF FF FF 到 股票代码
byte[] b = new byte[8];
bis.read(b);
vt.add(new String(b));//将股票代码加到Vector
System.out.println("股票代码: " + new String(b));
bis.skipBytes(8);//跳到股票名称(证券名称)
bis.read(b);
vt.add(new String(b));
System.out.println("证券名称: " + new String(b));
bis.skipBytes(4);//跳到股票日期
for (int i = 0; i < 8; i++) {
byte[] bt = new byte[4];
bis.read(bt);
//如果是日期的情况
if (i == 0) {
String dateFormat = format.format(new Date(1000 * (long) ((bt[3] & 0xff) << 24 | (bt[2] & 0xff) << 16 | (bt[1] & 0xff) << 8 | (bt[0] & 0xff))));
vt.add(dateFormat);
System.out.println("日期: " + dateFormat);
} else {
Float dateFloat = new Float(Float.intBitsToFloat((bt[3] & 0xff) << 24 | (bt[2] & 0xff) << 16 | (bt[1] & 0xff) << 8 | (bt[0] & 0xff)));
vt.add(dateFloat);
System.out.println(dateFloat);
}
}
list.add(vt);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
- 大小: 52.4 KB
分享到:
相关推荐
在处理股票数据时,要注意数据的有效性,比如无效数值通常表示为特定的填充字符,如`0xF8,0xF8,0xF8,0xF8`。在编写VBA或C++代码时,需要进行数据有效性检查,避免这些无效数据影响分析结果。 5. **应用示例**: -...
这些文件通常存储了股票的历史交易数据、自定义技术指标数据、用户自定义板块信息等。它们是以二进制格式存储的,因此直接用文本编辑器打开可能无法理解其中的内容。要读取和写入这些文件,我们需要编写C#程序,使用...
C++标准库提供了`fstream`类来处理文件读写,通过逐行读取文件,解析出各个字段,然后存储到内存结构中。 2. 数据结构设计:为了有效地管理和处理股票数据,我们需要定义合适的数据结构。这可能包括股票对象,包含...
文件读写操作 通过`FileOpen()`、`FileGetSize()`、`FileRead()`等函数,脚本实现了对指定文件的读取操作。这些操作是获取文华财经盘后数据的关键步骤之一。具体来说: - `FileOpen($fileWH,16)`:打开文件,参数...
在股票市场中,由于需要频繁地记录、存储和更新股票行情数据,DBF文件因其轻量级、易于读写的特点而被采用。 首先,DBF文件的结构:一个DBF文件由表头、字段定义和数据记录三部分组成。表头包含了文件的一些元信息...
本次实验为股票行情与交易模拟系统,它的基本功能是实时揭示交易行情和各类资讯,通过对市场信息数据的统计,按照一定的分析模型给出数(报表)、形...6.文件的读写操作; 7.程序测试计划、用例的设计和测试方法。
源码是程序的核心部分,通过阅读和分析源码,我们可以了解股票查询功能的实现细节,这对于学习易语言、提升编程技能,以及深入理解股票数据处理的程序员来说,都是宝贵的资源。 在易语言中,源码通常由一系列的模块...
另一个路径`stringdbDatesFilePath="./Data/Db/daydb.dt"`则可能指向包含日期信息的数据文件。 - **符号与日期文件**:`stringsymbolPath="./Data/Db/symbols.txt"`和`stringdatePath="./Data/Db/date.txt"`分别用于...
首先,核心文件是"股票数据(尝鲜 版).py",这很可能是一个Python脚本,它执行了股票数据的爬取任务。在Python中,编写爬虫通常会用到requests库来发送HTTP请求,获取网页内容;BeautifulSoup或者lxml库来解析HTML或...
数据结构中的变长记录文件是一种特殊类型的文件,它与传统的固定长度记录文件不同,每条记录的大小可以不一致。这种灵活性使得变长记录文件在处理各种数据时更具优势,尤其是在数据规模变化大或者需要存储不同类型...
通常,通达信的数据文件存储在特定的文件夹下,比如在Windows系统中,可能是`C:\Program Files\TDX`或用户自定义的位置。 为了实现这个功能,我们可以使用Python的文件操作模块如`os`和`shutil`,以及第三方库如`...
- **读写文件**:可能使用`os`和`ioutil`包来读取和写入数据文件,存储股票数据。 - **CSV处理**:如果数据集是CSV格式,可能使用`encoding/csv`包进行读写操作。 6. 数据库集成: - **数据库操作**:Go有多种...
数据分析 数据预处理 电影总票房 年份分析 时间序列分析 rating metascore 折线图 Python爬虫 beautiful soup jupyter notebook numpy pandas matplotlib 数据分析 数据挖掘
压缩包中的文件名"StockDir.sz"可能代表存储了所有股票数据的目录或者数据库文件。通常,这样的数据集会以CSV(Comma Separated Values)格式存储,因为CSV格式简单、通用,易于读写和分析。每个文件可能代表一支...
4. **数据存储模块**:为了便于后续分析,源码可能还包括将股票数据存储到本地数据库或文件的功能。这可能涉及到SQL语句的编写或CSV文件的读写操作。 在学习和使用新浪股票Demo源码时,我们需要关注以下几个关键...
功能1:使用c++文件读写就能完成,主要注意的是字符串的赋值复制等操作; 功能2:排序使用快排,自定义比较器;有一种读写文件特别方便的方式就是将文件按照二进制来读写;然后为了使外排序的复用率更高,使用一个...
例如,CSV格式适合小型数据,易于读写;Excel适合直观查看和编辑;HDF5是一种高效的数据存储格式,适合大数据量的存储和快速读取。 在Python-TuShare的使用中,用户可以轻松获取各种金融数据,如股票开盘价、收盘价...
4. **文件操作**:文件存储在MFC中主要涉及读写文件,可能是用于备份数据库、存储配置信息或临时数据。MFC提供了丰富的类如CFile、CStdioFile等支持文件操作。此外,如果数据库使用文件存储(如SQLite),那么文件...
5. **文件操作**:为了保存和加载股票数据,项目可能使用了CFile类或fstream库进行文件I/O操作。数据可能以CSV、XML或自定义格式存储,便于读写和交换。 6. **事件驱动编程**:MFC采用消息驱动机制,用户界面的每个...
【BCB 之 C++Builder XE 之 Excel 股票数据整合】是一个专注于C++ Builder XE平台上的商业开发案例,它演示了如何利用该集成开发环境(IDE)来处理Excel文件,特别是与股票数据相关的整合工作。C++Builder XE是一个...