library(cryptoQuotes)
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] "PERPUSD" "ZEXEUR" "SOLAUD" "C98EUR" "GHSTUSD"
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
.
We will extract the Bitcoin market data in hourly
intervals, and store it as BTC
,
## extract Bitcoin
## market on the hourly
## chart
get_quote(
BTC <-ticker = "XBTUSDT",
source = "kraken",
futures = FALSE,
interval = "1h"
)
#> open high low close volume
#> 2024-11-07 08:00:00 74764.1 75044.0 74675.1 74784.6 18.7599878
#> 2024-11-07 09:00:00 74784.7 75100.0 74683.8 75099.9 8.0232923
#> 2024-11-07 10:00:00 75099.9 75100.0 74827.6 74939.9 18.0727223
#> 2024-11-07 11:00:00 74915.8 74985.6 74767.5 74972.5 15.8467740
#> 2024-11-07 12:00:00 74991.1 75037.1 74696.9 74739.8 13.2389040
#> 2024-11-07 13:00:00 74749.1 74894.6 74749.1 74894.5 0.2593407
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
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
try(
LS_BTC <-get_lsratio(
ticker = "XBTUSDT",
source = "kraken",
interval = "1h"
)
)#> Error in tools::buildVignettes(dir = ".", tangle = TRUE) :
#> ✖ 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
get_lsratio(
LS_BTC <-ticker = "PF_XBTUSD",
source = "kraken",
interval = "1h"
)
#> long short ls_ratio
#> 2024-11-07 08:00:00 0.7219 0.2781 2.595829
#> 2024-11-07 09:00:00 0.7228 0.2772 2.607504
#> 2024-11-07 10:00:00 0.7235 0.2765 2.616637
#> 2024-11-07 11:00:00 0.7187 0.2813 2.554924
#> 2024-11-07 12:00:00 0.7222 0.2778 2.599712
#> 2024-11-07 13:00:00 0.7230 0.2770 2.610108
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_SEIUSD" "PF_GMXUSD" "PF_BADGERUSD" "PF_ZEUSUSD" "PF_ASTRUSD"
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
) )
{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,
# candlestick chart with
# volume and Long to Short Ratio
chart(
ticker = BTC,
main = kline(),
sub = list(
volume(),
lsr(ratio = LS_BTC)
),indicator = list(
sma(n = 7),
sma(n = 14),
sma(n = 21),
bollinger_bands(
color = "steelblue"
)
),options = list(
dark = FALSE
) )