R 找不到对象mktdata

R 找不到对象mktdata,r,quantmod,algorithmic-trading,quantstrat,R,Quantmod,Algorithmic Trading,Quantstrat,我相信这是我的指标的格式问题。有人能告诉我我做错了什么吗 #....omitted the portfolio initialization above #returns change from past day, or NA if one of the values is invalid changeDaily<-function(x,y){if(is.na(x+y)==T){return(NA)};ifelse(x-y>0,"UP","DOWN")} #creates colu

我相信这是我的指标的格式问题。有人能告诉我我做错了什么吗

#....omitted the portfolio initialization above
#returns change from past day, or NA if one of the values is invalid
changeDaily<-function(x,y){if(is.na(x+y)==T){return(NA)};ifelse(x-y>0,"UP","DOWN")}

#creates column called lagPredict which uses the function changeDaily
add.indicator(strat, name = "changeDaily",arguments = list(HLC = quote(mktdata),Cl(mktdata),Lag(Cl(mktdata))), label='lagPredict')
回溯:

traceback()
3: has.Cl(x)
2: Cl(mktdata)
1: add.indicator(strat, name = "changeDaily", arguments = list(HLC = quote(mktdata), 
       Cl(mktdata), Lag(Cl(mktdata))), label = "lagPredict")
完整代码:

source("forex.functions.R")
startDate <- '2010-01-01' # start of data
endDate <- '2015-05-01' # end of data
symbols<-c("USD/EUR")
portfolio<-acct<-strat<-"simpleLookAhead"

initSetup(symbols,portfolio,acct,strat)
dump<-lapply(symbols,function(x)forex.weeklyOHLC(x))
symbols<-gsub("/","",symbols)
#############################################################
#returns change from past day, or NA if one of the values is invalid
changeDaily<-function(x,y){if(is.na(x+y)==T){return(NA)};ifelse(x-y>0,"UP","DOWN")}

#creates column called lagPredict which uses the function changeDaily to return UP or DOWN in reference to yesterdays price
add.indicator(strat, name = "changeDaily",arguments = list(HLC = quote(mktdata),Cl(mktdata),Lag(Cl(mktdata))), label='lagPredict')
source(“forex.functions.R”)

startDate您需要在调用
add.indicator
中引用
arguments
列表中的所有对象,以防止对它们求值。您还需要指定要传递给
changeDaily
函数的正确参数。您传递了
HLC
,但是
changeDaily
没有
HLC
参数

您的
add.indicator
调用应该如下所示:

add.indicator(strat, name = "changeDaily",
  arguments = list(x = quote(Cl(mktdata)), y = quote(Lag(Cl(mktdata)))),
  label = 'lagPredict')

如果您不能提供一个可复制的示例,请至少在您的问题中编辑
traceback()
输出。我已经添加了回溯,我的代码,如果代码混乱,我很抱歉,当我将数据传递给自定义函数(如上所述)时,我正试图编写用于组合设置和数据格式化的函数函数是在一天内接受一天值(关闭和滞后(关闭)),还是一次接受所有值?@Rilcon42:您的指标代码应该矢量化。它应该为输入数据中的每个观察返回一个观察值。
library(PerformanceAnalytics)
library(quantmod)
library(lattice)
library(IKTrading)
library(quantstrat)
Sys.setenv(TZ="EST") # set time zone
if (!exists('.blotter')) .blotter <- new.env()
if (!exists('.strategy')) .strategy <- new.env()

forex.weeklyOHLC<-function(ss){
    ss<-getSymbols(ss,src="oanda",from=startDate,to=endDate)
    x<-get(ss)
    #x<-adjustOHLC(x,symbol.name=symbol) #calls get Splits which calls getSymbols which fails bc src != oanda
    x<-to.weekly(x,indexAt='lastof',drop.time=TRUE)
    indexFormat(x)<-'%Y-%m-%d'
    colnames(x)<-gsub("x",ss,colnames(x)) 
    assign(ss,x)    
}

initSetup<-function(symbols,portfolio, acct, strat){
    initDate <- '2009-12-31'
    initEq <- 1e6
    currency("USD")
    stock(symbols, currency="USD", multiplier=1)
    rm.strat(strat) # remove portfolio, account, orderbook if re-run
    initPortf(name=portfolio, symbols, initDate=Sys.Date())
    initAcct(name=acct, portfolios=portfolio,initDate=Sys.Date(), initEq=initEq)
    initOrders(portfolio=portfolio, initDate=Sys.Date())
    strategy(strat, store=TRUE)
}
add.indicator(strat, name = "changeDaily",
  arguments = list(x = quote(Cl(mktdata)), y = quote(Lag(Cl(mktdata)))),
  label = 'lagPredict')