标签: quantmod

将factor列添加到quantmod/xts

我在这做错了什么?

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对象中的列成为一个因素.我不知道它为什么不起作用.

谢谢

r xts quantmod r-factor

3
推荐指数
1
解决办法
742
查看次数

向chartSeries图形添加垂直线

我希望这不是多余的,因为我已广泛搜索并仍未找到答案.我正在绘制日内数据,并希望在特定时间点放置一条垂直线.看来我必须使用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,但它位于图表下方的新部分而不是覆盖在它上面.有任何想法吗?

r quantmod

3
推荐指数
1
解决办法
2044
查看次数

R quantmod :: getFinancials

我正在使用这个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已经然后被用来获取和打印财务报表.我需要一种方法来直接访问财务报表到函数中
  • 函数的参数函数是一个类似"GE.f"的字符串,但直接输入股票代码("GE")会更方便.我试图使用paste0gsub得到像"GE.f"这样的字符串它不起作用,因为"GE.f"不属于financials该类.

总结一下,我有点失落......

r xts quantmod

3
推荐指数
1
解决办法
2450
查看次数

如何将日期格式从yearmon更改为yyyy-mm-dd?

我的最终目标是将每月标准普尔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)

r ggplot2 dataframe quantmod

3
推荐指数
1
解决办法
3992
查看次数

R-无需图表即可计算布林带的公式?

我有一个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)

请帮助我指出正确的方向。

r quantmod

3
推荐指数
1
解决办法
1249
查看次数

如何使用quantmod包从R中的data.frame中提取行索引

使用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使用,通常我会尝试查找列名并拉出该列,但日期不包含在列中!

r quantmod

3
推荐指数
1
解决办法
2220
查看次数

如何将15分钟数据转换为日期时间格式的时间序列,以便我可以使用quantmod进行绘图?

所以我得到了这个我想要转换成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)

datetime timestamp r time-series quantmod

3
推荐指数
1
解决办法
84
查看次数

如何在 quantmod 图表中突出显示单个蜡烛?

我找不到关于如何在 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 上的那个栏。它可能是不同的蜡烛颜色、围绕它的矩形或不同的背景颜色。任何想法如何做到这一点?

charts r xts quantmod

3
推荐指数
1
解决办法
564
查看次数

R quantmod buildModel() 不适合模型

使用 拟合模型时我无法避免错误quantmodbuildModel似乎不起作用,因此使用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)

runtime-error r quantmod

3
推荐指数
1
解决办法
262
查看次数

尝试创建滚动期cummax

我正在尝试创建一个购买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)

提前致谢

r xts quantmod performanceanalytics

3
推荐指数
1
解决办法
59
查看次数