>**将获取到的金融数据写入多种不同的文件;读取大智慧导出数据文件;读取MT4导出数据文件**
```r
#加载quantmod包
library(quantmod)
# 从雅虎金融上获取GSPC标普500的结果
> getSymbols("^GSPC",src="yahoo",from="2004-1-1",to="2014-1-1")
> tail(GSPC)
GSPC.Open GSPC.High GSPC.Low GSPC.Close GSPC.Volume GSPC.Adjusted
2013-12-23 1822.92 1829.75 1822.92 1827.99 2851540000 1827.99
2013-12-24 1828.02 1833.32 1828.02 1833.32 1307630000 1833.32
2013-12-26 1834.96 1842.84 1834.96 1842.02 1982270000 1842.02
2013-12-27 1842.97 1844.89 1839.81 1841.40 2052920000 1841.40
2013-12-30 1841.47 1842.47 1838.77 1841.07 2293860000 1841.07
2013-12-31 1842.61 1849.44 1842.41 1848.36 2312840000 1848.36
# 设置当前目录
setwd("d:/rstudiodir")
# 将保存历史记录的数据框直接写入本地RDATA文件
> save(GSPC,file="GSPC.RDATA")
> dir()
[1] "GSPC.jpeg" "GSPC.RDATA" "test01.jpg" "标普500走势图.jpeg"
# 删除变量GSPC之后,内存中无内容无法访问
> rm(GSPC) #删除
> tail(GSPC) #无法访问了
Error in tail(GSPC) : object 'GSPC' not found
# load()函数可以装载save()函数保存的历史数据
> load("GSPC.RDATA")
> tail(GSPC)
GSPC.Open GSPC.High GSPC.Low GSPC.Close GSPC.Volume GSPC.Adjusted
2013-12-23 1822.92 1829.75 1822.92 1827.99 2851540000 1827.99
2013-12-24 1828.02 1833.32 1828.02 1833.32 1307630000 1833.32
2013-12-26 1834.96 1842.84 1834.96 1842.02 1982270000 1842.02
2013-12-27 1842.97 1844.89 1839.81 1841.40 2052920000 1841.40
2013-12-30 1841.47 1842.47 1838.77 1841.07 2293860000 1841.07
2013-12-31 1842.61 1849.44 1842.41 1848.36 2312840000 1848.36
```
```r
# 读取CSV文件
# header=T,表示文件存在,表示数据含义的数据头部
# skip=0,表示数据中没有需要跳过的行
> TRData <- read.csv("TradeRecord.csv",header=T,skip=0)
> head(TRData)
开始日期 关闭日期 类型 货币 买价 卖价 损益点数
1 03/05/2014 03/05/2014 SHORT EUR/USD 1.37311 1.37098 21.3
2 02/28/2014 02/28/2014 SHORT AUD/USD 0.89550 0.89494 5.6
3 02/27/2014 02/27/2014 SHORT EUR/USD 1.36849 1.36625 22.4
4 02/27/2014 02/27/2014 SHORT AUD/USD 0.89332 0.89079 25.3
5 08/02/2013 01/16/2014 SHORT AUD/USD 0.88992 0.87825 116.7
6 08/05/2013 01/16/2014 SHORT AUD/USD 0.88610 0.87825 78.5
# 将csv数据写入文件
# 如果这样直接写入会保留行号不利于后续分析,并增加文件大小
write.csv(TRData,file="WriteTR.csv")
# 设置参数不写入
write.csv(TRData,file="WriteTR.csv",row.names=F)
# 读取内存数据文件
# 打开Excel文件,拷贝相关交易数据
# read.table()具备从内存剪贴板中读取数据
TRData <- read.table("clipboard", header = T, sep = "\t") #clipboard表示从剪贴板读
head(TRData)
```
```r
# 从普通文本中读取数据
# 打开大智慧软件查找EURUSD品种,找到欧元兑美元汇率
# 将数据拷贝到剪贴板中并保存到文本文件中
# 使用read.table()读取文件
> EURUSD <- read.table("DZHEURUSD.txt", header = T, skip=1,sep = "\t")
> head(EURUSD);tail(EURUSD)
日期 开盘 最高 最低 收盘 成交量 成交额 成交笔数
1 1999/01/01 1.1736 1.1804 1.1662 1.1800 0 0 0
2 1999/01/04 1.1747 1.1900 1.1738 1.1793 0 0 0
3 1999/01/05 1.1791 1.1840 1.1774 1.1820 0 0 0
4 1999/01/06 1.1818 1.1823 1.1718 1.1753 0 0 0
5 1999/01/07 1.1751 1.1774 1.1561 1.1660 0 0 0
6 1999/01/08 1.1661 1.1736 1.1630 1.1585 0 0 0
日期 开盘 最高 最低 收盘 成交量 成交额 成交笔数
3973 2014/04/11 1.3887 1.3905 1.3863 1.3884 0 0 0
3974 2014/04/14 1.3841 1.3863 1.3807 1.3821 0 0 0
3975 2014/04/15 1.3820 1.3833 1.3789 1.3812 0 0 0
3976 2014/04/16 1.3814 1.3850 1.3803 1.3814 0 0 0
3977 2014/04/17 1.3815 1.3864 1.3810 1.3815 0 0 0
3978 2014/04/18 1.3813 1.3822 1.3807 1.3819 0 0 0
# 1989-7-17以来的英镑兑美元历史数据
> GBPUSD <- read.table("DZHGBPUSD.txt", header = T, skip=1,sep = "\t")
> head(GBPUSD);tail(GBPUSD)
日期 开盘 最高 最低 收盘 成交量 成交额 成交笔数
1 1989/07/17 1.605 1.616 1.603 1.615 0 0 0
2 1989/07/18 1.605 1.628 1.602 1.625 0 0 0
3 1989/07/19 1.621 1.627 1.614 1.614 0 0 0
4 1989/07/20 1.612 1.630 1.609 1.624 0 0 0
5 1989/07/21 1.620 1.635 1.618 1.618 0 0 0
6 1989/07/24 1.622 1.628 1.617 1.626 0 0 0
日期 开盘 最高 最低 收盘 成交量 成交额 成交笔数
6449 2014/04/11 1.6783 1.6787 1.6716 1.6737 0 0 0
6450 2014/04/14 1.6717 1.6743 1.6696 1.6726 0 0 0
6451 2014/04/15 1.6725 1.6748 1.6657 1.6723 0 0 0
6452 2014/04/16 1.6725 1.6816 1.6718 1.6792 0 0 0
6453 2014/04/17 1.6795 1.6841 1.6783 1.6793 0 0 0
6454 2014/04/18 1.6793 1.6795 1.6772 1.6775 0 0 0
```
```r
# 从网站上读取所有表格文件
install.packages("XML") #安装xml包
library(XML) #加载xml包
url <- "http://en.wikipedia.org/wiki/World_human_population"
tbls <- readHTMLTable(url)
# 分析tbls的类型为列表
print(class(tbls))
str(tbls)
print(length(tbls))
# 输出表格列表中的第一个元素
tbls[[1]]
```
```r
# 从MT4平台导出数据的方法
# MT4也是外盘重要的交易平台,当我们没有特定品种数据时可以从MT4中导出文本文件
# 注意:MT4表示时间时使用"."做分割如:2014.4.18,这种格式R语言无法直接读取
# 要么编写一个MT4脚本读取到历史数据之后提取年月日信息然后转换成标准的2014/4/18字符串形式
# 要么明确日期字符串格式类型,然后转换
as.Date("2014.4.18",format="%Y.%m.%d")
# MT4中导出HKG33数据写为文本文件然后读取
> HKG33 <- read.table("HKG33.TXT", header = T,sep = "\t")
> head(HKG33);tail(HKG33)
DateTime Open High Low Close
1 1994/3/12 9905 10101 8996 9132
2 1994/3/19 9132 9573 8534 9234
3 1994/3/26 9234 9485 8888 9030
4 1994/4/2 9030 9376 9030 9298
5 1994/4/9 9298 9906 9266 9536
6 1994/4/16 9536 9568 8861 9157
DateTime Open High Low Close
1051 2014/2/23 22564 22988 22217 22846
1052 2014/3/2 22560 22864 22415 22649
1053 2014/3/9 22303 22374 21459 21509
1054 2014/3/16 21498 21611 21115 21448
1055 2014/3/23 21662 22147 21564 22070
1056 2014/3/30 22208 22758 22024 22569
```