‘壹’ 怎样用excel 实时读取 股票日线数据
定量分析的第一步,是获取数据。
获取股票历史行情数据最方便的途径,就是直接读取股票行情软件留在你电脑中的日线数据文件。
但如果不是程序员,电脑里一般不会有VB、VC之类的编程语言。
其实,大家的电脑中一般都有OFFICE。OFFICE中的EXCEL自带了一个VBA语言的编程环境。功能也很强大。
我用EXCEL里的VBA编写了一段代码,读取通达信股票行情软件的日线文件。已经测试通过。
代码如下。与爱好定量分析的朋友分享。
TypeMyType
a1AsLong'标示码
a2AsLong'日期
a3AsSingle'开盘价
a4AsSingle'最高价
a5AsSingle'最低价
a6AsSingle'收盘价
a7AsSingle'成交金额
a8AsLong'成交量
EndType
Sub按钮1_Click()
DimFile2AsInteger
DimbAsMyType
File1=FreeFile
Opensh600000.dayForBinaryAccessReadAs#File1i=1DoWhileNotEOF(File1)
Get#File1,,b
Cells(i,1)=b.a1
Cells(i,2)=b.a2
Cells(i,3)=b.a3
Cells(i,4)=b.a4
Cells(i,5)=b.a5
Cells(i,6)=b.a6
‘贰’ 如何将搜狐网上的成交明细数据用VC++读取 http://q.stock.sohu.com/cn/000060/cjmx.shtml
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include<string>
#include<iostream>
#include "windows.h"
using namespace std;
typedef struct
{
int date;//4字节 int类型也是1
int open;
int high;
int low;
int close;
int amount;
int vol;
int reservation;
} StockData;
StockData stockData;
int read_data(FILE *);
int main (int argc, char *argv[])
{
FILE *fp;
if((fp=fopen("D:\\common\\stock\\jcb_gx\\Vipdoc\\sh\\lday\\sh999999.day","rb"))==NULL)
{
printf("Error: Can^t open file ! ");
exit(0);
}
read_data(fp);
fclose(fp);
if(getch()==0) getch();
exit(0);
}
int read_data(FILE *fp)
{
float fn;
while(! feof(fp)){
fread(&stockData,sizeof(StockData),1,fp);
cout<<"单个记录长度 "<<sizeof(StockData)<<endl;
printf("饥蠢册日期 %10lu ",stockData.date);
fn=((float)(stockData.open))/100;
printf("开牌价 %8.2f ",fn);
fn=float(stockData.high)/100;
printf("最高价烂宏 %8.2f ",fn);
fn=float(stockData.low)/100;
printf("最低价 %8.2f ",fn);
fn=float(stockData.close)/100;
printf("收盘价 %8.2f ",fn);
printf("多多 %8lu ",stockData.amount);
fn=float(stockData.vol)/100;
printf("成交量 %8.1f ",fn);
printf("reservation %8lu "档没,stockData.reservation);
//Sleep(1000);
cout<<endl;
}
return 0;
}