http://www.matlabsky.com/thread-45453-1-1.html
最近抽空把股票基础数据这一块的工作又折腾了一下,主要想法是完全基于网络(新浪财经、雅虎财经等等金融网站)获取数据,作为免费的数据源,原本想做好之后和公司的付费数据做比对,提升数据质量。索性就把免费数据源这块函数都封装好,未来以工具箱的形式分享给大家。我将其命名为 FQuantToolBox。
免费的数据源这块整体获取和实现的框架大概是这样的:
基于网络获取最新的A股市场的股票列表 ——> 基于网络获取全市场A股数据 ——> 基于网络获取股票除权除息信息 ——> 前复权数据生成
基于网络全市场A股财务指标获取
基于网络全市场A股三张表(资产负债表、现金流量表、利润表)数据获取
基本核心函数都完成了,核心实现就是 网络数据网址寻找——> 网址分析——> urlread+正则 数据提取
剩下就是把历史数据一次性获取一下,存成本地的.mat文件,未来数据的更新,每天电脑设个定时任务,行情数据每天更新,基本面财务数据每周或者几个月更新一次就行。
当下仅仅弄完了 股票日线数据。未来想着把股票分钟数据,以及期货相关的数据也进行添加。
FQuantToolBox,未来免费发布,工具箱里面彩蛋很多,干货很多,除了A股的行情和财务数据,还有其他一些回测相关的函数和插件。
整体实现的脚本测试函数:
- %% Main_GetStockDataTest
- % by LiYang_faruto
- % Email:farutoliyang@foxmail.com
- % 2014/12/12
- %% A Little Clean Work
- tic;
- % clear;
- % clc;
- % close all;
- format compact;
- %% 日志文件
- fid = fopen('Dlog.log','at+');
- str = ['日期时间:',datestr(now),' 操作记录日志by李洋faruto '];
- fprintf(fid,'%s\n',str);
- %% 获取股票代码列表测试
- tic;
- [StockList,StockListFull] = GetStockList_Web;
- toc;
- save('StockList','StockList');
- str = ['日期时间:',datestr(now),' 更新股票列表'];
- fprintf(fid,'%s\n',str);
- %% 获取股票日线(除权除息)数据测试
- stock_code = 'sh600030';
- begin_date = '20050101';
- end_date = '20150101';
- StockDataDouble = GetStockTSDay_Web(stock_code,begin_date,end_date);
- %% 股票日线(除权除息) plot
- scrsz = get(0,'ScreenSize');
- figure('Position',[scrsz(3)*1/4 scrsz(4)*1/6 scrsz(3)*4/5 scrsz(4)]*3/4);
- AX1 = subplot(3,1,1:2);
- OHLC = StockDataDouble(:,2:end-1);
- KplotNew(OHLC);
- Dates = StockDataDouble(:,1);
- LabelSet(gca, Dates, [], [], 1);
- AX2 = subplot(3,1,3);
- V = StockDataDouble(:,end);
- bar(V);
- xlim([0,length(V)]);
- LabelSet(gca, Dates, [], [], 1);
- linkaxes([AX1, AX2], 'x');
- %% 获取股票除权除息数据
- StockCode = '600537';
- StockCode = '600001';
- [ Web_XRD_Data , Web_XRD_Cell_1 , Web_XRD_Cell_2 ] = GetStockXRD_Web(StockCode);
- Web_XRD_Cell_1
- Web_XRD_Cell_2
- %% 进行前复权数据生成
- %% 获取股票财务指标测试
- StockCode = '600588';
- Year = '2014';
- [FIndCell,YearList] = GetStockFinIndicators_Web(StockCode,Year);
- FIndCell
- %% 获取三张表
- StockCode = '600588';
- Year = '2014';
- [BalanceSheet,ProfitSheet,CashFlowSheet,YearList] = GetStock3Sheet_Web(StockCode,Year);
- BalanceSheet
- ProfitSheet
- CashFlowSheet
- %% 关闭打开的文件
- fclose('all');
- %% Record Time
- toc;
- displayEndOfDemoMessage(mfilename);