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