more info & pic demo see 再议股票行情和基本面财务数据的获取-FQuantToolBox 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);