>**将获取到的金融数据写入多种不同的文件;读取大智慧导出数据文件;读取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 ```