まず、コミュニティの素晴らしいサポートと反応に感謝したいと思います。
複数のインスツルメントに単純な MA クロスオーバー戦略を適用すると問題が発生します。
基本的に、csv 価格ファイルのデータベースを維持しています。このコードを使用してこれらのファイルを取得します
getdata <- function(ticker){
d <- read.csv(ticker, header=TRUE, sep = ",")
d[,1] <- as.Date(as.character(d[,1]), tz ="GMT", format="%m/%d/%Y")
ticker <- as.xts(d[,-1], order.by =d[,1] )
}
次に、正しいインデックス付けで有効な xts オブジェクトを作成するデータをインポートします
GBPUSD <- getdata("GBPUSD.csv")
AUDUSD <- getdata("AUDUSD.csv")
EURUSD <- getdata("EURUSD.csv")
次に、通常の初期化プロセスを実行します
### Initialisation
currency(c("USD","EUR","AUD","GBP"))
exchange_rate(c("EURUSD","GBPUSD","AUDUSD"),"USD")
symbols <- c("EURUSD","GBPUSD","AUDUSD")
init.date <- "2001-09-04" #date d'initialisation de l'environement
start.date <- "2001-09-05" #1ere date du jeu de donnée
end.date <- "2017-01-04" #dernière date du jeu de donnée
initial.capital <- 1000000 #Capital de départ
model <- strategy("model")
portfolio.st <- account.st <- strat.st <- "model"
if (!exists('.blotter')) .blotter <- new.env()
if (!exists('.strategy')) .strategy <- new.env()
次に (問題はここにあると思います)、ポートフォリオを開始します。そのような商品の名前を直接入力するポートフォリオを開始すると、正しく機能します。
initPortf(portfolio.st, #nom du book
symbols = "EURUSD", #list des instruments
initDate=init.date, #date de départ du book
currency='USD') #devise de référence du book
しかし、楽器ごとに実行するのではなく、「シンボル」に戦略を適用したいと思います。次のように書く必要があることはわかっていますが、残念ながらうまくいきません。
initPortf(portfolio.st, #nom du book
symbols = symbols, #list des instruments
initDate=init.date, #date de départ du book
currency='USD') #devise de référence du book
最後に、これは私が論理を見つけられないところです。ポートフォリオをそのように開始すると、3つではなく2つの楽器で機能します
initPortf(portfolio.st, #nom du book
symbols = c("EURUSD","GBPUSD"), #list des instruments
initDate=init.date, #date de départ du book
currency='USD') #devise de référence du book
私が得るエラーメッセージは
applyStrategy("model", portfolios = portfolio.st, symbols = symbols)
Error in sum(x[beg:(n + beg - 1)]) :
invalid 'type' (character) of argument
もう一度、サポートに感謝します。
ニコラス