Skip to content

Commit

Permalink
adding a few tech indicators to the R script
Browse files Browse the repository at this point in the history
  • Loading branch information
Frederico Melo committed Aug 17, 2015
1 parent b2c4d0f commit deab3fa
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 243 deletions.
193 changes: 0 additions & 193 deletions StockInference/.cache-main

This file was deleted.

1 change: 1 addition & 0 deletions StockInference/.classpath
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<classpath>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="src" path="src/main/scala"/>
<classpathentry kind="src" path="src/main/resources"/>
<classpathentry exported="true" kind="con" path="org.springsource.ide.eclipse.gradle.classpathcontainer"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.scala-ide.sdt.launching.SCALA_CONTAINER"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ object StockInferenceDemo {
valuesAndPreds2.foreach({case (v, f, p) =>
println(s"Features: ${f}, Predicted: ${p}, Actual: ${v}")})

val MSE = valuesAndPreds2.map{case(v, f, p) => math.pow((v - p), 2)}.mean()
println("training Mean Squared Error = " + MSE)
val MSE = valuesAndPreds2.map{case(v, f, p) => math.pow((v - p), 2)}.mean()
println("training Mean Squared Error = " + MSE)


// model.save(sc, "myModelPath")
Expand Down
36 changes: 0 additions & 36 deletions StockInference/src/main/scala/io/pivotal/demo/TechIndicators.scala

This file was deleted.

2 changes: 1 addition & 1 deletion sample
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"symbol":"TSLA", "AverageDailyVolume":3604770, "Change":"+4.34", "DaysLow":239.12, "DaysHigh":246.48, "YearLow":181.40, "YearHigh":291.42, "MarketCapitalization":"30.83B", "LastTradePriceOnly":242.51, "DaysRange":"239.12 - 246.48", "Name":"Tesla Motors Inc.", "Symbol":"TSLA", "Volume":4689182, "StockExchange":"NMS", "entryTimestamp":1193666624312373}
{"symbol":"TSLA","AverageDailyVolume":"3615780","Change":"+10.65","DaysLow":"250.51","DaysHigh":"256.59","YearLow":"181.40","YearHigh":"291.42","MarketCapitalization":"32.27B","LastTradePriceOnly":"253.80","DaysRange":"250.51 - 256.59","Name":"Tesla Motors Inc.","Symbol":"TSLA","Volume":"6289968","StockExchange":"NMS","entryTimestamp":69255636091110}
21 changes: 10 additions & 11 deletions streaming/tech_indicators.R
Original file line number Diff line number Diff line change
Expand Up @@ -33,31 +33,30 @@ while(TRUE) {
dataset[nrow(dataset),] <- c(as.numeric(streamRow$DaysHigh), as.numeric(streamRow$DaysLow), as.numeric(streamRow$LastTradePriceOnly))


# include technical indicators
# include a few technical indicators
ema <- EMA(as.numeric(dataset$Close)) # lag = n-1 (default=9)
ema_diff <- as.numeric(dataset$Close) - ema # lag = above
rsi <- RSI(as.numeric(dataset$Close)) # lag = n (default=14)
# smi <- SMI(HLC(dataset)) # lag = nSlow+nSig (default=34)
# sar <- SAR(HLC(dataset)) # lag = 0

ema_lag <- lag.xts (ema, k=-1)
# ema_lag <- lag.xts (ema, k=-1)

high_diff = as.numeric(dataset$High)-as.numeric(dataset$Close)
low_diff = as.numeric(dataset$Close)-as.numeric(dataset$Low)
low_diff = as.numeric(dataset$Low)-as.numeric(dataset$Close)

inputs <- data.frame(dataset$Close, ema, ema_diff, rsi, high_diff, low_diff)
names(inputs) <- c("close", "ema", "ema_diff", "rsi", "high_diff", "low_diff")

inputs <- inputs[-1:-35,]
historicalSet <- historicalSet[-1:-35,]
dataset <- dataset[-1:-35,]
ema_lag <- ema_lag[-1:-35]
# Skipping the first 15 lines due to lag on indicators
inputs <- inputs[-1:-15,]
historicalSet <- historicalSet[-1:-15,]
dataset <- dataset[-1:-15,]

if (nrow(inputs)>0){

# Update last line, with the real future_ema value
updated_rows <- data.frame(historicalSet$entryTimestamp[nrow(historicalSet)], inputs$ema[nrow(inputs)-1], inputs$ema[nrow(inputs)],inputs$close[nrow(inputs)-1]);
names(updated_rows) <- c("entryTimestamp", "ema", "future_ema", "close")
updated_rows <- data.frame(historicalSet$entryTimestamp[nrow(historicalSet)], inputs$ema[nrow(inputs)-1], inputs$ema[nrow(inputs)],inputs$close[nrow(inputs)-1], inputs$rsi[nrow(inputs)-1], inputs$ema_diff[nrow(inputs)-1], inputs$high_diff[nrow(inputs)-1], inputs$low_diff[nrow(inputs)-1]) ;
names(updated_rows) <- c("entryTimestamp", "ema", "future_ema", "close", "rsi", "ema_diff", "high_diff", "low_diff")


#Add new row to the end of historical dataset for computing technical indicators.
Expand All @@ -67,7 +66,7 @@ while(TRUE) {
updated_rows <- rbind(updated_rows,newrow)

# create the new line, with values coming from the std input and calculated indicators
updated_rows[nrow(updated_rows),] <- data.frame(streamRow$entryTimestamp, inputs$ema[nrow(inputs)], inputs$ema[nrow(inputs)], inputs$close[nrow(inputs)]);
updated_rows[nrow(updated_rows),] <- data.frame(streamRow$entryTimestamp, inputs$ema[nrow(inputs)], inputs$ema[nrow(inputs)], inputs$close[nrow(inputs)], inputs$rsi[nrow(inputs)], inputs$ema_diff[nrow(inputs)], inputs$high_diff[nrow(inputs)], inputs$low_diff[nrow(inputs)] );

updated_rows$ema <- as.character(updated_rows$ema)
updated_rows$future_ema <- as.character(updated_rows$future_ema)
Expand Down

0 comments on commit deab3fa

Please sign in to comment.