2012-11-24 23 views
5

Tôi là người mới cho R và đã bị kẹt ở đây. Tôi đang cố gắng vẽ một đồ thị với giá, sma và ema.addSMA không được vẽ trên biểu đồ khi được gọi từ hàm

Khi tôi gọi đồ thị từ dòng lệnh nó vẽ tốt bao gồm giá cả, SMA và 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() 

Nhưng đưa vào chức năng như:

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() 
    } 
} 

và gọi là:

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

chỉ rút giá, nhưng bỏ qua các dòng sma và ema.

Tôi đang làm gì sai ở đây?

Trả lời

8

quấn plot xung quanh thêm * cuộc gọi của bạn.

Tôi nghĩ bạn cũng có thể thêm các lệnh này vào cuộc gọi lineChart thay thế. (chưa được kiểm tra)

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

Cảm ơn Gsee .. cốt truyện() đã làm việc ... Giải quyết vấn đề của tôi ... – user1848880

+0

@ user1848880, bạn được chào đón. Đây thực sự là một câu hỏi phổ biến trong danh sách [r-sig-finance] (https://stat.ethz.ch/mailman/listinfo/r-sig-finance) ([1] (https: //stat.ethz. ch/pipermail/r-sig-finance/2009q2/004018.html), [2] (https://stat.ethz.ch/pipermail/r-sig-finance/2009q1/003828.html), [3] (https://stat.ethz.ch/pipermail/r-sig-finance/2012q2/009865.html)), vì vậy bạn có thể xem ở đó để biết thêm chi tiết. – GSee

Các vấn đề liên quan