candlestick-chart


Namecandlestick-chart JSON
Version 2.7.0 PyPI version JSON
download
home_pagehttps://github.com/BoboTiG/py-candlestick-chart
SummaryDraw candlesticks charts right into your terminal, using Python!
upload_time2023-04-23 21:06:03
maintainer
docs_urlNone
authorMickaël 'Tiger-222' Schoentgen
requires_python>=3.10
licenseLICENSE
keywords candle candlestick chart cli console crypto stock stock-market options terminal trading
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Python Candlesticks Chart

📈 Draw candlesticks charts right into your terminal, using Python!

![Preview](examples/screenshot.png)

This is a portage from the great [cli-candlestick-chart](https://github.com/Julien-R44/cli-candlestick-chart) (developed by [Julien-R44](https://github.com/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**:
- [Python Candlesticks Chart](#python-candlesticks-chart)
  - [Features](#features)
  - [Intallation](#intallation)
  - [Demonstration](#demonstration)
- [Binary Usage](#binary-usage)
- [Examples](#examples)
  - [API](#api)
  - [Binary](#binary)
    - [Read CSV from file](#read-csv-from-file)
    - [Read JSON from file](#read-json-from-file)
    - [Read from stdin](#read-from-stdin)

## Features

- Auto-fit to terminal size
- Practical formatting for big, and tiny, numbers
- Integration with [Rich](https://github.com/Textualize/rich)
- Simple, yet customizable, API
- Exact same API as the [Rust version](https://github.com/Julien-R44/cli-candlestick-chart), plus some [sugar](#demonstration)
- Simple installation, no external dependencies

## Intallation

As simple as:

```bash
$ python -m pip install -U candlestick-chart
```

## Demonstration

```python
from candlestick_chart import Candle, Chart

# Add some candles
candles = [
    Candle(133.520004, 133.610001, 126.760002, 129.410004),
    Candle(128.889999, 131.740005, 128.429993, 131.009995),
    Candle(127.720001, 131.050003, 126.379997, 126.599998),
    Candle(128.360001, 131.630005, 127.860001, 130.919998),
    Candle(132.429993, 132.630005, 130.229996, 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
# from candlestick_chart.utils import fnum
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`):

```bash
$ 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: 

```json
[
    {
        "open": 28994.009766,
        "high": 29600.626953,
        "low": 28803.585938,
        "close": 29374.152344
    },
    ...
]
```

For all requests, here are supported fields:

```python
"open": float  # mandatory
"close": float  # mandatory
"high": float  # mandatory
"low": float  # mandatory
"volume": float
"timestamp": float
```

# Examples

## API 

- [Basic example with CSV parsing](examples/basic-from-csv-file.py): run with `$ python examples/basic-from-csv-file.py`
- [Basic example with JSON parsing](examples/basic-from-json-file.py): run with `$ python examples/basic-from-json-file.py`
- [Basic example with stdin parsing](examples/basic-from-stdin.sh): run with `$ ./examples/basic-from-stdin.sh`
- [Fetch candles from Binance](examples/fetch-from-binance.py): run with `$ python examples/fetch-from-binance.py`
- [Integration with Rich](examples/integrate-with-rich.py): run with `$ python examples/integrate-with-rich.py`
- [Using a custom chart renderer class](examples/custom-renderer-class.py): run with `$ python examples/custom-renderer-class.py`

## Binary 

### Read CSV from file

```bash
$ 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

```bash
$ candlestick-chart \
    --mode=json-file \
    --file='./examples/BTC-chart.json' \
    --chart-name='My BTC Chart' \
    --bear-color='#b967ff' \
    --bull-color='ff6b99'
```

### Read from stdin

```bash
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'
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/BoboTiG/py-candlestick-chart",
    "name": "candlestick-chart",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "",
    "keywords": "candle,candlestick,chart,cli,console,crypto,stock,stock-market,options,terminal,trading",
    "author": "Micka\u00ebl 'Tiger-222' Schoentgen",
    "author_email": "contact@tiger-222.fr",
    "download_url": "https://files.pythonhosted.org/packages/f1/b5/c629dbc816191997cf7ccc2d17d50ea41d988d447e7457cf003ed220bf60/candlestick-chart-2.7.0.tar.gz",
    "platform": "Linux",
    "description": "# Python Candlesticks Chart\n\n\ud83d\udcc8 Draw candlesticks charts right into your terminal, using Python!\n\n![Preview](examples/screenshot.png)\n\nThis is a portage from the great [cli-candlestick-chart](https://github.com/Julien-R44/cli-candlestick-chart) (developed by [Julien-R44](https://github.com/Julien-R44), written in Rust).\nYou are looking at the Python 3.10+ version.\n\nNote: not tested on macOS, nor Windows (it will likely fail to render colors).\n\n**Table of contents**:\n- [Python Candlesticks Chart](#python-candlesticks-chart)\n  - [Features](#features)\n  - [Intallation](#intallation)\n  - [Demonstration](#demonstration)\n- [Binary Usage](#binary-usage)\n- [Examples](#examples)\n  - [API](#api)\n  - [Binary](#binary)\n    - [Read CSV from file](#read-csv-from-file)\n    - [Read JSON from file](#read-json-from-file)\n    - [Read from stdin](#read-from-stdin)\n\n## Features\n\n- Auto-fit to terminal size\n- Practical formatting for big, and tiny, numbers\n- Integration with [Rich](https://github.com/Textualize/rich)\n- Simple, yet customizable, API\n- Exact same API as the [Rust version](https://github.com/Julien-R44/cli-candlestick-chart), plus some [sugar](#demonstration)\n- Simple installation, no external dependencies\n\n## Intallation\n\nAs simple as:\n\n```bash\n$ python -m pip install -U candlestick-chart\n```\n\n## Demonstration\n\n```python\nfrom candlestick_chart import Candle, Chart\n\n# Add some candles\ncandles = [\n    Candle(133.520004, 133.610001, 126.760002, 129.410004),\n    Candle(128.889999, 131.740005, 128.429993, 131.009995),\n    Candle(127.720001, 131.050003, 126.379997, 126.599998),\n    Candle(128.360001, 131.630005, 127.860001, 130.919998),\n    Candle(132.429993, 132.630005, 130.229996, 132.050003),\n]\n\n# Create and display the chart\n# Optional keyword arguments: title, width, height\nchart = Chart(candles, title=\"Optional title\")\n\n# Set the chart title\nchart.set_name(\"BTC/USDT\")\n\n# Set customs colors\nchart.set_bear_color(1, 205, 254)\nchart.set_bull_color(255, 107, 153)\nchart.set_vol_bull_color(1, 205, 254)\nchart.set_vol_bear_color(255, 107, 153)\n\n# Set custom labels (empty string => label not displayed)\nchart.set_label(\"highest\", \"ATH\")\nchart.set_label(\"lowest\", \"ATL\")\nchart.set_label(\"average\", \"\")\nchart.set_label(\"volume\", \"\")\n\n# Volume pane settings\nchart.set_volume_pane_height(6)\nchart.set_volume_pane_enabled(False)\n\n# And, it is also responsive!\nnew_width = 200\nnew_height = 150\nchart.update_size(new_width, new_height)\n\n# By the way, did you know that you can add more candles in real-time?\nchart.update_candles(candles[:3])\n# Or completely replace current candles\nchart.update_candles(candles[:3], reset=True)\n\n# Set a custom color at price 52,348.63\n# from candlestick_chart.utils import fnum\nchart.set_highlight(fnum(52,348.63), \"red\")\nchart.set_highlight(fnum(52,348.63), (255, 0, 0))\nchart.set_highlight(fnum(52,348.63), \"91m\")\nchart.set_highlight(fnum(52,348.63), \"91;47m\")\n\nchart.draw()\n```\n\n# Binary Usage\n\nWhen installing the library, an executable is made available (`candlestick-chart`):\n\n```bash\n$ candlestick-chart --help             \n\noptions:\n  -h, --help            show this help message and exit\n  -m {stdin,csv-file,json-file}, --mode {stdin,csv-file,json-file}\n                        Select the method for retrieving the candles.\n  -f FILE, --file FILE  [MODE:*-file] File to read candles from.\n  --chart-name CHART_NAME\n                        Sets the chart name.\n  --bear-color BEAR_COLOR\n                        Sets the descending candles color in hexadecimal.\n  --bull-color BULL_COLOR\n                        Sets the ascending candles color in hexadecimal.\n  --version             show program's version number and exit\n```\n\nWhen requesting the JSON or stdin mode, the library expects a JSON with the following format: \n\n```json\n[\n    {\n        \"open\": 28994.009766,\n        \"high\": 29600.626953,\n        \"low\": 28803.585938,\n        \"close\": 29374.152344\n    },\n    ...\n]\n```\n\nFor all requests, here are supported fields:\n\n```python\n\"open\": float  # mandatory\n\"close\": float  # mandatory\n\"high\": float  # mandatory\n\"low\": float  # mandatory\n\"volume\": float\n\"timestamp\": float\n```\n\n# Examples\n\n## API \n\n- [Basic example with CSV parsing](examples/basic-from-csv-file.py): run with `$ python examples/basic-from-csv-file.py`\n- [Basic example with JSON parsing](examples/basic-from-json-file.py): run with `$ python examples/basic-from-json-file.py`\n- [Basic example with stdin parsing](examples/basic-from-stdin.sh): run with `$ ./examples/basic-from-stdin.sh`\n- [Fetch candles from Binance](examples/fetch-from-binance.py): run with `$ python examples/fetch-from-binance.py`\n- [Integration with Rich](examples/integrate-with-rich.py): run with `$ python examples/integrate-with-rich.py`\n- [Using a custom chart renderer class](examples/custom-renderer-class.py): run with `$ python examples/custom-renderer-class.py`\n\n## Binary \n\n### Read CSV from file\n\n```bash\n$ candlestick-chart \\\n    --mode=csv-file \\\n    --file='./examples/BTC-USD.csv' \\\n    --chart-name='My BTC Chart' \\\n    --bear-color='#b967ff' \\\n    --bull-color='ff6b99'\n```\n### Read JSON from file\n\n```bash\n$ candlestick-chart \\\n    --mode=json-file \\\n    --file='./examples/BTC-chart.json' \\\n    --chart-name='My BTC Chart' \\\n    --bear-color='#b967ff' \\\n    --bull-color='ff6b99'\n```\n\n### Read from stdin\n\n```bash\necho '[\n  {\n    \"open\": 28994.009766,\n    \"high\": 29600.626953,\n    \"low\": 28803.585938,\n    \"close\": 29374.152344\n  },\n  {\n    \"open\": 29376.455078,\n    \"high\": 33155.117188,\n    \"low\": 29091.181641,\n    \"close\": 32127.267578\n  }\n]' | candlestick-chart \\\n    --mode=stdin \\\n    --chart-name='My BTC Chart' \\\n    --bear-color='#b967ff' \\\n    --bull-color='ff6b99'\n```\n",
    "bugtrack_url": null,
    "license": "LICENSE",
    "summary": "Draw candlesticks charts right into your terminal, using Python!",
    "version": "2.7.0",
    "split_keywords": [
        "candle",
        "candlestick",
        "chart",
        "cli",
        "console",
        "crypto",
        "stock",
        "stock-market",
        "options",
        "terminal",
        "trading"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1d7b5415cbe4599ad8a14d3c733487e133024747f2e6ee2f3f1701c08d7c351e",
                "md5": "91c41d956cb8c2deed331d3b958d35a0",
                "sha256": "295c45dd0c3b890e2ed182aa00b9e26eed9f3db173be98d36ad18793073e5d14"
            },
            "downloads": -1,
            "filename": "candlestick_chart-2.7.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "91c41d956cb8c2deed331d3b958d35a0",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 16812,
            "upload_time": "2023-04-23T21:06:00",
            "upload_time_iso_8601": "2023-04-23T21:06:00.695112Z",
            "url": "https://files.pythonhosted.org/packages/1d/7b/5415cbe4599ad8a14d3c733487e133024747f2e6ee2f3f1701c08d7c351e/candlestick_chart-2.7.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f1b5c629dbc816191997cf7ccc2d17d50ea41d988d447e7457cf003ed220bf60",
                "md5": "8bc8fa93e5ac46bb887ff6576d8db8c4",
                "sha256": "6bb09985ef5f507be1eeceba669b9ed29c4a8be5f35c45d2ff7002bd624a00be"
            },
            "downloads": -1,
            "filename": "candlestick-chart-2.7.0.tar.gz",
            "has_sig": false,
            "md5_digest": "8bc8fa93e5ac46bb887ff6576d8db8c4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 15217,
            "upload_time": "2023-04-23T21:06:03",
            "upload_time_iso_8601": "2023-04-23T21:06:03.091384Z",
            "url": "https://files.pythonhosted.org/packages/f1/b5/c629dbc816191997cf7ccc2d17d50ea41d988d447e7457cf003ed220bf60/candlestick-chart-2.7.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-04-23 21:06:03",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "BoboTiG",
    "github_project": "py-candlestick-chart",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "candlestick-chart"
}
        
Elapsed time: 0.06045s