require(quantmod)
## Loading required package: quantmod
## Loading required package: xts
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## 
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## Loading required package: TTR
## Version 0.4-0 included new data defaults. See ?getSymbols.
spy = getSymbols("SPY",from="1900-01-01",auto.assign=F)
##     As of 0.4-0, 'getSymbols' uses env=parent.frame() and
##  auto.assign=TRUE by default.
## 
##  This  behavior  will be  phased out in 0.5-0  when the call  will
##  default to use auto.assign=FALSE. getOption("getSymbols.env") and 
##  getOptions("getSymbols.auto.assign") are now checked for alternate defaults
## 
##  This message is shown once per session and may be disabled by setting 
##  options("getSymbols.warning4.0"=FALSE). See ?getSymbols for more details.
chartSeries(spy)

spy.2000=getSymbols("SPY",from="1999-09-27",to="2000-04-14",auto.assign=F)
spy2000=getSymbols("SPY",from="1900-01-01",to="2000-04-14",auto.assign=F)

      chartSeries(spy.2000);

      addADX(n = 14, maType="EMA", wilder=TRUE);

      addCCI(n = 20, maType="SMA", c=0.015);

      addROC(n = 1, type = c("discrete", "continuous"), col = "red");

      addRSI(n = 14, maType = "EMA", wilder = TRUE);

      addSAR(accel = c(0.02, 0.2), col = "blue");

      addSMI(n=13,slow=25,fast=2,signal=9,ma.type="EMA");

      addWPR(n = 14)

spy.sma = runMean(Cl(spy2000), 200)

mm = merge(Cl(spy2000), spy.sma, all=F)

ind = mm[,1] >= mm[,2]

print(tail(ind,5))
##            SPY.Close
## 2000-04-10      TRUE
## 2000-04-11      TRUE
## 2000-04-12      TRUE
## 2000-04-13      TRUE
## 2000-04-14     FALSE
rets = ROC(Cl(spy2000),type="discrete")

adj.rets = rets/sqrt(runSum(rets*rets,10)/9)

sma = runMean(adj.rets,n=200)

ind = sma >= 0

print(tail(ind,5))
##             [,1]
## 2000-04-10  TRUE
## 2000-04-11  TRUE
## 2000-04-12  TRUE
## 2000-04-13  TRUE
## 2000-04-14 FALSE
stddev = sqrt(runSum(adj.rets*adj.rets,200)/199)

lower.band = -0.05*stddev

ind = sma < lower.band

print(tail(ind,5))
##             [,1]
## 2000-04-10 FALSE
## 2000-04-11 FALSE
## 2000-04-12 FALSE
## 2000-04-13 FALSE
## 2000-04-14 FALSE
spy.2008=getSymbols("SPY",from="2008-02-09",to="2008-09-17",auto.assign=F)
spy2008=getSymbols("SPY",from="1900-01-01-02-09",to="2008-09-17",auto.assign=F)
chartSeries(spy.2008)

addADX(n = 14, maType="EMA", wilder=TRUE)

addCCI(n = 20, maType="SMA", c=0.015)

addROC(n = 1, type = c("discrete", "continuous"), col = "red")

addRSI(n = 14, maType = "EMA", wilder = TRUE)

addSAR(accel = c(0.02, 0.2), col = "blue")

addSMI(n=13,slow=25,fast=2,signal=9,ma.type="EMA")

addWPR(n = 14)

spy.sma = runMean(Cl(spy2008), 200)

mm = merge(Cl(spy2008), spy.sma, all=F)

ind = mm[,1] >= mm[,2]

print(tail(ind,5))
##            SPY.Close
## 2008-09-11     FALSE
## 2008-09-12     FALSE
## 2008-09-15     FALSE
## 2008-09-16     FALSE
## 2008-09-17     FALSE
rets = ROC(Cl(spy2008),type="discrete")

adj.rets = rets/sqrt(runSum(rets*rets,10)/9)

sma = runMean(adj.rets,n=200)

ind = sma >= 0

print(tail(ind,5))
##             [,1]
## 2008-09-11 FALSE
## 2008-09-12 FALSE
## 2008-09-15 FALSE
## 2008-09-16 FALSE
## 2008-09-17 FALSE
stddev = sqrt(runSum(adj.rets*adj.rets,200)/199)

lower.band = -0.05*stddev

ind = sma < lower.band

print(tail(ind,5))
##            [,1]
## 2008-09-11 TRUE
## 2008-09-12 TRUE
## 2008-09-15 TRUE
## 2008-09-16 TRUE
## 2008-09-17 TRUE
spy2014=getSymbols("SPY",from="1900-01-01",to="2014-10-13",auto.assign=F)
spy.2014=getSymbols("SPY",from="2013-12-16",to="2014-10-13",auto.assign=F)
chartSeries(spy.2014)

addADX(n = 14, maType="EMA", wilder=TRUE)

addCCI(n = 20, maType="SMA", c=0.015)

addROC(n = 1, type = c("discrete", "continuous"), col = "red")

addRSI(n = 14, maType = "EMA", wilder = TRUE)

addSAR(accel = c(0.02, 0.2), col = "blue")

addSMI(n=13,slow=25,fast=2,signal=9,ma.type="EMA")

addWPR(n = 14)

spy.sma = runMean(Cl(spy2014), 200)

mm = merge(Cl(spy2014), spy.sma, all=F)

ind = mm[,1] >= mm[,2]

print(tail(ind,5))
##            SPY.Close
## 2014-10-07      TRUE
## 2014-10-08      TRUE
## 2014-10-09      TRUE
## 2014-10-10     FALSE
## 2014-10-13     FALSE
rets = ROC(Cl(spy2014),type="discrete")

adj.rets = rets/sqrt(runSum(rets*rets,10)/9)

sma = runMean(adj.rets,n=200)

ind = sma >= 0

print(tail(ind,5))
##            [,1]
## 2014-10-07 TRUE
## 2014-10-08 TRUE
## 2014-10-09 TRUE
## 2014-10-10 TRUE
## 2014-10-13 TRUE
stddev = sqrt(runSum(adj.rets*adj.rets,200)/199)

lower.band = -0.05*stddev

ind = sma < lower.band

print(tail(ind,5))
##             [,1]
## 2014-10-07 FALSE
## 2014-10-08 FALSE
## 2014-10-09 FALSE
## 2014-10-10 FALSE
## 2014-10-13 FALSE
spy.2015=getSymbols("SPY",from="2014-10-25",auto.assign=F)
spy2015=getSymbols("SPY",from="1900-01-01",auto.assign=F)
chartSeries(spy.2015)

addADX(n = 14, maType="EMA", wilder=TRUE)

addCCI(n = 20, maType="SMA", c=0.015)

addROC(n = 1, type = c("discrete", "continuous"), col = "red")

addRSI(n = 14, maType = "EMA", wilder = TRUE)

addSAR(accel = c(0.02, 0.2), col = "blue")

addSMI(n=13,slow=25,fast=2,signal=9,ma.type="EMA")

addWPR(n = 14)

spy.sma = runMean(Cl(spy2015), 200)

mm = merge(Cl(spy2015), spy.sma, all=F)

ind = mm[,1] >= mm[,2]

print(tail(ind,5))
##            SPY.Close
## 2015-08-17      TRUE
## 2015-08-18      TRUE
## 2015-08-19      TRUE
## 2015-08-20     FALSE
## 2015-08-21     FALSE
rets = ROC(Cl(spy),type="discrete")

adj.rets = rets/sqrt(runSum(rets*rets,10)/9)

sma = runMean(adj.rets,n=200)

ind = sma >= 0

print(tail(ind,5))
##             [,1]
## 2015-08-17  TRUE
## 2015-08-18  TRUE
## 2015-08-19  TRUE
## 2015-08-20 FALSE
## 2015-08-21 FALSE
stddev = sqrt(runSum(adj.rets*adj.rets,200)/199)

lower.band = -0.05*stddev

ind = sma < lower.band

print(tail(ind,5))
##             [,1]
## 2015-08-17 FALSE
## 2015-08-18 FALSE
## 2015-08-19 FALSE
## 2015-08-20 FALSE
## 2015-08-21 FALSE