2012-11-24 13 views
5

Jestem nowicjuszem dla R i utknąłem tutaj. Próbuję narysować wykres z ceną, sma i ema.addSMA nie został narysowany na wykresie, gdy został wywołany z funkcji

Kiedy zadzwonić wykres z linii poleceń to wciąga w porządku w tym cenowej, SMA i 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() 

Ale umieścić w funkcji jak:

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

i nazywa się:

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

pobiera tylko cenę, ale ignoruje linie sma i ema.

Co ja tu robię źle?

Odpowiedz

8

wrap plot wokół połączeń dodawania *.

Myślę, że można również po prostu dodać je do połączenia lineChart. (Niesprawdzone)

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

Dzięki GSEE .. fabuła() pracował ... rozwiązać mój problem ... – user1848880

+0

@ user1848880, jesteś mile widziany. Jest to częste pytanie na liście [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)), abyś mógł tam szukać więcej szczegółów. – GSee

Powiązane problemy