2017-02-02 4 views
1

移動平均に関する特定の条件を満たすものを自動的に選択したい在庫データをダウンロードしようとしています。今まで私はデータをダウンロードすることができましたが、すべての株式について移動平均データを作成しようとしています。R quantmodを使用してトレンドラインデータを在庫リストに計算する

# Read csv as character list 
ticker.list <- as.character(read.csv("shortftse250tickers.csv",header=F)$V1) 


ftse250 <- new.env() 
allData <- list() 

# Get data 
allData <- getSymbols(ticker.list, from='2017-01-03', src='google', env = ftse250) 

# Extract Close data in correct order 
tl <- mget(ticker.list, envir = ftse250) 
closeData <- do.call(merge, eapply(ftse250, Cl)[allData]) 


# Calculate EMAs for each stock 
for (i in ticker.list) { 

    ema3 <- EMA(closeData[i], 3) 
    ema7 <- EMA(closeData[i], 7) 

} 

すべてが、私はエラーが表示されるループのための最後に到達するまで、[OK]をアップしそうです:

Error in if (length(c(year, month, day, hour, min, sec)) == 6 && c(year, : 
    missing value where TRUE/FALSE needed 

私はnewData <- as.list(closeData)を使用してリストにcloseDataを変換しようとした、およびエラーを受信して​​います

Error in EMA(newData[i], 3) : Invalid 'n' 

私は手動では問題とEMAを計算することはできません

ご協力いただければ幸いです。

答えて

2

2つのこと:(1)closeDataの列名に.Closeが追加されています。 (2)closeDataはxtsオブジェクトなので、別々にサブセット化する必要があります。あなたのループのためにこれを試してください:

# Calculate EMAs for each stock 
for (i in paste0(ticker.list, ".Close")) { 

    ema3 <- EMA(closeData[, i], 3) 
    ema7 <- EMA(closeData[, i], 7) 

} 
+0

完璧に動作します、ありがとう! –

関連する問題