打开APP
userphoto
未登录

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

开通VIP
C 读取通达信个股历史数据

通达信历史数据存储在安装根目录下的vipdoc文件夹下,如D:\new_tdx\vipdoc\sh\lday,为沪市数据,深市数据为:D:\new_tdx\vipdoc\sz\lday,依各自通达信安装目录不同有差异。文件名为:'sh'或'sz'+代码+.day。数据格式如下结构,占32个字节:

struct stockData

{

unsigned int date;

int open;

int high;

int low;

int close;

float amo;

int vol;

int other;

};

八个数据分别为日期、开盘价、最高价、最低价、收盘价、成交金额、成交量、备用;数据是*100后的整数。为连续数据,

打开VS2019,新建一个TdxHistoryData的C++控制台空项目

新建空项目

双击打开TdxHistoryData.cpp源文件,添加修改如以下:

// TdxHistoryData.cpp : 此文件包含 'main' 函数。程序执行将在此处开始并结束。

#include <Windows.h>

#include <iostream>

#include <fstream>

#include <string>

#include <vector>

using namespace std;

struct stockData

{

unsigned int date;

int open;

int high;

int low;

int close;

float amo;

int vol;

int other;

};

void getHistoryData(string filePath, vector<stockData>& Data_Vec)

{

Data_Vec.clear();

fstream ifs(filePath, ios::in | ios::binary);

if (!ifs.is_open())

{

MessageBox(NULL, TEXT('无法打开文件!'), NULL, MB_ICONINFORMATION | MB_YESNO);

return;

}

stockData stkData;

while (!ifs.eof())

{

ifs.read((char*)&stkData, sizeof(stockData));

Data_Vec.push_back(stkData);

}

if (Data_Vec[Data_Vec.size() - 1].date == Data_Vec[Data_Vec.size() - 2].date)

Data_Vec.pop_back();

ifs.close();

}

int main()

{

string filePath = 'D:\\new_tdx\\vipdoc\\sh\\lday\\sh688981.day';

vector<stockData> vecData;

getHistoryData(filePath, vecData);

cout << '数据路径:' << filePath << endl;

cout << '----------------------------------------------------' << endl;

cout << '日期\t\t开盘价\t收盘价\t最高价\t最低价\t成交量\t金额'<<endl;

for (int i = 0; i < vecData.size(); i++)

{

cout << vecData[i].date << '\t' << (float)vecData[i].open / 100 << '\t' << (float)vecData[i].close / 100 << '\t' << (float)vecData[i].high / 100

<< '\t' << (float)vecData[i].low / 100 << '\t' << vecData[i].vol / 100 << '\t' << vecData[i].amo / 100000000 << '亿' << endl;

}

cout << '共计:' << vecData.size()<<'天数据';

}

整理好以上源文件,菜单调试---开始执行(不调试),直接编译运行,显示结果如下:

读取数据结果

读取数据每次读32字节,连续读完即可。中间有一个疑问,全部读完存入vector后,最后两个数据是重复的,不知什么原因,只好加一个判断,如重复则弹出一个。

注:需要每天下载通达信数据,否则读到数据不完整 或没有。

欢迎沟通交流。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
多年学习C++STL经典总结
vector 详细用法 C++-CSDN博客
C++ 笔试题 之基础 44 整体框架格式,输入,输出。 格式输入,输出
vector存结构体
TZOJ6556: 嗅探器
C++获取文件大小的方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服