crypto-candlesticks-rust 📈

Ubuntu test Windows test Docs


The goal behind this project is to facilitate downloading cryptocurrency candlestick data fast & simple. Currently only the Bitfinex exchange is supported with more to come in future releases.

I created this project to port my python package crypto-candlesticks as an exercise to learn Rust.

Once the data is downloaded, it will be converted and stored in a .csv and .sqlite3 for convenient analysis. The data will include the Open, High, Low, Close of the candles and the volume during the interval and its timestamp.

gif-animation

Installation

To install crypto-candlesticks-rust, run this command in your terminal:

bash cargo install crypto-candlesticks-rust

Or you can get one of the pre-compiled binaries

Not for windows users: It is possible that Windows Defender will complain about the executable. The binary is packed with cargo strip and UPX after compilation.

Usage

crypto-candlesticks-rust can be used the following way:

```bash $ crypto-candlesticks-rust --help

USAGE:
crypto-candlesticks-rust --symbol <BTC> --base_currency <USDT> --interval <1m, 5, 15m, 30m, 1h, 3h, 6h, 12h, 1D, 7D, 14D, 1M> --start_date <YYYY-MM-DD> --end_date <YYYY-MM-DD>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -s, --symbol <BTC>
            Cryptocurrency symbol to download (ie. BTC, ETH, LTC) [default: BTC]

    -b, --base_currency <USDT>
            Cryptocurrency base trading pair [default: USD]

    -i, --interval <1m, 5, 15m, 30m, 1h, 3h, 6h, 12h, 1D, 7D, 14D, 1M>
            Interval that will be used to download the data [default: 1D]

    -d, --start_date <YYYY-MM-DD>
            Date to start downloading the data (ie. YYYY-MM-DD) [default: 2020-11-01]

    -e, --end_date <YYYY-MM-DD>
            Date up to the data will be downloaded (ie. YYYY-MM-DD) [default: 2021-01-01]

```

Example output for CSV ✅

| Open | Close | High | Low | Volume | Ticker | Date | Time | | -------- | --------- | ------ | --------- | --------- | ------- | ---------- | -------- | | 7203 | 7201 | 7203.7 | 7200.1 | 9.404174 | BTC/USD | 12/31/2019 | 16:00:00 | | 7201 | 7223.6 | 7223.6 | 7201 | 7.9037398 | BTC/USD | 12/31/2019 | 16:01:00 | | 7224.4 | 7225 | 7225.5 | 7224.4 | 0.4799298 | BTC/USD | 12/31/2019 | 16:02:00 | | 7224.981 | 7225.9 | 7225.9 | 7224.981 | 0.9294573 | BTC/USD | 12/31/2019 | 16:03:00 | | 7225.862 | 7225.7295 | 7225.9 | 7225.7295 | 0.2913202 | BTC/USD | 12/31/2019 | 16:04:00 | | 7225.7 | 7225.8673 | 7225.9 | 7225.2973 | 1.0319704 | BTC/USD | 12/31/2019 | 16:05:00 |

Example output for SQL (the timestamp is shown in milliseconds) ✅

| ID | Timestamp | Open | Close | High | Low | Volume | Ticker | Interval | | --- | --------------- | ------------- | ------------- | ------------- | ------------- | ---------- | ------ | -------- | | 1 | 1577868000000.0 | 7205.7 | 7205.8 | 7205.8 | 7205.7 | 0.07137942 | BTCUSD | 1m | | 2 | 1577867940000.0 | 7205.70155305 | 7205.8 | 7205.8 | 7205.70155305 | 0.035 | BTCUSD | 1m | | 3 | 1577867880000.0 | 7205.7 | 7205.70155305 | 7205.70155305 | 7205.7 | 0.025 | BTCUSD | 1m | | 4 | 1577867820000.0 | 7205.75299748 | 7205.75299748 | 7205.75299748 | 7205.7 | 0.075 | BTCUSD | 1m | | 5 | 1577867760000.0 | 7205.75299748 | 7205.2 | 7206.3 | 7205.2 | 0.005 | BTCUSD | 1m | | 6 | 1577867700000.0 | 7205.2 | 7205.2 | 7205.2 | 7205.2 | 4.5802 | BTCUSD | 1m |

Contributing

Feel free to open an issue or pull request.

Buy me a coffee

ETH: 0x06Acb31587a96808158BdEd07e53668d8ce94cFE