我在这做错了什么?
library(quantmod)
getSymbols('^GSPC')
b <- tail(GSPC, 20) #for brevity
is.factor(factor(Cl(b), labels=c('A')))
> TRUE
b$f <- factor(Cl(b), labels=c('A'))
is.factor(b$f)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)
我希望我的xts/quantmod对象中的列成为一个因素.我不知道它为什么不起作用.
谢谢
我希望这不是多余的,因为我已广泛搜索并仍未找到答案.我正在绘制日内数据,并希望在特定时间点放置一条垂直线.看来我必须使用addTA函数,但它总是在一些奇怪的空白空间中绘制在我的图形下方.这是一些示例代码和数据.谢谢你的帮助.
数据:
date,value
29-DEC-2010:00:02:04.000,99.75
29-DEC-2010:00:03:44.000,99.7578125
29-DEC-2010:00:05:04.000,99.7578125
29-DEC-2010:00:07:53.000,99.7421875
29-DEC-2010:00:07:57.000,99.71875
29-DEC-2010:00:09:20.000,99.7421875
29-DEC-2010:00:11:04.000,99.75
29-DEC-2010:00:12:56.000,99.7421875
29-DEC-2010:00:13:05.000,99.7421875
Run Code Online (Sandbox Code Playgroud)
码:
#set up data
data = read.csv("foo.csv")
values = data[,2]
time = c(strptime(data[,1],format="%d-%b-%Y:%H:%M:%S",tz="GMT"))
dataxts = xts(values, order.by=time,tzone="GMT")
# chart data
chartSeries(dataxts)
# add vertical line - this is where I have no clue what's going on.
addTA(xts(TRUE,as.POSIXlt("2010-12-29 00:11:00",tz="GMT"),on=1))
Run Code Online (Sandbox Code Playgroud)
最终发生的事情是我得到一条我想要的垂直线,2010-12-29 00:11:00,但它位于图表下方的新部分而不是覆盖在它上面.有任何想法吗?
我正在使用这个quantmod包.我有一个这样的代码矢量:
c("AAPL","GOOG","IBM","GS","AMZN","GE")
Run Code Online (Sandbox Code Playgroud)
我想创建一个函数来计算股票的息税前利润率(=营业收入/总收入).因此,对于给定的股票,我使用以下只适用于GE的代码(如果在股票代码的末尾添加".f"):
require(quantmod)
getFinancials("GE",period="A")
ebit.margin <- function(stock.ticker.f){
return(stock.ticker$IS$A["Operating Income",]/stock.ticker$IS$A["Total Revenue",])
}
ebit.margin("GE")
Run Code Online (Sandbox Code Playgroud)
我想概括这个函数,以便使用该apply函数.有几个困难:
quantmod::getFinancial功能应用于股票代码时,股票的财务报表将保存在默认环境中.在viewFinancial已经然后被用来获取和打印财务报表.我需要一种方法来直接访问财务报表到函数中paste0和gsub得到像"GE.f"这样的字符串它不起作用,因为"GE.f"不属于financials该类.总结一下,我有点失落......
我的最终目标是将每月标准普尔500指数,苏富比和工业生产划分为一个标准化的ggplot2,包括经济衰退条.
我通过quantmod和Quandl收集我的数据:
#======= LOAD PACKAGES ====================================
library(tseries)
library(quantmod)
library(Quandl)
library(ggplot2)
library(forecast)
library(urca)
#======= DATA IMPORT ======================================
env1 = new.env()
getSymbols("^GSPC", env = env1, src ="yahoo", from = as.Date("1988-06-01"),to = as.Date("2013-04-01"))
GSPC = env1$GSPC
gspc.df = data.frame(date=time(GSPC), coredata(GSPC))
env2 = new.env()
getSymbols("BID", env = env2, src ="yahoo", from = as.Date("1988-06-01"),to = as.Date("2013-04-01"))
BID = env2$BID
sothebys.df = data.frame(date=time(BID), coredata(BID))
INDPRO <- Quandl("FRED/INDPRO", start_date="1988-06-01",end_date="2013-05-29",type="xts")
indpro.df = data.frame(date=time(INDPRO), coredata(INDPRO))
Run Code Online (Sandbox Code Playgroud)
之后,我将每日数据转换为月度数据:
# Transform data to monthly time series
GSPCM <- to.monthly(GSPC)
gspcm.df = data.frame(date=time(GSPCM), …Run Code Online (Sandbox Code Playgroud) 我有一个OHLC数据框,并尝试在不绘制R图表的情况下计算布林带。
下面的作品,但我正在寻找一个包含BB级别的新数据框架。
head(stock)
minutes.Open minutes.High minutes.Low minutes.Close
2014-08-04 01:00:00 102.561 102.581 102.486 102.537
2014-08-04 05:00:00 102.536 102.677 102.530 102.673
2014-08-04 09:00:00 102.668 102.713 102.537 102.597
2014-08-04 13:00:00 102.591 102.656 102.578 102.578
2014-08-04 17:00:00 102.570 102.572 102.438 102.487
2014-08-04 21:00:00 102.481 102.584 102.460 102.584
chartSeries(stock)
addBBands()
Run Code Online (Sandbox Code Playgroud)
请帮助我指出正确的方向。
使用quantmod包,我正在提取库存数据,如下所示
library(quantmod)
getSymbols('F')
head(F)
Run Code Online (Sandbox Code Playgroud)
它给出了输出
F.Open F.High F.Low F.Close F.Volume
2007-01-03 7.56 7.67 7.44 7.51 78671500
2007-01-04 7.56 7.72 7.43 7.70 63545800
2007-01-05 7.72 7.75 7.57 7.62 40563800
2007-01-08 7.63 7.75 7.62 7.73 48941200
2007-01-09 7.75 7.86 7.73 7.79 56732500
2007-01-10 7.79 7.79 7.67 7.73 42398600
# and an unimportant(here) warning regarding download length
Run Code Online (Sandbox Code Playgroud)
我希望能够在这里提取明显的日期列,并将数据作为data.frame使用,通常我会尝试查找列名并拉出该列,但日期不包含在列中!
所以我得到了这个我想要转换成xts的数据,所以我可以用quantmod绘制它.(这是15米的图表)
> sample
Date Open High Low Close Vol.at.Price Volume
515 2016-06-15 pm 1:15:00 1.7381 1.7600 1.710 1.7399 1.7399 176000
516 2016-06-15 pm 1:30:00 1.7389 1.7400 1.725 1.7350 1.7350 152900
517 2016-06-15 pm 1:45:00 1.7350 1.7650 1.720 1.7550 1.7550 179900
518 2016-06-15 pm 2:00:00 1.7550 1.7600 1.740 1.7500 1.7500 130800
519 2016-06-15 pm 2:15:00 1.7550 1.7800 1.745 1.7800 1.7800 188400
520 2016-06-15 pm 2:30:00 1.7800 1.7899 1.730 1.7300 1.7300 256700
521 2016-06-15 pm 2:45:00 1.7300 1.7800 1.730 1.7664 1.7664 151900 …Run Code Online (Sandbox Code Playgroud) 我找不到关于如何在 quantmod 图表中突出显示单个蜡烛的任何信息。这是一个示例代码:
library(quantmod)
getSymbols("AAPL", src="yahoo")
chart_Series(AAPL, subset="2007-01")
AAPL$show <- ifelse(as.Date(index(AAPL)) == as.Date("2007-01-09"), 1, 0)
add_TA(AAPL$show, col="red")
Run Code Online (Sandbox Code Playgroud)
我想做的是以某种方式突出显示 2007-01-09 上的那个栏。它可能是不同的蜡烛颜色、围绕它的矩形或不同的背景颜色。任何想法如何做到这一点?
使用 拟合模型时我无法避免错误quantmod,buildModel似乎不起作用,因此使用tradeModel上升错误:
getSymbols('GS',src='yahoo')
q.model = specifyModel(Next(OpCl(GS)) ~ Lag(OpHi(GS),0:3))
buildModel(q.model, method='lm',training.per=c('2007-08-01','2007-09-30'))
> q.model # it seems that model is still 'None fitted' ?
quantmod object: Build date:
Model Specified:
Next(OpCl(GS)) ~ Lag(OpHi(GS), 0:3)
Model Target: Next.OpCl.GS Product: GS
Model Inputs:
Fitted Model:
None Fitted
tradeModel(q.model,plot.model=TRUE,trade.dates=c("2008-01-01","2008-12-31"))
Error in UseMethod("predict") :
no applicable method for 'predict' applied to an object of class "NULL"
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个购买N期新高的函数。因此,如果我有一个向量:
x = c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)
我想把滚动期提高到3个周期。这就是我希望功能看起来的样子
x = c(1, 2, 3, 4, 5, 5, 5, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)
我试图在xts对象上执行此操作。这是我尝试过的:
rollapplyr(SPY$SPY.Adjusted, width = 40, FUN = cummax)
rollapply(SPY$SPY.Adjusted, width = 40, FUN = "cummax")
rapply(SPY$SPY.Adjusted, width = 40, FUN = cummax)
Run Code Online (Sandbox Code Playgroud)
我收到的错误是:
Error in `dimnames<-.xts`(`*tmp*`, value = dn) :
length of 'dimnames' [2] not equal to array extent
Run Code Online (Sandbox Code Playgroud)
提前致谢