【问题标题】:addSMA not drawn on graph when called from function从函数调用时,addSMA 未在图形上绘制
【发布时间】:2012-11-24 04:04:55
【问题描述】:

我是 R 的新手并且被困在这里。我正在尝试用价格、sma 和 ema 绘制图表。

当我从命令行调用图表时,它绘制得很好,包括价格、sma 和 ema:

tickers = c("BIIB","ISRG","AIG","FITB","GE","JNY","VIAB","WFM","WMB")

x= 1

print(paste("Preparing ADX graph for :",paste(tickers[x])))
tmp <- read.csv(paste(tickers[x],".csv", sep=""),as.is=TRUE, header=TRUE, row.names=NULL) 
tmp$Date<-as.Date(tmp$Date)
ydat = xts(tmp[,-1],tmp$Date) 
names(ydat) <- c("Open","High","Low","Close","Volume","Adjusted")

# convert it into montly price
ydat.monthly <- to.monthly(ydat)

jpegname <- paste(tickers[x], "MonthlyMovingAverage.jpeg", sep="") 
jpeg( filename=jpegname,height=600, width=1600) 

lineChart(ydat.monthly["1998/"], TA=NULL, name=paste(tickers[x],"Monthly & 10 Month Moving Average"))
addSMA(10)
addEMA(10)

dev.off()

但放入函数为:

MovingMonthlyAverageGraph <- function(tickers)
{

    source("code.r")
    load.packages('quantmod')   

    for (x in 1:(length(tickers)) ) 
    { 
       print(paste("Preparing ADX graph for :",paste(tickers[x])))
       tmp <- read.csv(paste(tickers[x],".csv", sep=""),as.is=TRUE, header=TRUE, row.names=NULL) 
       tmp$Date<-as.Date(tmp$Date)
       ydat = xts(tmp[,-1],tmp$Date) 
       names(ydat) <- c("Open","High","Low","Close","Volume","Adjusted")

       # convert it into montly price
       ydat.monthly <- to.monthly(ydat)

       jpegname <- paste(tickers[x], "MonthlyMovingAverage.jpeg", sep="") 
       jpeg( filename=jpegname,height=600, width=1600) 

       lineChart(ydat.monthly["1998/"], TA=NULL, name=paste(tickers[x],"Monthly & 10 Month Moving Average"))
       addSMA(10)
       addEMA(10)

       dev.off()
    }
}

并称为:

tickers = c("BIIB","ISRG","AIG","FITB","GE","JNY","VIAB","WFM","WMB")
MovingMonthlyAverageGraph(tickers)

只绘制价格,但忽略 sma 和 ema 线。

我在这里做错了什么?

【问题讨论】:

    标签: r quantmod


    【解决方案1】:

    plot 包裹在您的 add* 调用周围。

    plot(addSMA(10))
    plot(addEMA(10))
    

    我认为您也可以将这些添加到 lineChart 调用中。 (未经测试)

    lineChart(ydat.monthly["1998/"], TA="addSMA(10);addEMA(10)", name=paste(tickers[x],"Monthly & 10 Month Moving Average"))
    

    【讨论】:

    • @user1848880,不客气。这其实是r-sig-finance列表(123)上的一个常见问题,所以你可以去那里查看更多细节。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2021-02-08
    • 1970-01-01
    相关资源
    最近更新 更多