资源简介
把通达信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语言面试笔试题,经典题目
- C语言编程常见问题解答.pdf
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
川公网安备 51152502000135号
评论
共有 条评论