Code Monkey home page Code Monkey logo

dash-tradingview's Introduction

๐ŸŽ› Dash Tradingview Lightweight Charts Component ๐Ÿ“Š

Source Code | Documentation | Live Demo

Dash Tradingview Lightweight Charts Components is a Dash component library. This component wraps TradingView's Lightweight Charts, the popular financial charting library written in Javascript, and extends it for use in Python Dash webapp.

Releases

Date Tag
23 Feb 2023 v0.1.1

Installation

This package is available in PyPI:

pip install dash_tvlwc

Demo

Interactive demo

An interactive demo hosted and available here. The source code of this live demo can be found at ./demo/app.py.

The demo hosting on pythonanywhere somehow suffers from very slow callbacks. Fixing this soon.

Chart and series style options

  • 1-to-1 chart and series option capability as in original lightweight chart
  • See ./example/options.py Options

Interactivity with Dash callbacks

  • Modify data or styles on any triggers
  • See ./example/interactivity.py Interactivity

Minimal example

The source code of this minimal example can be found at ./demo/minimal_example.py.

  1. Import dependencies
import dash
from dash import html
import dash_tvlwc
  1. Make some random candlestick data and line plot data
candlestick_data = [
    {'close': 97.56, 'high': 101.29, 'low': 95.07, 'open': 100, 'time': '2021-01-01'},
    {'close': 96.06, 'high': 99.06, 'low': 95.17, 'open': 97.56, 'time': '2021-01-02'},
    {'close': 92.06, 'high': 98.39, 'low': 90.72, 'open': 96.06, 'time': '2021-01-03'},
    {'close': 95.74, 'high': 97.87, 'low': 89.75, 'open': 92.06, 'time': '2021-01-04'},
    {'close': 92.44, 'high': 97.5, 'low': 88.56, 'open': 95.74, 'time': '2021-01-05'},
    {'close': 89.31, 'high': 93.1, 'low': 85.20, 'open': 92.44, 'time': '2021-01-06'},
    {'close': 85.10, 'high': 93.08, 'low': 82.23, 'open': 89.31, 'time': '2021-01-07'},
    {'close': 81.87, 'high': 88.34, 'low': 77.97, 'open': 85.10, 'time': '2021-01-08'},
    {'close': 79.55, 'high': 82.44, 'low': 76.08, 'open': 81.87, 'time': '2021-01-09'},
    {'close': 82.74, 'high': 84.01, 'low': 78, 'open': 79.55, 'time': '2021-01-10'}
]

line_data = [
    {'time': '2021-01-01', 'value': 100.35},
    {'time': '2021-01-02', 'value': 97.09},
    {'time': '2021-01-03', 'value': 95.74},
    {'time': '2021-01-04', 'value': 98.72},
    {'time': '2021-01-05', 'value': 100.3},
    {'time': '2021-01-06', 'value': 95.8},
    {'time': '2021-01-07', 'value': 91.22},
    {'time': '2021-01-08', 'value': 94.26},
    {'time': '2021-01-09', 'value': 94.9},
    {'time': '2021-01-10', 'value': 94.85}
]
  1. Initialize Dash app and add the Tvlwc component
app = dash.Dash(__name__)
app.layout = html.Div(children=[
    dash_tvlwc.Tvlwc(
        seriesData=[candlestick_data, line_data],
        seriesTypes=['candlestick', 'line'],
    ),
])

if __name__ == '__main__':
    app.run_server()
  1. Run the app by python minimal_example.py. The app should be running on localhost:8050/. You should see the plot:

Minimal example

References: Chart properties

The Tradingview Lightweight Chart library is highly customizable in style. For the complete list of chart options and series options available, please refer to the official API documentation.

Configurable props

Property Description
chartOptions a dict of options on chart canvas.
seriesData a list series of list of timepoint dicts on series data.
seriesTypes a list of series types, in the same order as seriesData.
seriesOptions a list of series option dict for each series, in the same order as seriesData.
seriesMarkers a list of list of markers dicts for each series, in the same order as seriesData.
seriesPriceLines a list of list of price line dicts for each series, in the same order as seriesData.
width width of outer container of the chart.
height height of outer container of the chart.

Read-only props

Property Description
id identifiable ID for the chart.
crosshair position of last mouse hover on chart (crosshair coordinates).
click position of last mouse click on chart (click coordinates).
fullChartOptions full dict of applied chart options including default options.
fullPriceScaleOptions full dict of applied series options including default options.
timeRangeVisibleRange from-to dates of visible time range.
timeRangeVisibleLogicalRange from-to numbers of visible time range.
timeScaleWidth width of time scale.
timeScaleHeight height of time scale.
fullTimeScaleOptions full dict of applied time scale options including default options.

Contributing

See CONTRIBUTING.md

Development

  1. Install Dash and its dependencies: https://dash.plotly.com/installation
  2. Run demonstration script with python example/usage.py
  3. Visit the demo Dash app at http://localhost:8050 in your web browser

Install dependencies

If you have selected install_dependencies during the prompt, you can skip this part.

  1. Install npm packages

    $ npm install
    
  2. Create a virtual env and activate.

    $ virtualenv venv
    $ . venv/bin/activate
    

    Note: venv\Scripts\activate for windows

  3. Install python packages required to build components.

    $ pip install -r requirements.txt
    
  4. Install the python packages for testing (optional)

    $ pip install -r tests/requirements.txt
    

dash-tradingview's People

Contributors

tysonwu avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.