[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