This vignette
is a short introduction to {cryptoQuotes}, for a
more extensive introduction on its usecase and limitations please refer
to the wiki.
NOTE: This
vignette
is limited by geolocation due to various country specific cryptocurrency laws. The introduction, therefore, is limited to what is available in the US.
Throughout this vignette
we will explore the Bitcoin
market data using the Kraken
exchange. All available
tickers
and its notation various across exchangs, so if you
are unfamiliar with the exchange specific notation please use the
available_intervals()
-functions,
# show a sample of
# the available tickers
sample(
x = available_tickers(
source = "kraken",
futures = FALSE
),
size = 5
)
#> [1] "DOTETH" "MATICUSDT" "NYMUSD" "ATOMETH" "PAXGETH"
These available tickers can be passed into the
ticker
-argument of all the get_*
-functions
with the appropriate source
and
futures
-argument which, in this case, is
kraken
and FALSE
.
Cryptocurrency market data in R
Open, High, Low, Close an Volume
We will extract the Bitcoin market data in hourly
intervals, and store it as BTC
,
## extract Bitcoin
## market on the hourly
## chart
BTC <- get_quote(
ticker = "XBTUSDT",
source = "kraken",
futures = FALSE,
interval = "1h"
)
#> open high low close volume
#> 2024-11-07 08:00:00 74784.7 75100.0 74683.8 75099.9 8.023292
#> 2024-11-07 09:00:00 75099.9 75100.0 74827.6 74939.9 18.072722
#> 2024-11-07 10:00:00 74915.8 74985.6 74767.5 74972.5 15.846774
#> 2024-11-07 11:00:00 74991.1 75037.1 74696.9 74739.8 13.238904
#> 2024-11-07 12:00:00 74749.1 75100.0 74749.1 74997.9 7.314464
#> 2024-11-07 13:00:00 75007.2 75007.2 74790.2 74873.9 3.510097
The market data can be extracted in different intervals using the
interval
-argument. To see available intervals, the
available_intervals()
-function can be used,
## get available
## intervals for OHLC
## on Kraken
available_intervals(
source = "kraken",
type = "ohlc",
futures = FALSE
)
#> ℹ Available Intervals at "kraken" (spot):
#> ✔ 1m, 5m, 15m, 30m, 1h, 4h, 1d, 1w, 2w
Sentiment Data
To put the Bitcoin price action in perspective, an interesting
sentiment indicator like the long
to short
ratio can be extracted,
## extract long-short
## ratio on Bitcoin
## using the hourly chart
LS_BTC <- try(
get_lsratio(
ticker = "XBTUSDT",
source = "kraken",
interval = "1h"
)
)
#> Error in base::tryCatch(base::withCallingHandlers({ :
#> ✖ Couldn't find "XBTUSDT" on "kraken".
#> ✔ Run available_tickers(source = 'kraken', futures = TRUE) to see available
#> tickers.
#> ℹ If the error persists please submit a bug report.
This gives an error
. The source of the error is the
ticker-naming convention; as the long-short ratio is specific
to the perpetual futures market, and the current ticker is specific to
the spot-market, the endpoint throws an error.
To circumvent this, we can either use perpetual futures throughout
the script
, or modify the ticker
-argument as
follows,
## extract long-short
## ratio on Bitcoin
## using the hourly chart
LS_BTC <- get_lsratio(
ticker = "PF_XBTUSD",
source = "kraken",
interval = "1h"
)
#> long short ls_ratio
#> 2024-11-07 08:00:00 0.7228 0.2772 2.607504
#> 2024-11-07 09:00:00 0.7235 0.2765 2.616637
#> 2024-11-07 10:00:00 0.7187 0.2813 2.554924
#> 2024-11-07 11:00:00 0.7222 0.2778 2.599712
#> 2024-11-07 12:00:00 0.7148 0.2852 2.506311
#> 2024-11-07 13:00:00 0.7130 0.2870 2.484321
The ticker
specific to the perpetual futures market can
be extracted using the available_tickers
with
futures = TRUE
as follows,
# show a sample of
# the available tickers
sample(
x = available_tickers(
source = "kraken",
futures = TRUE
),
size = 5
)
#> [1] "PF_BALUSD" "PF_RAYUSD" "PF_QTUMUSD" "FF_XBTUSD_241129"
#> [5] "PF_VIDTUSD"
Charting cryptocurrency market data
The Bitcoin market data can be charted using the
chart()
-function, which uses {plotly} as backend,
# candlestick chart with
# volume and Long to Short Ratio
chart(
ticker = BTC,
main = kline(),
sub = list(
volume(),
lsr(ratio = LS_BTC)
),
options = list(
dark = FALSE
)
)
Adding indicators
{cryptoQuotes}
also acts as an API-client to {TTR}, and supports most
of its functions. We can add Moving Average indicators, and Bollinger
Bands to the chart using the indicator
-argument,