再現可能な例を提供すると、はるかに多くの回答が得られます。まずは、あなたのデータを複製してみましょう:
library(quantmod)
symbols <- c("GS", "MS")
getSymbols(symbols)
# Create example data:
dGS <- data.frame("Symbol" = "GS", "Date" = index(GS), coredata(OHLCV(GS)))
names(dGS) <- str_replace(names(dGS), "GS\\.", "")
dMS <- data.frame("Symbol" = "MS", "Date" = index(MS), coredata(OHLCV(MS)))
names(dMS) <- str_replace(names(dMS), "MS\\.", "")
dfSMA <- rbind(dGS, dMS)
> head(dfSMA)
Symbol Date Open High Low Close Volume Adjusted
1 GS 2007-01-03 200.60 203.32 197.82 200.72 6494900 178.6391
2 GS 2007-01-04 200.22 200.67 198.07 198.85 6460200 176.9748
3 GS 2007-01-05 198.43 200.00 197.90 199.05 5892900 177.1528
4 GS 2007-01-08 199.05 203.95 198.10 203.73 7851000 181.3180
5 GS 2007-01-09 203.54 204.90 202.00 204.08 7147100 181.6295
6 GS 2007-01-10 203.40 208.44 201.50 208.11 8025700 185.2161
あなたが何をしたいかは、あなたの長いデータオブジェクトのサブセットを、その後、孤立して各シンボルにテクニカル指標を適用しています。ここでは、あなたが望む結果を達成するための手引きをしています。
あなたはlist
を使用してこれを行うと、あなたはあなたの例で行うようにしませdata.frame
に、各シンボルのためxts
データオブジェクトに指標を構築することができ(あなたはdata.frameの列にTTR機能を適用することができますが、それ醜いです - xtsオブジェクトを使った作業ははるかに理想的です)。これはあなたがそれを行う方法のテンプレートです。最終出力はl.data
で直感的に操作できます。それぞれのシンボルを1つのdata.frame
のすべてのシンボルと組み合わせるのではなく、別の「コンテナ」(リストの要素)に保管してください。
make_xts_from_long_df <- function(x) {
# Subset the symbol you desire
res <- dfSMA[dfSMA$Symbol == x, ]
#Create xts, then allow easy merge of technical indicators
x_res <- xts(OHLCV(res), order.by = res$Date)
merge(x_res, SMA(Cl(x_res), n = 20))
}
l.data <- setNames(lapply(symbols, make_xts_from_long_df), symbols)
ありがとうございます - 私はこれを離れて遊びます。あなたの助けに感謝します。 –