The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
Trading indicators comes in various forms; from the alignment of the
moon relative to the sun, to sophisticated trading rules based on neural
networks which incorporates classified features; It is not possible to
cover them all in an R
package.
In this vignette
an introduction to the construction of
charts and chart indicators are given, and is recommended for those who
would want to chart indicators not otherwise found in {cryptoQuotes}. The
vignette
uses the built-in BTC
-object.
Note: Feel free to make a
PR
with your indicators that you wish to share with the rest of the community.
As the charts in {cryptoQuotes} uses
{plotly} as backend, the
chart
-objects complies with it’s syntax.
We start by creating a simple chart
-object with
volume
as it’s only indicator,
# 1) create a simple chart
# object
#
# NOTE: The chart is wrapped in
# plotly::layout() to avoid
# duplicating xaxis when the
# custom indicators are added
chart_object <- plotly::layout(
chart(
ticker = BTC,
main = kline(),
sub = list(
volume()
),
options = list(
dark = FALSE
)
),
xaxis = list(
showticklabels = FALSE
)
)
Assume a trading strategy that follows a sin()
-curve
throughout the period of interest. The starting point is generating the
indicator,
# 1) generate sin-indicator
sin_indicator <- data.frame(
index = zoo::index(BTC),
sin_indicator = sin(seq(0,8*pi,length.out=nrow(BTC)))
)
The sin_indicator
in it’s basic form can be charted as
follows,
# 1) create a plotly-object
# with the sin-indicator
sin_indicator <- plotly::layout(
margin= list(l = 5, r = 5, b = 5),
p = plotly::plot_ly(
data = sin_indicator,
y = ~sin_indicator,
x = ~index,
type = "scatter",
mode = "lines",
name = "sin"
),
yaxis = list(
title = NA
),
xaxis = list(
title = NA
)
)
# 2) display the
# indicator
sin_indicator
The sin_indicator
can be added to the
chart_object
using plotly::subplot
which also
handles the theming,
Assume a trading strategy that goes long (short) every time the price is below (above) the linear regression line. This indicator can be defined as follows,
# 1) linear regression
# line
lm_indicator <- data.frame(
y = fitted(
lm(
close ~ time,
data = data.frame(
time = 1:nrow(BTC),
close = BTC$close
)
)
),
index = zoo::index(BTC)
)
The lm_indicator
in it’s basic form can be charted as
follows,
# 1) display the linear
# regression line on
# an empty chart
plotly::add_lines(
p = plotly::plotly_empty(),
data = lm_indicator,
y = ~y,
x = ~index,
inherit = FALSE,
xaxis = "x1",
yaxis = "y2",
name = "regression"
)
The lm_indicator
can be added to the
chart_object
using plotly::add_lines
which
also handles the theming,
# 1) add the regression
# line to the chart_object
plotly::layout(
margin = list(l = 5, r = 5, b = 5, t = 65),
plotly::add_lines(
p = chart_object,
data = lm_indicator,
y = ~y,
x = ~index,
inherit = FALSE,
xaxis = "x1",
yaxis = "y2",
name = "regression"
),
yaxis = list(
title = NA
),
xaxis = list(
title = NA
)
)
Creating custom indicators for the chart()
-functions
follows standard {plotly}
syntax. Two examples of how these are charted in {cryptoQuotes} have
been covered.
Note: A full pipeline of charting indicators, custom and built-in, will be released sometime in the future.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.