前言:
当前姐妹们对“通达信win10”都比较关怀,同学们都需要分析一些“通达信win10”的相关资讯。那么小编在网上收集了一些有关“通达信win10””的相关资讯,希望咱们能喜欢,小伙伴们一起来学习一下吧!通达信历史数据存储在安装根目录下的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后,最后两个数据是重复的,不知什么原因,只好加一个判断,如重复则弹出一个。
注:需要每天下载通达信数据,否则读到数据不完整 或没有。
欢迎沟通交流。
标签: #通达信win10