我正在尝试使用从雅虎财务中获得的Renko Chart构建,并且想知道是否有任何包可以这样做。我查看了最多的财务软件包,但只能找到烛台图表。
有关Renko图表的更多信息,请使用here
给出的链接答案 0 :(得分:1)
真的很酷的问题!显然,对于R而言,实际上没有任何可用的方法。有人尝试在各种站点上做类似的事情(例如,瀑布图),但都没有达到目的。太...我用data.table和ggplot做了一个周末的小项目。
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 = "")
renko(df, size = 5, style = "classic") +
scale_y_continuous(breaks = seq(0, 150, 10)) +
labs(x = "", y = "")
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)
答案 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)
与plot.xts相比
plot.xts(Ativo, type='candles')
主要有两个变量:大小和阈值。
“大小”是砖的大小。需要运行。
“阈值”是新砖的阈值。默认值为1。
为了确保可靠性,移除了第一块砖。