股票交易有着大量的历史数据, 这些数据被存储在数据库中, 对数据挖掘而言, 股票交易市场是个具有巨大潜力的应用领域. 如何获取海量的股票交易数据并进行分析, 本篇文章将分别介绍网络数据的获取方法, 以及使用MySQL数据库获取股票数据的方法.

本篇内容将介绍使用tseries包、 quantmod包、MySQL数据库获取金融数据的方法.

数据说明

股票的日交易数据应该包括下面几个属性:

交易日价

当日开盘价

当日最高价

当日最低价

当日收盘价

当日成交量

当日调整后的收盘价(该价格是调整了股票分割、分红、配股等之后的价格)

数据获取

方法二:Wind数据库

Wind数据库是金融界专业的股票数据库, 适合没有编程基础的金融分析人员对金融数据进行数据分析与挖掘. Wind数据库使用需付费.

方法三: 通过R扩展包.

R中有许多扩展包, 帮助用户获取网络金融数据. 本章将介绍tseries和著名的quantmod包, 对股票数据进行获取和分析.

方法四:MySql数据库.

windows系统

UNIX系统(Mac/Linux)

tseries包:用于时间序列分析和计算金融学的一个R语言支持包.

更新版本: 2018-06-04

R的支持包tseries有函数get.hist.quote( ), 该函数可以用来下载报价数据到R对象中.

本篇文章使用tseries包从Yahoo财经网站获取S&P500指数, 它允许以.CSV数据文件格式下载股票报价.

获取2000年至今的18年股票交易数据

由于函数get.hist.quote( )包含在tseries包中, 在使用该函数时需要:

library(tseries)

get.hist.quote( )函数将返回zoo类(数据类型)的对象, 所以使用函数as.xts( )把该对象转换成一个xts对象.

xts包中的时间处理可通过“start=”和“end=”两个参数进行声明, 例如获取2000~2010年的十年间的宏观数据.

获取指定年间数据

使用head( )函数查看前六个数据.

浏览GSPC数据概况

quantmod包

另外一种通过网络获取数据的方法是应用quantmod包中的函数 getSymbols( ).

quantmod包:提供了与分析金融数据有关的功能.

函数getSymbols( )和quantmod包中的其他函数一起提供了获取不同来源交易数据的相对简单、单数功能强大的方法.

获取数据

library(quantmod)  #载入R支持包

在quantmod包提供的框架中, 可以有多个符号来自不同的相关数据源, 每个都有各自的参数.

使用quantmod包获取数据

函数getSymbols( )的第一个参数是一个符号集合, 该函数将从不同网站或本地数据库中提取这些符号所对应的交易数据, 然后默认返回与符号同名的xts对象.

获取指定股票

使用setSymbolsLookup( )获取特定股票数据.

获取IBM股票数据

当调用getSymbols( )函数获取以上设置的标识符数据时,将应用getSymbolsLookup( )所做的相关设置.

MySQL数据库

常见数据读取方式是从MySQL数据库中读取. 部分企业会使用Oracle或者分布式数据库. 在R中有两种方式和数据库进行通信.

一种方式是给予ODBC协议, 另一种方式是给予DBI包提供的通用接口和每个数据库管理系统(DBMS)专有的包.

如果决定应用ODBC协议, 那么需要确认可以应用该协议和数据库通信, 这需要在数据库端安装相关的驱动程序, 在R端,需要的是安装RODBC包.

DBI包,实现了一系列的数据库接口函数, 这些函数独立于实际上存储数据的数据库服务器.只需要在最初和数据库建立连接时指出用户将应用哪一个通信接口.当改变数据库时 ,只要改变一条指令即可. 用户需要安装对应的R包来处理不同数据库的通信细节, R有许多专有的数据库包, 对于存储于服务器上的MySQL数据库通信, 需要RMySQL包.

在windows系统上加载数据

在windows系统上运行R, 无论MySQL数据库服务器是在该台计算机上, 还是在另一台计算机上(或是其他操作系统), 从R连接该数据库的最简便方法是通过ODBC(开放数据库互联)协议.

在R中使用这个协议, 需要安装RODBC添加包.

在Linux系统上加载数据

在类UNIX系统(Mac、Linux)上运行R, 那么连接MySQL数据库最容易的途径是通过DBI包与RMySQL包的结合.

对于金融数据,可以使用quantmod包提供的函数来应用MySQL数据库中的数据.

感谢zs提供的Wind数据库支持

推荐阅读

R语言数据分析与实践

建模专题

思想常新者,以数据为其探寻之源