Python Candlesticks Chart
📈 Draw candlesticks charts right into your terminal, using Python!
This is a portage from the great cli-candlestick-chart (developed by Julien-R44, written in Rust). You are looking at the Python 3.10+ version.
Note: not tested on macOS, nor Windows (it will likely fail to render colors).
Table of contents:
Features
- Auto-fit to terminal size
- Practical formatting for big, and tiny, numbers
- Integration with Rich
- Simple, yet customizable, API
- Exact same API as the Rust version, plus some sugar
- Simple installation, no external dependencies
Installation
$ python -m pip install -U candlestick-chart
Demonstration
from candlestick_chart import Candle, Chart
# Add some candles
candles = [
Candle(open=133.520004, close=133.610001, high=126.760002, low=129.410004),
Candle(open=128.889999, close=131.740005, high=128.429993, low=131.009995),
Candle(open=127.720001, close=131.050003, high=126.379997, low=126.599998),
Candle(open=128.360001, close=131.630005, high=127.860001, low=130.919998),
Candle(open=132.429993, close=132.630005, high=130.229996, low=132.050003),
]
# Create and display the chart
# Optional keyword arguments: title, width, height
chart = Chart(candles, title="Optional title")
# Set the chart title
chart.set_name("BTC/USDT")
# Set customs colors
chart.set_bear_color(1, 205, 254)
chart.set_bull_color(255, 107, 153)
chart.set_vol_bull_color(1, 205, 254)
chart.set_vol_bear_color(255, 107, 153)
# Set custom labels (empty string => label not displayed)
chart.set_label("highest", "ATH")
chart.set_label("lowest", "ATL")
chart.set_label("average", "")
chart.set_label("volume", "")
# Volume pane settings
chart.set_volume_pane_height(6)
chart.set_volume_pane_enabled(False)
# And, it is also responsive!
new_width = 200
new_height = 150
chart.update_size(new_width, new_height)
# By the way, did you know that you can add more candles in real-time?
chart.update_candles(candles[:3])
# Or completely replace current candles
chart.update_candles(candles[:3], reset=True)
# Set a custom color at price 52,348.63
chart.set_highlight(fnum(52_348.63), "red")
chart.set_highlight(fnum(52_348.63), (255, 0, 0))
chart.set_highlight(fnum(52_348.63), "91m")
chart.set_highlight(fnum(52_348.63), "91;47m")
chart.draw()
Binary Usage
When installing the library, an executable is made available (candlestick-chart):
candlestick-chart --help
options:
-h, --help show this help message and exit
-m {stdin,csv-file,json-file}, --mode {stdin,csv-file,json-file}
Select the method for retrieving the candles.
-f FILE, --file FILE [MODE:*-file] File to read candles from.
--chart-name CHART_NAME
Sets the chart name.
--bear-color BEAR_COLOR
Sets the descending candles color in hexadecimal.
--bull-color BULL_COLOR
Sets the ascending candles color in hexadecimal.
--version show program's version number and exit
When requesting the JSON or stdin mode, the library expects a JSON with the following format:
[
{
"open": 28994.009766,
"high": 29600.626953,
"low": 28803.585938,
"close": 29374.152344
},
...
]
For all requests, here are supported fields:
"open": float # mandatory
"close": float # mandatory
"high": float # mandatory
"low": float # mandatory
"volume": float
"timestamp": float
Examples
API
- Basic example with CSV parsing: run with
$ python examples/basic_from_csv_file.py - Basic example with JSON parsing: run with
$ python examples/basic_from_json_file.py - Basic example with stdin parsing: run with
$ ./examples/basic_from_stdin.sh - Fetch candles from Binance: run with
$ python examples/fetch_from_binance.py - Integration with Rich: run with
$ python examples/integrate_with_rich.py - Using a custom chart renderer class: run with
$ python examples/custom_renderer_class.py
Binary
Read CSV from file
candlestick-chart \
--mode=csv-file \
--file='./examples/BTC-USD.csv' \
--chart-name='My BTC Chart' \
--bear-color='#b967ff' \
--bull-color='ff6b99'
Read JSON from file
candlestick-chart \
--mode=json-file \
--file='./examples/BTC-chart.json' \
--chart-name='My BTC Chart' \
--bear-color='#b967ff' \
--bull-color='ff6b99'
Read from stdin
echo '[
{
"open": 28994.009766,
"high": 29600.626953,
"low": 28803.585938,
"close": 29374.152344
},
{
"open": 29376.455078,
"high": 33155.117188,
"low": 29091.181641,
"close": 32127.267578
}
]' | candlestick-chart \
--mode=stdin \
--chart-name='My BTC Chart' \
--bear-color='#b967ff' \
--bull-color='ff6b99'
Developers
Setup:
python -m venv venv
. venv/bin/activate
python -m pip install -U pip
Install:
python -m pip install -e '.[test]'
Test:
python -m pytest
Metadata
Release files for candlestick-chart 3.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| candlestick_chart-3.1.0.tar.gz | 68.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| candlestick_chart-3.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 86.1 kB
Release files / candlestick_chart-3.1.0.tar.gz
| Download URL | candlestick_chart-3.1.0.tar.gz |
|---|---|
| Size | 68.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0721146baf2511adc404a735ce1111a297dde5b08e542883a89bfcd053e6284d
|
|
BLAKE2b-256 checksum How to use checksums |
26de73ec825191e4dbca8867cf752fb18103abe7fbdfc4b3730dd77dff492bcf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 2, 2024.
Transparency logRelease files / candlestick_chart-3.1.0-py3-none-any.whl
| Download URL | candlestick_chart-3.1.0-py3-none-any.whl |
|---|---|
| Size | 17.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7c73336155292bd375fffc91410b00b7ff1cee93de7b6459b753151059aa9583
|
|
BLAKE2b-256 checksum How to use checksums |
01c7d215d2f328f7f1a6577368d6ef4aff3731d9fc38438c5d08d0e095f7a099
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/5.1.1 CPython/3.12.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 2, 2024.
Transparency log