R的Renko图表

时间:2017-05-10 06:49:39

标签: r

我正在尝试使用从雅虎财务中获得的Renko Chart构建,并且想知道是否有任何包可以这样做。我查看了最多的财务软件包,但只能找到烛台图表。

有关Renko图表的更多信息,请使用here

给出的链接

3 个答案:

答案 0 :(得分:1)

真的很酷的问题!显然,对于R而言,实际上没有任何可用的方法。有人尝试在各种站点上做类似的事情(例如,瀑布图),但都没有达到目的。太...我用做了一个周末的小项目。


rrenko

仍然有一些我想优化的错误,不稳定性和视觉效果(并且代码中充满了注释掉的调试说明),但是主要思想应该存在。公开征求意见并提出改进点。

  

注意事项:在某些情况下,数据转换仍然很麻烦,尤其是当大小很小或很大时。这在不久的将来应该可以解决。另外,目前renko()函数期望一个包含两列的数据帧:date(x轴)和close(y轴)。

安装

devtools::install_github("RomanAbashin/rrenko")
library(rrenko)

代码

renko(df, size = 5, style = "modern") + 
    scale_y_continuous(breaks = seq(0, 150, 10)) +
    labs(x = "", y = "")

1

renko(df, size = 5, style = "classic") + 
    scale_y_continuous(breaks = seq(0, 150, 10)) +
    labs(x = "", y = "")

2

数据

set.seed(1702)
df <- data.frame(date = seq.Date(as.Date("2014-05-02"), as.Date("2018-05-04"), by = "week"),
                 close = abs(100 + cumsum(sample(seq(-4.9, 4.9, 0.1), 210, replace = TRUE))))

> head(df)
         date close
1: 2014-05-02 104.0
2: 2014-05-09 108.7
3: 2014-05-16 111.5
4: 2014-05-23 110.3
5: 2014-05-30 108.9
6: 2014-06-06 106.5

答案 1 :(得分:0)

这是一个快速而肮脏的解决方案,它是根据python脚本here改编而成的。

# Get some test data

library(rvest)
url <- read_html("https://coinmarketcap.com/currencies/bitcoin/historical-data/?start=20170602&end=20181126")
df  <- url %>% html_table() %>% as.data.frame()

# Make sure to have your time sequence the right way up

data <- apply(df[nrow(df):1, 3:4], 1, mean)

# Build the renko function 

renko <- function(data, delta){

  pre <- data[1]
  xpos <- NULL
  ypos <- NULL
  xneg <- NULL
  yneg <- NULL

  for(i in 1:length(data)){
    increament <- data[i] - pre
    increamentPerc <- increament / pre
    pre <- data[i]
    if(increamentPerc > delta){
      xpos <- c(xpos, i)
      ypos <- c(ypos, data[i])
    }
    if(increamentPerc < -delta){
      xneg <- c(xneg, i)
      yneg <- c(yneg, data[i])
    }
  }

  signal <- list(xpos = xpos,
                 ypos = unname(ypos),
                 xneg = xneg,
                 yneg = unname(yneg))

  return(signal)

}

# Apply the renko function and plot the outcome

signals <- renko(data = data, delta = 0.05)

plot(1:length(data), data, type = "l")
points(signals$xneg, signals$yneg, col = "red", pch = 19)
points(signals$xpos, signals$ypos, col = "yellowgreen", pch = 19)

注意:这不是renko图表(感谢@Roman)。买卖信号仅显示。请参阅上述参考... enter image description here

答案 2 :(得分:0)

我是R投资开发商,我使用了Roman代码的某些部分来优化Renko代码的某些行。罗曼的ggplot技能很棒。由于罗马的代码,绘图功能才有可能。

如果有人感兴趣:

https://github.com/Kinzel/k_rrenko

它将需要以下软件包:xts,ggplot2和data.table

“ Ativo”必须是xts,并且其中一个名为“ close”的列才能起作用。

编辑:

在TeeKea请求之后,如何使用它很简单:

“ Ativo”是2015年1月1日至2015年6月1日的15分钟EURUSD xts。如果找不到“关闭”列,则将使用最后一个。

> head(Ativo)
                       Open    High     Low   Close
2015-01-01 20:00:00 1.20965 1.21022 1.20959 1.21006
2015-01-01 20:15:00 1.21004 1.21004 1.20979 1.21003
2015-01-01 20:30:00 1.21033 1.21041 1.20982 1.21007
2015-01-01 20:45:00 1.21006 1.21007 1.20978 1.21002
2015-01-01 21:00:00 1.21000 1.21002 1.20983 1.21002
2015-01-02 00:00:00 1.21037 1.21063 1.21024 1.21037

如何使用krenko_plot:

krenko_plot(Ativo, 0.01,withDates = F)

Link to image krenko_plot

与plot.xts相比

plot.xts(Ativo, type='candles')

Link to image plot.xts

主要有两个变量:大小和阈值。

“大小”是砖的大小。需要运行。

“阈值”是新砖的阈值。默认值为1。

为了确保可靠性,移除了第一块砖。