《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 7512|回复: 25
收起左侧

[讨论] 再议股票行情和基本面财务数据的获取-FQuantToolBox

    [复制链接]
发表于 2014-12-5 14:01:27 | 显示全部楼层 |阅读模式
本帖最后由 faruto 于 2014-12-5 14:16 编辑

昨晚抽空把股票基础数据这一块的工作又折腾了一下,主要想法是完全基于网络(新浪财经、雅虎财经等等金融网站)获取数据,作为免费的数据源,原本想做好之后和公司的付费数据做比对,提升数据质量。索性就把免费数据源这块函数都封装好,未来以工具箱的形式分享给大家。我将其命名为 FQuantToolBox。

免费的数据源这块整体获取和实现的框架大概是这样的:

基于网络获取最新的A股市场的股票列表 ——> 基于网络获取全市场A股数据 ——> 基于网络获取股票除权除息信息 ——> 前复权数据生成

基于网络全市场A股财务指标获取

基于网络全市场A股三张表(资产负债表、现金流量表、利润表)数据获取

基本核心函数都完成了,核心实现就是 网络数据网址寻找——> 网址分析——> urlread+正则 数据提取

剩下就是把历史数据一次性获取一下,存成本地的.mat文件,未来数据的更新,每天电脑设个定时任务,行情数据每天更新,基本面财务数据每周或者几个月更新一次就行。

当下仅仅弄完了 股票日线数据。未来想着把股票分钟数据,以及期货相关的数据也进行添加。

FQuantToolBox,未来免费发布,工具箱里面彩蛋很多,干货很多,除了A股的行情和财务数据,还有其他一些回测相关的函数和插件。

整体实现的脚本测试函数:
  1. %% Main_GetStockDataTest
  2. % by LiYang_faruto
  3. % Email:farutoliyang@foxmail.com
  4. % 2014/12/12
  5. %% A Little Clean Work
  6. tic;
  7. % clear;
  8. % clc;
  9. % close all;
  10. format compact;
  11. %% 日志文件

  12. fid = fopen('Dlog.log','at+');
  13. str = ['日期时间:',datestr(now),' 操作记录日志by李洋faruto '];
  14. fprintf(fid,'%s\n',str);
  15. %% 获取股票代码列表测试
  16. tic;

  17. [StockList,StockListFull] = GetStockList_Web;

  18. toc;

  19. save('StockList','StockList');
  20. str = ['日期时间:',datestr(now),' 更新股票列表'];
  21. fprintf(fid,'%s\n',str);
  22. %% 获取股票日线(除权除息)数据测试

  23. stock_code = 'sh600030';

  24. begin_date = '20050101';
  25. end_date = '20150101';

  26. StockDataDouble = GetStockTSDay_Web(stock_code,begin_date,end_date);

  27. %% 股票日线(除权除息) plot
  28. scrsz = get(0,'ScreenSize');
  29. figure('Position',[scrsz(3)*1/4 scrsz(4)*1/6 scrsz(3)*4/5 scrsz(4)]*3/4);

  30. AX1 = subplot(3,1,1:2);
  31. OHLC = StockDataDouble(:,2:end-1);
  32. KplotNew(OHLC);
  33. Dates = StockDataDouble(:,1);
  34. LabelSet(gca, Dates, [], [], 1);

  35. AX2 = subplot(3,1,3);
  36. V = StockDataDouble(:,end);
  37. bar(V);
  38. xlim([0,length(V)]);
  39. LabelSet(gca, Dates, [], [], 1);

  40. linkaxes([AX1, AX2], 'x');
  41. %% 获取股票除权除息数据
  42. StockCode = '600537';
  43. StockCode = '600001';

  44. [ Web_XRD_Data , Web_XRD_Cell_1 , Web_XRD_Cell_2 ] = GetStockXRD_Web(StockCode);
  45. Web_XRD_Cell_1
  46. Web_XRD_Cell_2

  47. %% 进行前复权数据生成


  48. %% 获取股票财务指标测试

  49. StockCode = '600588';
  50. Year = '2014';
  51. [FIndCell,YearList] = GetStockFinIndicators_Web(StockCode,Year);
  52. FIndCell
  53. %% 获取三张表

  54. StockCode = '600588';
  55. Year = '2014';
  56. [BalanceSheet,ProfitSheet,CashFlowSheet,YearList] = GetStock3Sheet_Web(StockCode,Year);
  57. BalanceSheet
  58. ProfitSheet
  59. CashFlowSheet
  60. %% 关闭打开的文件

  61. fclose('all');
  62. %% Record Time
  63. toc;
  64. displayEndOfDemoMessage(mfilename);
复制代码
运行结果

全市场股票列表获取:
1.jpg

股票数据获取demo:
2.jpg

股票除权除息信息获取:
3.jpg

4.jpg

财务指标获取:
5.jpg

三张表获取:

6.jpg
7.jpg
8.jpg


FQuantToolBox截图,未来免费发布:
11.jpg

评分

参与人数 1威望 +2 贝壳 +2 贡献 +2 收起 理由
fantuanxiaot + 2 + 2 + 2 感谢您分享自己珍贵的资料

查看全部评分

发表于 2015-7-14 13:44:38 | 显示全部楼层
GetStock3Sheet_Web.p和GetStockFinIndicators_Web.p能公布一下源码吗?多谢!
回复 支持 反对

使用道具 举报

发表于 2016-1-31 20:47:22 | 显示全部楼层
谢谢大神分享!
回复 支持 反对

使用道具 举报

发表于 2016-4-25 16:52:33 | 显示全部楼层
膜拜,学习中
回复 支持 反对

使用道具 举报

发表于 2014-12-5 14:05:00 | 显示全部楼层
谢谢大神分享!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-5 14:11:56 | 显示全部楼层
fantuanxiaot 发表于 2014-12-5 14:05
谢谢大神分享!

O(∩_∩)O
回复 支持 反对

使用道具 举报

发表于 2014-12-6 16:36:22 | 显示全部楼层
好东西,顶个!之前有尝试弄,只搞了除权除息的,后来买了wind就没弄了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-6 21:12:26 | 显示全部楼层
fosu_cdm 发表于 2014-12-6 16:36
好东西,顶个!之前有尝试弄,只搞了除权除息的,后来买了wind就没弄了

恩。wind 和 宏汇 我们这边也有,但想着还是弄个免费的数据源进行比对一下。

再者 wind 那边股票交易明细数据 下载的时间段有限。用免费的数据源 每日交易明细数据 可以获取更多历史数据,没有时间段限制。

复权函数 打算直接 在你的那个 F_Stock_XRD_Processing.m 上进行修改,我自己也懒得弄了。O(∩_∩)O。

回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-6 21:14:21 | 显示全部楼层
fosu_cdm 发表于 2014-12-6 16:36
好东西,顶个!之前有尝试弄,只搞了除权除息的,后来买了wind就没弄了

再者就是想着 量化这边的东西 还是尽量去平台化(无论是数据模块 还是回测模块),基本能做的东西 都自己写 ,这样不具有平台依赖性,拓展性更强。
回复 支持 反对

使用道具 举报

发表于 2014-12-6 22:36:27 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2014-12-6 22:51:52 | 显示全部楼层
必须支持,更nb了
回复 支持 反对

使用道具 举报

发表于 2014-12-7 00:04:48 | 显示全部楼层
faruto 发表于 2014-12-6 21:14
再者就是想着 量化这边的东西 还是尽量去平台化(无论是数据模块 还是回测模块),基本能做的东西 都自己 ...

学到了!!指点江山
回复 支持 反对

使用道具 举报

发表于 2014-12-7 16:00:05 | 显示全部楼层
膜拜
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 蜀ICP备19014457号 

GMT+8, 2020-10-25 15:42 , Processed in 0.073584 second(s), 16 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表