[R-SIG-Finance] Custom Indicator Problem
Brian G. Peterson
brian at braverock.com
Sat Feb 25 12:49:30 CET 2017
You're overcomplicating your indicator function.
MACD_W1 <- function(mktdata=quote(mktdata),
nFast = 12,
nSlow = 26,
nSig = 9)
{
y <- MACD(Cl(to.weekly(mktdata)),
nFast = nFast,
nSlow = nSlow,
nSig = nSig,
maType = "EMA")
y <- cbind(xts(order.by=index(mktdata)),y)
y <- na.locf(y)
y
}
On 02/25/2017 03:33 AM, Atakan Okan wrote:
> Just remembered that Outlook sent emails in HTML format, so here is the problem in plain text format in case you couldn't see it before. Still couldn't find a way to make this work.
>
>
> From: Atakan Okan <atakanokan at outlook.com>
> Sent: Wednesday, February 15, 2017 11:54 AM
> To: r-sig-finance at r-project.org
> Subject: Custom Indicator Problem
>
>
> Hi everyone,
>
> I am facing a problem regarding a higher-time-frame custom indicator. I have daily yahoo finance data but would like to use the technical indicator MACD on weekly close data. I have written a custom function as I have seen in a previous post some years ago but couldn't manage to add the weekly indicator output to mktdata. Any help is appreciated, thank you
>
> Reproducible example:
>
>
>
> #Custom Indicator Problem
>
>
> library(quantmod)
> library(quantstrat)
> library(TTR)
>
>
> Sys.setenv(TZ = "UTC")
>
>
> .strategy <- new.env()
> .blotter <- new.env()
>
>
> getSymbols("GARAN.IS")
>
>
>
>
> #Stock
> symbol.name = "GARAN.IS"
> tick.size = 0.01
> currency('TRY')
> stock(symbol.name, currency="TRY", multiplier=1,tick_size= tick.size)
>
>
> initialEquity = 1000
> port.acct.currency <- "TRY"
>
>
> strategy.st <- 'Custom_Prob'
>
> rm.strat(strategy.st)
>
>
> initDate = as.character(as.Date(index(GARAN.IS[1])-1))
> initPortf(strategy.st, symbol.name, initDate=initDate, currency = port.acct.currency)
> initAcct(strategy.st, portfolios=strategy.st, initDate=initDate,
> initEq=initialEquity, currency = port.acct.currency)
> initOrders(portfolio=strategy.st,initDate=initDate)
> strategy(strategy.st,store=TRUE)
> summary(getStrategy(strategy.st))
>
>
> #MACD W1 indicator
> MACD_W1 <- function(mktdata=quote(mktdata),
> nFast = 12,
> nSlow = 26,
> nSig = 9){
> y <- GARAN.IS
> is.xts(y)
> y <- to.weekly(y)
> y <- Cl(y)
> y <- MACD(y,
> nFast = nFast,
> nSlow = nSlow,
> nSig = nSig,
> maType = "EMA")
> y <- cbind(mktdata, y[paste(first(index(mktdata)),
> last(index(mktdata)),
> sep = "/")])
> y <- y[-which(is.na(y[,1])),]
> y <- na.locf(y)
> y <- y[,c((ncol(y)-1),ncol(y))]
> y
> }
>
>
> add.indicator(strategy.st,
> name = "MACD",
> arguments = list(x=Cl(GARAN.IS)),
> label='macd')
>
>
> add.indicator(strategy.st,
> name = "MACD_W1",
> arguments = list(mktdata=quote(mktdata)))
>
>
>
>
> apply.indicators.df <- applyIndicators(strategy.st, mktdata=GARAN.IS) #testing indicator calculations
>
>
>
>
> -Atakan Okan
>
>
>
>
> _______________________________________________
> R-SIG-Finance at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R questions should go.
>
--
Brian G. Peterson
http://braverock.com/brian/
Ph: 773-459-4973
IM: bgpbraverock
More information about the R-SIG-Finance
mailing list