我使用以下文章:
在R中创建平均真实范围跟踪止损指示器.我已经尝试了各种方法来执行此操作,包括for循环,pmin和创建滞后时间序列,似乎没有任何工作.
你能帮帮我吗?
我开始对成对股票(对交易)进行一些分析,这是我为生成图表而编写的函数(pairs.report - 下面列出).
我需要在一个图中绘制三条不同的线.我列出的功能完成了我想要的功能,但如果我想在x轴(时间线)中进行精细定制,则需要一些工作.实际上,它只打印x轴上的年份(10年的数据)或月份(6个月的数据),没有刻度的格式.
如果我使用xts对象,即如果我使用
plot(xts-object-with-date-asset1-asset2, ...)
Run Code Online (Sandbox Code Playgroud)
代替
plot(date, asset2, ...)
Run Code Online (Sandbox Code Playgroud)
我得到一个格式很好的x轴(连同网格和方框),但随后使用点(),text(),lines()等函数添加到图中失败.我想points.xts()和text.xts()不会很快出来.
我想要xts对象的便利,但我还需要对我的情节进行精细控制.那么我的工作流程应该是什么样的呢?我是否必须坚持使用基本图形并手动完成所有自定义操作?或者有什么方法可以让xts为我工作?
我知道格子和ggplot2,但我现在不想使用它们.这是我提到的功能(欢迎任何批评/改进代码的建议) -
library(xts)
pairs.report <- function(asset1, asset2, dataset) {
#create data structures
attach(dataset)
datasetlm <- lm(formula = asset1 ~ asset2 + 0, data = dataset)
beta = coef(datasetlm)[1]
#add extra space to right margin of plot within frame
par(mar=c(5, 4, 4, 4) + 0.1)
# Plot first set of data and draw its axis
ylim <- c(min(asset2,asset1), max(asset2,asset1))
plot(date,
asset2,
axes=T,
ylim=ylim,
xlab="Timeline",
ylab="asset2 and asset1 equity", …Run Code Online (Sandbox Code Playgroud) 我正在使用新的chart_Series,add_TA非常多.它对我很有效,我发现它非常有用.
我想在图表上添加一些东西(水平线和一些文字).这里出现了问题.正确绘制水平线和文本后,如果我调用后续文件,它们就会消失add_TA...请参阅下面的示例代码,它会重现问题:
library(quantmod)
getSymbols("SPY")
dev.new()
chart_Series(SPY)
add_TA(ADX(HLC(SPY))$ADX)
abline(h=15, col="red")
abline(h=35, col="green")
text(10, 7, "Text and horizontal lines disappear after next add_TA is called",
col="blue", cex=0.8, adj = c(0,0))
# run the code up to this point (including text(...
# see how horizontal lines drawn with abline and text is displayed correctly
# now run the last line by adding additional TA and you will see that lines
# and text disappears
add_TA(DVI(Cl(SPY))$dvi)
Run Code Online (Sandbox Code Playgroud)
这是预期的行为吗?
编辑:如何使这项工作(根据下面的约书亚评论:正在重绘绘图对象(chob)时重绘行和文本)?
我刚开始玩quantmod包.然而,文档非常稀疏(也许可以理解,因为它是OSS).
我目前正在使用barChart()这是一个很好的包装图表系列()并完成我想要的大部分,但它产生的默认图表并不是我想要的.具体来说,我想调整barChart()生成的图表以满足我的需求 - 但是,由于我是新手,我不知道我的"调整"是否可以作为包装barChart()的选项提供,或者如果我需要使用特定参数直接调用chartSeries().
我一直在试图做以下事情:
将barChart()生成的图表右上角的可怕{开始日期}/{结束日期}文本替换为我自己选择的文本
指定要在X轴上使用的格式(例如,仅显示世纪的最后两位数字.即'98,'99,'00,'01等)
"强制"顶部图表和底部图表使其Y值打印在图表的左侧
在底部图表中添加一个aditional系列
底部图表使用不同的上/下颜色(默认情况下,使用相同的上/下颜色作为顶部和底部图表)
仅绘制顶部图表(无底部图表)
为顶部图表指定X轴,Y轴网格线间距,底部图表
将图像写入替代输出(例如png图像或pdf文档)而不是图形设备
任何人都可以帮助上述任何(或全部)吗?
在Joshua对我之前关于这个"问题"的帖子做出的回答后(quantmod add_TA和chart_Series的问题 - 调用下一个add_TA后行和文本消失了)我在quantmod中添加了一些"扩展",可以绘制行/段和文本.这样做时我遇到了一个无法解决的问题:
require(quantmod)
add_VerticalLine<-function(xCoordinatesOfLines, on=1, ...) {
lenv <- new.env()
lenv$add_verticalline <- function(x, xCoordinatesOfLines, ...) {
xdata <- x$Env$xdata
xsubset <- x$Env$xsubset
xcoords <- seq(1:NROW(xdata[xsubset]))[index(xdata[xsubset]) %in% index(xCoordinatesOfLines[xsubset])]
abline(v=xcoords, ...)
}
mapply(function(name, value) {assign(name,value,envir=lenv)}, names(list(xCoordinatesOfLines=xCoordinatesOfLines, ...)), list(xCoordinatesOfLines=xCoordinatesOfLines, ...))
exp <- parse(text=gsub("list","add_verticalline", as.expression(substitute(list(x=current.chob(),
xCoordinatesOfLines=xCoordinatesOfLines, ...)))), srcfile=NULL)
plot_object <- current.chob()
lenv$xdata <- plot_object$Env$xdata
plot_object$set_frame(sign(on)*abs(on)+1L)
plot_object$add(exp,env=c(lenv, plot_object$Env),expr=TRUE)
plot_object
}
datesForLines <- c("2012-02-06", "2012-02-07")
verticalLines.xts <- xts(rep(0, length(datesForLines)), order.by=as.Date(datesForLines))
SPX <- getSymbols("^GSPC", from="2012-01-01", auto.assign=FALSE)
chart_Series(SPX, subset="2012")
add_VerticalLine(verticalLines.xts, …Run Code Online (Sandbox Code Playgroud) 我有以下格式的xts
a b c d e f ......
2011-01-03 11.40 NA 23.12 0.23 123.11 NA ......
2011-01-04 11.49 NA 23.15 1.11 111.11 NA ......
2011-01-05 NA NA 23.11 1.23 142.32 NA ......
2011-01-06 11.64 NA 39.01 NA 124.21 NA ......
2011-01-07 13.84 NA 12.12 1.53 152.12 NA ......
Run Code Online (Sandbox Code Playgroud)
是否有一个函数可以应用于生成新的xts或data.frame缺少仅包含NA的列?
带有NA的列的位置不是静态的,因此无法按名称或位置删除这些列
我想针对货币对绘制交易策略.当然,交易策略有很大的价值(> 10'000,因为10'000是初始资本),货币对徘徊在1.5左右.因此,我希望将策略覆盖在与货币对相同的图表上,但我需要两个不同的Y尺度.
我怎样才能做到这一点?
像这样两者都在同一个图表中,但是策略(投资)是不可见的,因为它高于货币对的最高点.
和奖金问题:-)
如何将特定日期的数据分组到今天?像2008年到现在还是什么?
FXTimeSeries <- zoo(MergedSet$FXCloseRate,MergedSet$Date)
InvestmentTimeSeries <- zoo(matrix[,"Investment"], MergedSet$Date)
chartSeries(FXTimeSeries, theme="white", subset='2011-04::2013-06')
addTA(InvestmentTimeSeries,legend="Strategy", on=1)
Run Code Online (Sandbox Code Playgroud) 我想获得通过雅虎财经提供给R的所有共同基金的清单.TTR包中有一个stockSymbols功能,但它似乎没有获得共同基金.
谢谢,
我是R的新手,我在创建技术指标方面遇到了一些问题.更具体地说,我想创建一个指标,Fibonacci它将被添加到chartSeries并且将由5条水平线组成.我正在处理的数据是股票的收盘价.因此,我想要创建的图表将在最高收盘价的点处有一条水平线,在最小收盘价的点上有一条水平线,在前两条之间有三条水平线.我为了获取股票收盘价的时间序列的五个值而编写的代码如下:
Fibonacci <- function(x) {
x <- try.xts(x, error = as.matrix)
n <- nrow(x)
min <- runMin(x,n=n)
max <- runMax(x,n=n)
high <- 0.62*(max-min) + min
middle <- 0.5*(max-min) + min
low <- 0.38*(max-min) + min
res <-cbind(na.spline(min),na.spline(max),na.spline(high),
na.spline(middle),na.spline(low))
colnames(res)<- c("min","max","high","middle","low")
reclass (res, x)
}
Run Code Online (Sandbox Code Playgroud)
我还编写了以下代码,以便将技术指标添加到现有chartSeries的quantmod包图:
addFibonacci<- function(col = "red",overlay = TRUE){
stopifnot("package:TTR" %in% search() || require("TTR", quietly = TRUE))
lchob <- quantmod:::get.current.chob()
x <- as.matrix(lchob@xdata)
chobTA <- new("chobTA")
chobTA@new <- !overlay
if …Run Code Online (Sandbox Code Playgroud) 我今天开始使用quantmod包遇到错误.运行此代码(或一般请求符号)时,其他任何人都有相同的错误?
library(quantmod)
getSymbols("CPIAUCNS",src="FRED")
错误:
Error in download.file(paste(FRED.URL, "/", Symbols[[i]], "/", "downloaddata/", :
cannot open URL 'http://research.stlouisfed.org/fred2/series/CPIAUCNS/downloaddata/CPIAUCNS.csv'
URL本身工作正常.