library(tseries) library(entropy) # install.packages("devtools", dependencies = T) # library(devtools) # install_github("cran/FinTS") library(FinTS) load("eurusd_m1.rdata") WINDOW_SIZE <- 60*24 #1 day TOTAL_BARS_N <- round(60*24*252/12) #1 month entropyChart <- rep(NA, TOTAL_BARS_N) #entropy adftestChartDF <- rep(NA, TOTAL_BARS_N) #Dickey-Fuller adftestChartLO <- rep(NA, TOTAL_BARS_N) #Lag order adftestChartP <- rep(NA, TOTAL_BARS_N) #p-value archtestChartCS <- rep(NA, TOTAL_BARS_N) #Chi-squared archtestChartDF <- rep(NA, TOTAL_BARS_N) #DF archtestChartP <- rep(NA, TOTAL_BARS_N) #p-value EURUSD_M1 <- tail(EURUSD_M1, TOTAL_BARS_N) for(i in WINDOW_SIZE:TOTAL_BARS_N){ entropyChart[i] <- entropy(EURUSD_M1[(i-WINDOW_SIZE+1):i]) adf <- adf.test(EURUSD_M1[(i-WINDOW_SIZE+1):i]) adftestChartDF[i] <- adf$statistic adftestChartLO[i] <- adf$parameter adftestChartP[i] <- adf$p.value arch <- ArchTest(EURUSD_M1[(i-WINDOW_SIZE+1):i]) archtestChartCS[i] <- arch$statistic archtestChartDF[i] <- arch$parameter archtestChartP[i] <- arch$p.value } Scale01 <- function(x){ xNotNA <- !is.na(x) if(max(x[xNotNA]) == min(x[xNotNA])){ x[xNotNA] <- 0 return(x) } return((x-min(x[xNotNA]))/(max(x[xNotNA])-min(x[xNotNA]))) } entropyChart <- Scale01(entropyChart) adftestChartDF <- Scale01(adftestChartDF) adftestChartLO <- Scale01(adftestChartLO) adftestChartP <- Scale01(adftestChartP) archtestChartCS <- Scale01(archtestChartCS) archtestChartDF <- Scale01(archtestChartDF) archtestChartP <- Scale01(archtestChartP) par(mfrow=c(3,1)) plot(entropyChart, type="l", col = 1, xlab="", ylab="", ylim=c(0,1), yaxt='n', main=c("entropy (black); ArchTest Chi-squared (blue)")) lines(archtestChartCS, col = 4) grid() plot(EURUSD_M1, type = "l", xlab="", ylab="", main = "EURUSD_M1") grid() plot(adftestChartDF, type="l", col = 1, xlab="", ylab="", ylim=c(0,1), yaxt='n', main=c("adf.test Dickey-Fuller (black); adf.test p-value (blue)")) lines(adftestChartP, col = 4) grid() # adftestChartLO, archtestChartDF, archtestChartP - empty