###Analisis tecnico 1ra parte###
###jesus Zerpa#######

library(quantmod)
library(TTR)
portfolio = c("BTC-USD")

getSymbols(portfolio, src="yahoo", from="2014-01-01")
head(`BTC-USD`,n=3)

chartSeries(`BTC-USD`,
            type="line",
            subset='2020',
            theme=chartTheme('white'))

chartSeries(`BTC-USD`,
            type="bar",
            subset='2020-09',
            theme=chartTheme('white'))

chartSeries(`BTC-USD`,
            type="candlesticks",
            subset='2020-09',
            up.col = 'white',
            down.col = 'black',
            theme=chartTheme('white'))

chartSeries(`BTC-USD`,
            type="candlesticks",
            subset='2020-09',
            up.col = 'white',
            down.col = 'black',
            theme=chartTheme('white'))
addSMA(n=30,on=1,col = "blue")
addSMA(n=200,on=1,col = "red")

chartSeries(`BTC-USD`,
            subset='2017-05::2020-09',
            theme=chartTheme('white'))
addEMA(n=30,on=1,col = "blue")
addEMA(n=200,on=1,col = "red")

myBBands <- function (price,n,sd){
  mavg <- SMA(price,n)
  sdev <- rep(0,n)
  N <- nrow(price)
  for (i in (n+1):N){
    sdev[i]<- sd(price[(i-n+1):i])
  }
  sdev <- sqrt((n-1)/n)*sdev
  up <- mavg + sd*sdev
  dn <- mavg - sd*sdev
  pctB <- (price - dn)/(up - dn)
  output <- cbind(dn, mavg, up, pctB)
  colnames(output) <- c("dn", "mavg", "up", 
        "pctB")
  return(output)
}

p<-na.omit(`BTC-USD`)
bb <-myBBands(Cl(p),n=20,sd=2)
tail(bb,n=5)

chartSeries(`BTC-USD`,
            subset='2020-05::2020-09',
            theme=chartTheme('white'))
addBBands(n=20,sd=2)

mymom <- function (price,n){
  mom <- rep(0,n)
  N <- nrow(price)
  Lprice <- Lag(price,n)
  for (i in (n+1):N){
    mom[i]<-price[i]-Lprice[i]
  }
  mom <- reclass(mom,price)
  return(mom)
}

p<-na.omit(`BTC-USD`)
M <- mymom(Cl(p), n=2)
tail(M,n=5)
chartSeries(`BTC-USD`,
            subset='2020-05::2020-09',
            theme=chartTheme('white'))
addMomentum(n=1)

myROC <- function (price,n){
  roc <- rep(0,n)
  N <- nrow(price)
  Lprice <- Lag(price,n)
  for (i in (n+1):N){
    roc[i]<-(price[i]-Lprice[i])/Lprice[i]
  }

  roc <- reclass(roc,price)
  return(roc)
}

p<-na.omit(`BTC-USD`)
roc <- myROC(Cl(p),n=2)
tail(roc,n=3)

p<-na.omit(`BTC-USD`)
roc <- ROC(Cl(p),type="discrete",n=2)
tail(roc,n=3)

chartSeries(`BTC-USD`,
            subset='2020-05::2020-09',
            theme=chartTheme('white'))
addROC(n=7)

myMACD <- function (price,S,L,K){
  MACD <- EMA(price,S) - EMA(price,L)
  signal <- EMA(MACD,K)
  output <- cbind(MACD,signal)
  colnames(output) <- c("MACD","signal")
  return(output)
}

p<-na.omit(`BTC-USD`)
macd <- myMACD(Cl(p), 12, 26,9)
tail(macd,n=5)

macd <- MACD(Cl(p), nFast=12, nSlow=26,
             nSig=9, percent=FALSE)
tail(macd,n=5)

chartSeries(`BTC-USD`,
            subset='2020-05::2020-09',
            theme=chartTheme('white'))
addMACD(fast=12,slow=26,signal=9,type="EMA")

myRSI <- function (price,n){
  N <- length(price)
  U <- rep(0,N)
  D <- rep(0,N)
  rsi <- rep(NA,N)
  Lprice <- Lag(price,1)
  for (i in 2:N){
    if (price[i]>=Lprice[i]){
      U[i] <- price[i]- Lprice[i]
    } else{
      D[i] <- Lprice[i]- price[i]
    }
    if (i>n){
      AvgUp <- mean(U[(i-n+1):i])
      AvgDn <- mean(D[(i-n+1):i])
      rsi[i] <- AvgUp/(AvgUp+AvgDn)*100 
      }
    }

  rsi <- reclass(rsi, price)
  return(rsi)
}

p<-na.omit(`BTC-USD`)
rsi <- myRSI(Cl(p), n=14)
tail(rsi,n=3)

chartSeries(`BTC-USD`,
            subset='2020-05::2020-09',
            theme=chartTheme('white'))
addRSI(n=14,maType="EMA")