资源简介
把通达信day文件转换为csv文件,包含上证、深证、港股。对于股票、基金、及港股的不同格式进行了处理。
用法:把stock.exe 复制到 vipdoc\sh\lday 或 vipdoc\sz\lday 或 vipdoc\ds\lday 下面,运行即可在当前目录下把day文件转换为csv格式文件。
采用c语言编写(含源代码),主要是不需要环境即可简单运行。如果需要其他格式或python对应文件,请私信联系。
各种格式说明可见本人文章:通达信日线day文件格式详解(含港股)
代码片段和文件信息
// 如果认准一个目标那么就遇事要忍出手要狠善后要稳
//希冀一旦产生,除了实现它,别无他法
#include
#include
#include
#include
#include
const char *to_search=“*.day“; //欲查找的文件,支持通配符
union data{
int n;
char ch;
float m;
};
int convertday(char *fname)
{
FILE *fp*fpw;
char str[400];
char fw[40];
int nLen;
int cType =0 ; // 0 上海或深圳股票,1 上海或深圳基金,2 港股或期货等
union data dNum[8];
// char c[4];
nLen = strlen(fname);
strncpy(fwfnamenLen-4);
fw[nLen-4]=‘\0‘;
// 用strstr函数判断股票基金等类型
// 函数名: strstr
// 功 能: 在串中查找指定字符串的第一次出现
// 用 法: char *strstr(char *str1 char *str2);
// 说明:返回指向第一次出现str2位置的指针,如果没找到则返回NULL。
if(strstr(fw“sz1“)) // 深圳基金
cType = 1 ;
if(strstr(fw“sh9“)) // 上证B股
cType = 1 ;
if(strstr(fw“sh20“)) // 上证债券 ,逆回购 GCxxx
cType = 1 ;
if(strstr(fw“sh5“)) // 上证基金
cType = 1 ;
if(strstr(fw“#“)) // 期货或港股等
cType = 2 ;
// printf(“fname = %s\n“fname);
if( (fp=fopen(fname“rb“)) == NULL )
{ //以二进制方式打开
printf(“Fail to open file %s!“fname);
exit(0);
}
strcat(fw“.csv\0“);
// printf(“fw = %s\n“fw);
// fpw = fopen(fw“wb+“);
if( (fpw=fopen(fw“wb+“)) == NULL )
{ //以二进制方式打开
printf(“Fail to open file %s!“fw);
exit(0);
}
while(!feof(fp))
{
nLen = fread(dNum sizeof(union data) 8 fp);
if(nLen<8) break;
// printf(“len=%d\n“nLen);
// dnum[0] //日期整数类型
// dnum[1] //开盘价,对于sh 或sz 是整数型/100,基金、债券/1000 对于ds 是浮点数
// dnum[2] //最高价,对于sh 或sz 是整数型/100,基金、债券/1000 对于ds 是浮点数
// dnum[3] //最低价,对于sh 或sz 是整数型/100,基金、债券/1000 对于ds 是浮点数
// dnum[4] //收盘价,对于sh 或sz 是整数型/100,基金、债券/1000 对于ds 是浮点数
// dnum[5] //成交金额,浮点数
// dnum[6] //成交量,整数型*100
// dnum[7] //保留
switch (cType)
{
case 0: /* constant-expression */
sprintf(str“%d%.2f%.2f%.2f%.2f%.2f%d\r\n\0“dNum[0].ndNum[1].n/100.0dNum[2].n/100.0dNum[3].n/100.0dNum[4].n/100.0dNum[5].mdNum[6].n) ;
break;
case 1:
sprintf(str“%d%.3f%.3f%.3f%.3f%.2f%d\r\n\0“dNum[0].ndNum[1].n/1000.0dNum[2].n/1000.0dNum[3].n/1000.0dNum[4].n/1000.0dNum[5].mdNum[6].n) ;
break;
case 2:
sprintf(str“%d%.3f%.3f%.3f%.3f%.2f%d\r\n\0“dNum[0].ndNum[1].mdNum[2].mdNum[3].mdNum[4].mdNum[5].mdNum[6].n*100) ;
break;
default:
break;
}
// printf(“%s len=%d\n“strstrlen(str));
fwrite(strsizeof(char)strlen(str)fpw);
}
fclose(fp);
fclose(fpw);
return 0;
}
int main()
{
long handle; //用于查找的句柄
//struct _finddata_t
// {
// unsigned attrib;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5531 2019-06-11 07:16 stock.c
文件 19828 2019-06-11 07:16 stock.exe
相关资源
- 数据结构C语言版期末考试试题(有答
- 基于51单片机射频RFID卡考勤上课上班
- 简单通讯录C语言实现
- C语言数据结构银行客户排队
- RC522射频模块读取S50卡中信息并通过
- C语言实现栈操作
- c语言难点分析整理,C语言
- C语言斗地主源代码
- 多远线性回归方程C语言程序
- c语言斗地主
- C语言实现的银行家算法 做了界面
- 数据结构与C语言综合习题集
- C语言进阶源码---基于graphics实现图书
- filtfilt C语言实现,可直接运行验证
- 用C语言实现一个火车站的订票系统
- C语言通讯录管理系统彩色界面
- AES-128-CBC算法C语言源码已经修改,可
- c语言课程设计-职工信息管理系统-单
- C语言考研真题汇编完整版.txt
- 飞机票订购系统C语言课程设计报告全
- 页面置换算法(fifolruopt) C语言编写
- 四子棋c语言程序
- 仿射密码C语言程序代码
- 正则表达式(regex)C语言源码,超强
- c语言 Windows_程序设计_第五版
- 常用算法程序集C语言描述 第三版pd
- 游戏开发 c语言 程序设计 飞机大战
- 简易图书管理系统C语言
- 编译原理课程设计-C语言子集编译器
- 练习:基于c语言的8位二进制原码一位
评论
共有 条评论