Skip to main content

Python framework for TradingView's Lightweight Charts JavaScript library.

Project description

lightweight_charts_python

PyPi Release Made with Python License Documentation

lightweight-charts-python aims to provide a simple and pythonic way to access and implement TradingView's Lightweight Charts.

Installation

pip install lightweight_charts

Features

  1. Simple and easy to use.
  2. Blocking or non-blocking GUI.
  3. Streamlined for live data, with methods for updating directly from tick data.
  4. Support for PyQt and wxPython.

1. Display data from a csv:

import pandas as pd
from lightweight_charts import Chart


if __name__ == '__main__':
    
    chart = Chart()
    
    # Columns: | time | open | high | low | close | volume (if volume is enabled) |
    df = pd.read_csv('ohlcv.csv')
    chart.set(df)
    
    chart.show(block=True)

setting_data image


2. Updating bars in real-time:

import pandas as pd
from time import sleep
from lightweight_charts import Chart

if __name__ == '__main__':

    chart = Chart()

    df1 = pd.read_csv('ohlcv.csv')
    df2 = pd.read_csv('next_ohlcv.csv')

    chart.set(df1)

    chart.show()

    last_close = df1.iloc[-1]
    
    for i, series in df2.iterrows():
        chart.update(series)

        if series['close'] > 20 and last_close < 20:
            chart.marker(text='The price crossed $20!')
            
        last_close = series['close']
        sleep(0.1)

live data gif


3. Updating bars from tick data in real-time:

import pandas as pd
from time import sleep
from lightweight_charts import Chart


if __name__ == '__main__':
    
    df1 = pd.read_csv('ohlc.csv')
    
    # Columns: | time | price | volume (if volume is enabled) |
    df2 = pd.read_csv('ticks.csv')
    
    chart = Chart(volume_enabled=False)
    
    chart.set(df1)
    
    chart.show()
    
    for i, tick in df2.iterrows():
        chart.update_from_tick(tick)
            
        sleep(0.3)

tick data gif


4. Line Indicators:

import pandas as pd
from lightweight_charts import Chart


def calculate_sma(data: pd.DataFrame, period: int = 50):
    def avg(d: pd.DataFrame): 
        return d['close'].mean()
    result = []
    for i in range(period - 1, len(data)):
        val = avg(data.iloc[i - period + 1:i])
        result.append({'time': data.iloc[i]['date'], 'value': val})
    return pd.DataFrame(result)


if __name__ == '__main__':
    
    chart = Chart()
    
    df = pd.read_csv('ohlcv.csv')
    chart.set(df)
    
    line = chart.create_line()
    sma_data = calculate_sma(df)
    line.set(sma_data)
    
    chart.show(block=True)

line indicators image


5. Styling:

import pandas as pd
from lightweight_charts import Chart


if __name__ == '__main__':
    
    chart = Chart(debug=True)

    df = pd.read_csv('ohlcv.csv')

    chart.layout(background_color='#090008', text_color='#FFFFFF', font_size=16,
                 font_family='Helvetica')

    chart.candle_style(up_color='#00ff55', down_color='#ed4807',
                       border_up_color='#FFFFFF', border_down_color='#FFFFFF',
                       wick_up_color='#FFFFFF', wick_down_color='#FFFFFF')

    chart.volume_config(up_color='#00ff55', down_color='#ed4807')

    chart.watermark('1D', color='rgba(180, 180, 240, 0.7)')

    chart.crosshair(mode='normal', vert_color='#FFFFFF', vert_style='dotted',
                    horz_color='#FFFFFF', horz_style='dotted')

    chart.legend(visible=True, font_size=14)

    chart.set(df)

    chart.show(block=True)

styling image


6. Callbacks:

import pandas as pd
from lightweight_charts import Chart


def on_click(bar: dict):
    print(f"Time: {bar['time']} | Close: {bar['close']}")


if __name__ == '__main__':
    
    chart = Chart()

    df = pd.read_csv('ohlcv.csv')
    chart.set(df)

    chart.subscribe_click(on_click)

    chart.show(block=True)

callbacks gif


Documentation


This package is an independent creation and has not been endorsed, sponsored, or approved by TradingView. The author of this package does not have any official relationship with TradingView, and the package does not represent the views or opinions of TradingView.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lightweight_charts-1.0.4.tar.gz (55.1 kB view details)

Uploaded Source

Built Distribution

lightweight_charts-1.0.4-py3-none-any.whl (56.5 kB view details)

Uploaded Python 3

File details

Details for the file lightweight_charts-1.0.4.tar.gz.

File metadata

  • Download URL: lightweight_charts-1.0.4.tar.gz
  • Upload date:
  • Size: 55.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.2

File hashes

Hashes for lightweight_charts-1.0.4.tar.gz
Algorithm Hash digest
SHA256 e866ec3b74421abf5fc92ba732c5a5536eff36e67e610a204728a7b6cb30796a
MD5 a33c06a6a3a1381780afed6fd73e0f3b
BLAKE2b-256 36055c8c71e7975322f186fb1075c3e0357aaf3e8a109d57ee5ad4c6f7b08231

See more details on using hashes here.

File details

Details for the file lightweight_charts-1.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for lightweight_charts-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 d165b58907959c84a78adc2e73c79b46961758811ad73a1b979614959a6feaf8
MD5 d15787a414e75d891938b2f1c86c0014
BLAKE2b-256 fb39fb6311aa52957c97b8c5f3254622b93c7863325c161b483587db301bb22c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page