如何用R语言游戏常用运行库安装包quantmod包

[R语言]quantmod包
金融行情数据分析
统计套利是一种基于模型的套利策略,它从资产的历史交易数据找寻规律,发现两个或者两个以上的资产之间存在的套利机会,然后通过模型拟合资产价格的变化规律,设定交易阀值,通过计算机程序根据市场的实时信息自动发出交易信号而进行套利。
成对交易,即价差交易,是统计套利最常用的策略,指在构建某一资产多头的同时,构建另一种资产的空头,并在将来某一时刻同时了结两资产的头寸。这是一种市场中性策略,可以免疫市场风险,通过捕捉两个或者多个资产之间的相对错误定价机会来获得低风险收益。
主成分分析法,该策略通过分析与股票收益率相关的多种因素,建立回归模型,通过分析资产实际价格和模型预测价格之间的差异来获利。当实际资产价格高于模型预测价格时,则说明该资产被高估了,卖出该资产,待到实际资产价格与模型预测价格相等时,再买入该资产以平掉之前的空头头寸。反之则进行相反操作。
算法交易又称自动交易、黑盒交易或者机器交易,它指的是通过使用计算机程序来发出交易指令的方法。在交易中,程序可以决定的范围包括交易时间的选择、交易的价格,甚至包括最后需要成交的证券数量。
被动型算法交易除利用历史数据估计交易模型的关键参数外,不会根据市场的状况主动选择交易的时机与交易的数量,而是按照一个既定的交易方针进行交易。该策略的核心是减少滑价(目标价与实际成交均价的差)。被动型算法交易最成熟,使用也最为广泛,如在国际市场上使用最多的成交量加权平均价格(VWAP)、时间加权平均价格(TWAP)等都属于被动型算法交易。
主动型算法交易也叫机会型算法交易。这类交易算法根据市场的状况做出实时的决策,判断是否交易、交易的数量、交易的价格等。
高频交易是指从那些人们无法利用的极为短暂的市场变化中寻求获利的计算机化交易,比如,某种证券买入价和卖出价差价的微小变化,或者某只股票在不同交易所之间的微小价差。这种交易的速度如此之快,以至于有些交易机构将自己的“服务器群组”(server
farms)安置到了离交易所的计算机很近的地方,以缩短交易指令通过光缆以光速旅行的距离。
Contents [hide]
一、ETL函数
getSymbols()
getFinancials()
二、分析函数
1、is族函数
2、has族函数
3、列名函数
4、计算函数
三、展现函数
一、ETL函数
常用数据类型
数据类型 全称 意义
OP Open price 开盘价
Hi High price 最高价
Lo Low price 最低价
Cl Close price 收盘价
Vo volume 交易量
Ad Adjusted price 调整价格
HLC High price,Low price,Close price
最高价、最低价和收盘价
OHLC Open price,High price,Low price,Close
price 开盘价、最高价、最低价和收盘价
函数 作用 函数 作用
getSymbols() 从多种信息源里获得信息 getSymbols.csv()
从csv文件中读入数据
getDividends() 获取上市公司的信息数据 getSymbols.FRED()
从FRED中获取数据
getFinancials() 获取上市公司的财务报表
getSymbols.google() 从google中获取数据
getFX() 获取汇率数据 getSymbols.MySQL()
从MySQL中获取数据
getMetals() 获取重金属交易数据 getSymbols.oanda()
从oanda中获取
getSplits() 获取上市公司的拆股数据 getSymbols.rda()
从R的二进制文件中获取数据
getOptionChain() 获取期权交易数据 getSymbols.SQLite()
从SQLite数据库中获取数据
getQuote() 获取即时的网络报价 getSymbols.yahoo()
从雅虎网中获取数据
getSymbols()
getSymbols("EDU",src="yahoo",from="",to="")
&EDU.Open EDU.High EDU.Low EDU.Close EDU.Volume
EDU.Adjusted
&31.10 & &31.21
& 30.36 & &
30.62 & & 463200
&30.08 & &30.72
& 30.06 & &
30.27 & & 593300
&30.46 & &30.67
& 30.11 & &
30.38 & &2021100
&30.47 & &31.39
& 30.32 & &
31.26 & &1159100
&31.71 & &32.63
& 31.59 & &
32.41 & &1528200
&32.00 & &33.59
& 32.00 & &
32.54 & &1450800
&32.94 & &32.99
& 32.27 & &
32.63 & & 834500
&32.64 & &32.78
& 32.08 & &
32.66 & &1083600
&32.63 & &32.82
& 32.17 & &
32.77 & &1463500
&32.83 & &33.39
& 32.65 & &
33.07 & &1037800
&33.18 & &33.28
& 32.80 & &
33.00 & &1129000
&33.00 & &34.49
& 32.87 & &
33.68 & &2384800
&34.50 & &34.50
& 31.63 & &
33.00 & &2958400
&33.65 & &33.86
& 32.59 & &
32.94 & &1656200
&32.32 & &32.44
& 29.21 & &
30.70 & &2541600
&30.28 & &30.46
& 29.80 & &
29.96 & &2108500
&29.90 & &30.03
& 29.14 & &
29.20 & &1582100
&19.68 & &19.75
& 19.41 & &
19.59 & &1357200
&19.63 & &19.66
& 18.89 & &
19.03 & &2825100
&19.29 & &20.14
& 19.15 & &
19.78 & &2332200
&19.86 & &19.94
& 19.50 & &
19.55 & &1753700
&19.50 & &19.55
& 18.81 & &
19.27 & &1910500
& new.environment &-
getSymbols("AAPL",env=new.environment,src="yahoo",from="",to="")
[1] "AAPL"
Warning message:
In download.file(paste(yahoo.URL, "s=",
Symbols.name, "&a=", from.m,
& downloaded length 961 !=
reported length 200
ls(envir=new.environment)
[1] "AAPL"
get("AAPL",envir=new.environment)
&AAPL.Open AAPL.High AAPL.Low AAPL.Close
AAPL.Volume
&489.14 & 478.38
& & 487.96 &
&491.80 & 483.75
& & 489.56 &
&492.35 & 480.74
& & 483.41 &
&484.60 & 478.60
& & 483.03 &
&492.65 & 485.35
& & 487.75 &
&490.64 & 480.54
& & 480.94 &
&487.79 & 478.28
& & 486.59 &
&492.38 & 487.04
& & 489.64 &
&493.84 & 485.16
& & 492.81 &
&497.58 & 489.35
& & 496.04 &
&502.00 & 495.52
& & 498.68 &
&502.53 & 499.23
& & 501.11 &
&504.78 & 499.68
& & 504.50 &
&509.26 & 505.71
& & 508.89 &
&524.30 & 511.52
& & 521.36 &
&528.45 & 508.03
& & 519.87 &
&525.67 & 519.00
& & 524.96 &
&AAPL.Adjusted
获取沪深300指数的日数据,它的代码为000300.ss,后面的字母表示该指数从属哪个交易所
getSymbols("000300.ss",env=new.environment,src="yahoo",from="",to="")
[1] "000300.SS"
Warning message:
In download.file(paste(yahoo.URL, "s=",
Symbols.name, "&a=", from.m,
& downloaded length 1197 !=
reported length 200
& ls(new.environment)
[1] "000300.SS" "AAPL" &
get("000300.ss",envir=new.environment)
Error in get("000300.ss", envir =
new.environment) :&
& object '000300.ss' not
get("000300.SS",envir=new.environment)
&000300.SS.Open 000300.SS.High 000300.SS.Low
000300.SS.Close 000300.SS.Volume
000300.SS.Adjusted
& & &2321.98
&2321.98 & &
& 2321.98 & &
& & 2321.98 &
& & &2290.78
&2290.78 & &
& 2290.78 & &
& & 2290.78 &
& & &2238.64
&2238.64 & &
& 2238.64 & &
& & 2238.64 &
& & &2238.00
&2238.00 & &
& 2238.00 & &
& & 2238.00 &
& & &2241.91
&2241.91 & &
& 2241.91 & &
& & 2241.91 &
& & &2222.22
&2222.22 & &
& 2222.22 & &
& & 2222.22 &
& & &2204.85
&2204.85 & &
& 2204.85 & &
& & 2204.85 &
& & &2193.68
&2193.68 & &
& 2193.68 & &
& & 2193.68 &
& & &2212.85
&2212.85 & &
& 2212.85 & &
& & 2212.85 &
& & &2208.94
&2208.94 & &
& 2208.94 & &
& & 2208.94 &
& & &2211.84
&2211.84 & &
& 2211.84 & &
& & 2211.84 &
& & &2178.49
&2178.49 & &
& 2178.49 & &
& & 2178.49 &
& & &2165.99
&2165.99 & &
& 2165.99 & &
& & 2165.99 &
& & &2187.41
&2187.41 & &
& 2187.41 & &
& & 2187.41 &
& & &2243.80
&2243.80 & &
& 2243.80 & &
& & 2243.80 &
& & &2231.89
&2231.89 & &
& 2231.89 & &
& & 2231.89 &
& & &2245.68
&2245.68 & &
& 2245.68 & &
& & 2245.68 &
& & &2215.92
&2215.92 & &
& 2215.92 & &
& & 2215.92 &
& & &2219.85
&2219.85 & &
& 2219.85 & &
& & 2219.85 &
& & &2227.78
&2227.78 & &
& 2227.78 & &
& & 2227.78 &
& & &2202.45
&2202.45 & &
& 2202.45 & &
& & 2202.45 &
符数据源:/article-1466-1.html
从oanda上获取汇率
getFX("HKD/USD",from="",env=new.environment)
[1] "HKDUSD"
Warning message:
In download.file(paste(oanda.URL, from.date,
to.date, "exch=", currency.pair[1],
& downloaded length 18670 !=
reported length 200
get("HKDUSD",env=new.environment)
getFinancials()
从Google Finance上下载财务报表,其中包括income
statement(IS), Balance Sheet(BS)和Cash Flow
Statement(CF)
getFinancials("AAPL")
viewFinancials(AAPL.f)
get("AAPL",verbose=TRUE)
viewFinancials(AAPL.f)
viewFinancials(AAPL.f,c("CF","IS","BS"),"Q")
二、分析函数
1、is族函数
判断某数据是否是某类型的数据
is.OHLCV()
2、has族函数
检查数据里面是否包含某类型的数据
has.OHLC()
has.OHLCV()
has.Price()
has.Trade()
3、列名函数
提取某种数据类型
4、计算函数
Delt() 计算变化率
Lag() 求滞后k期
Next() 求k个后
first() 求前k个
last() 求后k个
findPeaks() 找出峰值
findValleys() 找出谷值
seriesIncr() 差分后大于限值的点
seriesDecr() 差分后小于限值的点
endpoints() 寻找节点
to.weekly() 将OHLC数据转化为周数据
to.monthly() 将PHLC数据转化为月数据
periodicity() 返回数据的日期范围
计算不同阶段的收益率
periodReturn()
dailyReturn()
weeklyReturn()
monthlyReturn()
quarterlyReturn()
annualReturn()
yearlyReturn()
allReturn()
三、展现函数
chartTheme()
chartSeries()
barChart()
candleChart()
lineChart()
技术分析图
addBBands()
addEnvelope()
addEVWMA()
addMomentum()
addExpiry()
addZLEMA()
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。R语言quantmod包无法使用? - 知乎1被浏览7分享邀请回答还没有回答苹果/安卓/wp
积分 283, 距离下一级还需 167 积分
权限: 自定义头衔, 签名中使用图片
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡, 显身卡, 匿名卡下一级可获得
道具: 抢沙发
购买后可立即获得
权限: 隐身
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
如下命令:
& setSymbolLookup(A.Share.index=list(name=&000002.ss&,src=&yahoo&))& getSymbols(&A.Share.index&)curl: (22) The requested URL returned error: 404 Not FoundError in file(file, &rt&) : 无法打开链结此外: Warning messages:1: In download.file(paste(yahoo.URL, &s=&, Symbols.name, &&a=&, from.m,&&:&&download had nonzero exit status2: In file(file, &rt&) :&&无法打开文件'/var/folders/4z/3tsw29h52n76dwsr6dstm15h0000gn/T//Rtmp6O1vBW/file10b255a70a07': No such file or directory&
请问,有同学遇到这样的问题吗?该如何解决啊?谢谢!
支持楼主:、
购买后,论坛将把您花费的资金全部奖励给楼主,以表示您对TA发好贴的支持
载入中......
可以参考,虽然缺失许多代码无法正常运行,但是
因为网站主页无法采集到数据... 然而楼主可以通过主页搜索股票代号... 然后再把以上的&sh600000&end_date=&begin_date=&修改为您想要的自变量(股票代码),而end_date=和begin_date=则让您自行修改两个自变量(开始结束的日期),再导入quantmod程序包的getSymbols函数中即可...
有些股票价格走势只有在google或yahoo其中一个,可以使用tryCatch(用处在于:第一个采集失败,将会有第二个后补,而一般上雅虎将有列叫adjsued price的变量而谷歌则没有)。
分享一下咱上个星期编写的函数,可以参考trycatch在quantmod的getSymbols遇到错误信息时的应用...
因为getSymbols是将采集到的价格走势个别储存在environment中,在中可以学习到环境应用... 目前也正在学习中,因为编写shiny app时非常需要熟悉如何应用environment... 而以下函数咱则将采集到的数据都转化为数据框方便在rCharts或者googleVis中绘图... (因为quantmod内有的chartSeries没有互动式的d3效果)
getData &- function(ticker, from='', to=as.character(Sys.Date())){
&&
&&if(!require('BBmisc')) suppressMessages(install.packages('BBmisc'))
&&suppressMessages(BBmisc::lib(c('plyr', 'dplyr', 'tidyr', 'lubridate', 'TTR', 'quantmod', 'doParallel')))
&&
&&## Load below packages globally (system path) in case of BBmisc::lib() only install locally (user path)
&&##& &and doesn't work during runApp() shinyapps.
&&#'@ suppressMessages(library('plyr'))
&&#'@ suppressMessages(library('dplyr'))
&&#'@ suppressMessages(library('tidyr'))
&&#'@ suppressMessages(library('quantmod'))
&&#'@ suppressMessages(library('TTR'))
&&#'@ suppressMessages(library('lubridate'))
&&#'@ suppressMessages(library('doParallel'))
&&
&&## Creating a parallel computing Cluster and support functions.
&&## Preparing the parallel cluster using the cores
&&doParallel::registerDoParallel(cores = 16)
&&
&&data &- llply(ticker, function(x){
& & y = as.data.frame(
& && &tryCatch(suppressAll(getSymbols(x, src = 'yahoo', auto.assign = FALSE, from=from, to=to)),
& && && && && &error = function(e) data.frame(Open=NA, High=NA, Low=NA, Close=NA, Volume=NA, Adjusted=NA)))
& & if(nrow(na.omit(y))==0){
& && &y = as.data.frame(
& && &&&tryCatch(suppressAll(getSymbols(x, src = 'google', auto.assign = FALSE,
& && && && && && && && && && && && && & from=from, to=to)), error = function(e)
& && && && && && && && && && && && && && &data.frame(Open=NA, High=NA, Low=NA, Close=NA, Volume=NA, Adjusted=NA)))
& && &y$Adjusted &- as.numeric(NA)
& && &names(y)[length(y)] &- paste0(x, '.Adjusted')
& && &names(y) &- gsub('X888', '888', names(y))
& & }
& &
& & z = y %&% mutate(Date=as.character(rownames(.)), Weekday=factor(weekdays(ymd(Date)))) %&%
& && &select(Date, Weekday)
& & dt = data.frame(z, y) %&% tbl_df
&&}, .parallel=TRUE) %&% Reduce(function(x, y) merge(x, y, all=T, by=c('Date', 'Weekday')), ., accumulate=F) %&%
& & tbl_df %&% filter(nchar(Date)==10 & substr(Date,5,5)=='-' & substr(Date,8,8)=='-')
&&names(data) &- gsub(substr(grep('X888', names(data), value=TRUE),1,4),'888', names(data))
&&
&&cate &- c('Open', 'High', 'Low', 'Close', 'Volume', 'Adjusted')
&&dataPlotLine &- llply(cate, function(x) data[c('Date', 'Weekday', grep(x, names(data), value=TRUE))])
&&names(dataPlotLine) &- cate
&&
&&dataComb &- llply(seq(cate), function(i) {
& & dataPlotLine[[i]] %&% gather(Com, Price, -c(Date:Weekday))
&&}) %&% rbind_all %&% tbl_df # %&% arrange(Date, Com)
&&dataComb2 &- dataComb %&% separate(Com, c('Com', 'Status')) %&% na.omit %&% spread(Status, Price) %&%
& & arrange(Date, Com) %&% select(Date, Weekday, Com, Open, High, Low, Close, Volume, Adjusted)
&&#'@ dataComb %&% spread(Com, Price) #similar with the above dataframe object 'data'
&&
&&return(list(dataTable=dataComb2, ggPlot=dataComb, listPlot=dataPlotLine, dataPlot=data))
}复制代码
热心帮助其他会员
总评分:&论坛币 + 30&
学术水平 + 2&
热心指数 + 2&
信用等级 + 2&
/scibrokes/owner
获取股票信息的简单shiny接口
/scibrokes/owner
收到,首先表达感谢,然后自己再测试一下,学习了:)
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
论坛法律顾问:王进律师

我要回帖

更多关于 quantmod包 的文章

 

随机推荐