library(tradingview)
library(tidyverse)
library(tidyquant)
tq_sma <- function(., select, n = 14, ...) {
tq_mutate(
.,
select = select,
mutate_fun = SMA,
n = n,
col_rename = paste0("sma.", n)
)
}
aapl <- tq_get("AAPL") %>%
tq_sma(n = 14, select = "adjusted") %>%
tq_sma(n = 28, select = "adjusted") %>%
na.omit() %>%
mutate(
direction = if_else(sma.14 > sma.28, "up", "down"),
marker = if_else(
direction != lag(direction),
if_else(direction == "up", "arrowUp", "arrowDown"),
NULL
)
)
aapl
tradingview(aapl, height = 400) %>%
tv_chart(decimals = 2, time = "date") %>%
tv_candles(priceLine = FALSE, markers = tv_markers(shape = "marker"))
tradingview(aapl, height = 400) %>%
tv_chart(decimals = 2, time = "date") %>%
tv_line(
priceLine = FALSE,
value = "adjusted",
markers = tv_markers(shape = "marker")
)
tradingview(aapl, height = 400) %>%
tv_chart(decimals = 2, time = "date") %>%
tv_histogram(
priceLine = FALSE,
color = "rgba(255,0,0,0.2)",
value = "adjusted",
markers = tv_markers(shape = "marker")
)
LS0tCnRpdGxlOiAiVHJhZGluZ1ZpZXcgbWFya2VycyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3Igc2V0dXB9CmxpYnJhcnkodHJhZGluZ3ZpZXcpCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHRpZHlxdWFudCkKCnRxX3NtYSA8LSBmdW5jdGlvbiguLCBzZWxlY3QsIG4gPSAxNCwgLi4uKSB7CiAgdHFfbXV0YXRlKAogICAgLiwKICAgIHNlbGVjdCA9IHNlbGVjdCwKICAgIG11dGF0ZV9mdW4gPSBTTUEsCiAgICBuID0gbiwKICAgIGNvbF9yZW5hbWUgPSBwYXN0ZTAoInNtYS4iLCBuKQogICkKfQoKYWFwbCA8LSB0cV9nZXQoIkFBUEwiKSAlPiUKICB0cV9zbWEobiA9IDE0LCBzZWxlY3QgPSAiYWRqdXN0ZWQiKSAlPiUKICB0cV9zbWEobiA9IDI4LCBzZWxlY3QgPSAiYWRqdXN0ZWQiKSAlPiUKICBuYS5vbWl0KCkgJT4lCiAgbXV0YXRlKAogICAgZGlyZWN0aW9uID0gaWZfZWxzZShzbWEuMTQgPiBzbWEuMjgsICJ1cCIsICJkb3duIiksCiAgICBtYXJrZXIgPSBpZl9lbHNlKAogICAgICBkaXJlY3Rpb24gIT0gbGFnKGRpcmVjdGlvbiksCiAgICAgIGlmX2Vsc2UoZGlyZWN0aW9uID09ICJ1cCIsICJhcnJvd1VwIiwgImFycm93RG93biIpLAogICAgICBOVUxMCiAgICApCiAgKQpgYGAKCmBgYHtyfQphYXBsCmBgYAoKCmBgYHtyfQp0cmFkaW5ndmlldyhhYXBsLCBoZWlnaHQgPSA0MDApICU+JQogIHR2X2NoYXJ0KGRlY2ltYWxzID0gMiwgdGltZSA9ICJkYXRlIikgJT4lCiAgdHZfY2FuZGxlcyhwcmljZUxpbmUgPSBGQUxTRSwgbWFya2VycyA9IHR2X21hcmtlcnMoc2hhcGUgPSAibWFya2VyIikpCmBgYAoKYGBge3J9CnRyYWRpbmd2aWV3KGFhcGwsIGhlaWdodCA9IDQwMCkgJT4lCiAgdHZfY2hhcnQoZGVjaW1hbHMgPSAyLCB0aW1lID0gImRhdGUiKSAlPiUKICB0dl9saW5lKAogICAgcHJpY2VMaW5lID0gRkFMU0UsCiAgICB2YWx1ZSA9ICJhZGp1c3RlZCIsCiAgICBtYXJrZXJzID0gdHZfbWFya2VycyhzaGFwZSA9ICJtYXJrZXIiKQogICkKYGBgCgpgYGB7cn0KdHJhZGluZ3ZpZXcoYWFwbCwgaGVpZ2h0ID0gNDAwKSAlPiUKICB0dl9jaGFydChkZWNpbWFscyA9IDIsIHRpbWUgPSAiZGF0ZSIpICU+JQogIHR2X2hpc3RvZ3JhbSgKICAgIHByaWNlTGluZSA9IEZBTFNFLAogICAgY29sb3IgPSAicmdiYSgyNTUsMCwwLDAuMikiLAogICAgdmFsdWUgPSAiYWRqdXN0ZWQiLAogICAgbWFya2VycyA9IHR2X21hcmtlcnMoc2hhcGUgPSAibWFya2VyIikKICApCmBgYAo=