Skip to contents

Version 1.3.2

CRAN release: 2024-11-07

General

  • bitmart has updated their futures API. The backend have been updated accordingly.

  • Unit-tests have been updated and now all get_quote()-functions are being tested for equality in passed and inferred interval.

Improvements

Read and Write xts-objects

Charting

  • The chart()-function are now exported as .svg-images in 4k resolution via the modebar.
  • The chart()-function are now more interactive and supports drawing lines and rectangles via the modebar. It is also possible to interactively change the title and subtitle by double clicking these (Thank you @andreltr for the suggestion. See Discussion).
  • The chart()-function now has a new option static that is equal to FALSE by default. If FALSE the chart can be edited, annotated and explored interactively.
  • The chart()-function now has a new option palette that is set to “hawaii” by default. See hcl.pals() for accepted values.
  • The chart()-function now has a new option scale that is set to 1 by default. Scales all fonts on the chart.
  • The chart()-function now has a new option width that is set to 0.9 by default. Sets the overall linewidth of the chart. (Thank you @andreltr for the suggestion. See Discussion)
Static set to FALSE (Default Palette)
# static = FALSE
chart(
  ticker  = BTC,
  main    = kline(),
    indicator = line(
    sma(n = 7),
    sma(n = 14),
    sma(n = 21)
  ),
  options = list(
    static = FALSE,
    palette = "hawaii"
  ) 
)
Static set to TRUE (“Set 3” palette)
# static = TRUE
chart(
  ticker  = BTC,
  main    = kline(),
  indicator = line(
    sma(n = 7),
    sma(n = 14),
    sma(n = 21)
  ),
  options = list(
    static  = TRUE,
    palette = "Set 3"
  ) 
)

Supported Exchanges (Issue #14)

{cryptoQuotes} now supports the following exchanges:

  • Crypto.com
  • Huobi
  • MEXC

Breaking Changes

Bugfixes

Charting

  • Fixed a bug in the chart()-function where a warning would be given if called using namespace qualified function calls (Issue #13)
  • Fixed a bug in the chart()-function where a legend wouldn’t show unless a main-chart indicator were included. (Issue #13)

Quotes

  • Removed 1s from Binance spot
  • Removed 3m, 6h and 3d in Bitmart spot

These intervals have been removed as they have either been discontinued, or were non-existent.

Version 1.3.1

CRAN release: 2024-05-31

General

NOTE: With this update the package is no longer considered experimental.

  • Removed deprecated functions getQuote()-, getFGIndex()- and getLSRatio()-functions.

  • Removed decprecated functions availableExchanges()-, availableIntervals()- and availableTickers()-functions.

These functions were planned to be deleted in 1.4.0 - however, we have decided to aim for an JOSS- and rOpenSci-subscription which requires some degree of stability. Hence the deletion of these function at 1.3.0.

We expect 1.4.0 to be released after rOpenSci-submission and acceptance 🙏

Improvements

New features

Usage
chart(
  ticker = BTC,
  main   = kline(),
  indicator = list(
    donchian_channel()
  ),
  sub = list(
    smi()
  )
)

Expanded Support

Usage
tail(
  get_openinterest(
    ticker   = "PF_XBTUSD",
    interval = "1h",
    source   = "kraken"
  )
)
#>                     open_interest
#> 2024-11-02 10:00:00      2394.876
#> 2024-11-02 11:00:00      2389.595
#> 2024-11-02 12:00:00      2396.225
#> 2024-11-02 13:00:00      2403.175
#> 2024-11-02 14:00:00      2418.193
#> 2024-11-02 15:00:00      2398.648

Charting

  • The chart()-function now has proper light-theme available that isn’t the default plotly-values.
  • The charts now displays date ranges as a subtitles.
  • The bollinger_bands()-function now accepts a color-argument. These can be passed as Hexadecimal-colors or as is, "blue" for example.
  • A new main chart function has been introduced. pline() which is a univariate price chart based on either open, high, low or close prices.
Usage
chart(
  ticker = BTC,
  main   = pline(price = "close"),
  indicator = list(
    bollinger_bands(
    color = "steelblue"
  )
  ),
  sub = list(
    volume()
  ),
  options = list(
    dark = FALSE
  )
)

Documentation

  • The documentation has been extensively reworked. This is includes, but not limited to, sample outputs for all get_*-functions.

Backend Changes

  • The chart()-functions no longer depend on rlang.

Note: we are generally moving away from rlang, purrr and tidyverse in general. We are, however, keeping the tidyverse styleguide.

  • Removed dependency on conflicted-package.

Prior to version 1.3.0 the get*-functions were following the syntax of {quantmod} closely, and this goes for the function naming too. With the adoption of the tidyverse style guide, there is no conflicts that needs to be resolved on stable- and experimental-functions.

New developper tools

  • pull()-function
  • var_ly()-function
  • build()-function

Breaking Changes

Bugfixes

  • Fixed a bug where get_fgindex() where labelled as deprecated
  • Fixed a bug in the limitations-article where the desired number of observations werent compatible with the kraken-exchange.
  • Fixed a warning in the get_lsratio()-function with source = "binance"
  • Fixed a bug in the lsr()-indicator which broke the chart()-function when included.
  • Fixed a bug in the get_quote()-function where if to = NULL and from != NULL the returned quote would be filtered according to UTC and not Sys.timezone()
  • Fixed a bug in the chart()-function where the inferred intervals would be incorrect for leap years, and months different from 30 days.

Version 1.3.0

CRAN release: 2024-03-12

Improvements

General function improvements

  • get_lsratio and getLSratio() supports kraken and bybit as source

  • available_-functions are more adaptive to the calling environments

## charting the klines
## with indicators as
## subcharts
available_exchanges(type = 'ohlc')

Now returns all available exhanges that supports Open, High, Low and Close market data. The type-argument can be changed to, for example, lsratio to get all available exchanges that supports Long to Shorts ratios. Similar changes have been made to remaining available_-functions.

Error-handling

All get_*- and available_*-functions are now more robust to API and input errors.

Default Returning

  • quotes and fear and greed index now returns 200 rows instead of 100

Charting

  • The charts now has a dark and light theme. Its passed into the options = list(dark = TRUE) of the chart()-function.
  • The charts are now more color deficiency compliant, and the deficiency parameter in options = list(deficiency = TRUE) now applies to all chart-elements
  • The charts are now constructed without %>% and, should, be more intuitive to navigate in. See example below,
## charting the klines
## with indicators as
## subcharts
chart(
  ticker     = BTC,
  main       = kline(),
  sub        = list(
    volume()
  ),
  indicator = list(
    bollinger_bands(),
    sma(),
    alma()
  ),
  options = list(
    dark       = TRUE,
    deficiency = FALSE
  )
)

Exchange Support

The following exchanges have been added to list of exchanges available,

  • ByBit

New features

Usage
## get funding rate
tail(
  get_fundingrate(
    ticker = "BTCUSDT",
    source = "binance"
  )
)
#>                     funding_rate
#> 2024-10-31 17:00:00 1.730390e+12
#> 2024-11-01 01:00:00 1.730419e+12
#> 2024-11-01 09:00:00 1.730448e+12
#> 2024-11-01 17:00:00 1.730477e+12
#> 2024-11-02 01:00:00 1.730506e+12
#> 2024-11-02 09:00:00 1.730534e+12
Usage
## get funding rate
tail(
  get_openinterest(
    ticker = "BTCUSDT",
    source = "binance"
  )
)
#>                     open_interest
#> 2024-10-28 01:00:00      82206.35
#> 2024-10-29 01:00:00      89115.04
#> 2024-10-30 01:00:00      90242.98
#> 2024-10-31 01:00:00      89315.49
#> 2024-11-01 01:00:00      89544.93
#> 2024-11-02 01:00:00      84087.60

Breaking Changes

Charting

  • All the charting-functions have been reworked without backwards compatibility, or lifecycle::deprecated()-warnings. The charting-functions were, and still is, in an experimental-stage.

API Calls

  • All dates passed to get_*-functions assumed the dates were given in UTC, and were retrieved as UTC. These have now been changed; all functions now uses Sys.timezone() as default upon request and retrieval.

Warning

As {cryptoQuotes} has moved to the tidyverse style guide, the getFoo-functions are now deprecated. These will be permanently deleted, and removed from the {cryptoQuotes}, at version 1.4.0!

Version 1.2.1

CRAN release: 2024-01-08

Minor Updates

  • Added DOGECOIN data. This data is extracted on the 1m chart, around Elon Musks Tweet.
  • Added a usecase in the Vignette about Dogecoin and Elon Musk to showcase the functionality of the library.

Bugfixes

  • Corrected misspelled ticker in Vignette
  • All returned Quotes are now in UTC, again.
  • Fixed an error on the Bitmart API where weekly candles would throw an error.

Version 1.2.0

  • All from and to arguments are now more flexible, and supports passing Sys.Date() and Sys.time() directly into the get-functions.

  • getQuote() now returns up to 100 pips preceding the specified to date, when from = NULL. It returns 100 pips, or up to Sys.Date(), from the specified from date.

The getQuote()-function can now be used as follows;

## Specifying from
## date only;
##
## Returns 10 pips
getQuote(
 ticker   = 'BTCUSDT',
 interval = '1d'
 from     = as.character(Sys.Date() - 10)
 )
## Specifying to
## date only;
##
## Returns 100 pips
getQuote(
 ticker   = 'BTCUSDT',
 interval = '1d'
 to     = as.character(Sys.Date())
 )

Market Sentiment

Four new functions are added,

  • getFGIndex() which returns the daily Fear and Greed Index.
  • addFGIndex() which adds the Fear and Greed Index as a subplot to price charts.
  • getLSRatio() which returns the long-short ratio with varying granularity. Contributor has been credited.
  • addLSRatio() which adds the long-short ratio as a subplot to price charts.

Convinience functions added

Three new convinience functions are added applicable to some situations,

  • removeBound()
  • splitWindow()
  • calibrateWindow()

Version 1.1.0

Frontend

getQuote() now returns up to 100 pips when to and from is NULL

Backend

  • All code has been rewritten so its compatible with {httr2}, the package used {httr} at version 1.0.0.

Future releases

In the next release, three more exchanges will be supported.

Known bugs

The returned quotes are in local timezone, this is an unintentional feature and will be fixed in a bugfix.

Version 1.0.0

CRAN release: 2023-12-13

  • Initial CRAN submission 🚀