Skip to main content

TA Charting tool

Project description


By: Carter Carlson

This repository provides technical tools to analyze OHLCV data, along with several TA chart functionalities. These functions are optimized for speed and utilize numpy vectorization over built-in pandas methods when possible.


  • atr(high, low, close, n=2): average true range from candlestick data
  • bollinger(df=None, filename=None, interval=None, n=20, ndev=2): Bollinger bands for the close of an instrument
  • cmf(df, n=2): Chaikin Money Flow of an OHLCV dataset
  • double_smooth(src, n_slow, n_fast): The smoothed value of two EMAs
  • ema(src, n=2): exponential moving average for a list of src across n periods
  • ichimoku(df=None, filename=None, interval=None): Ichimoku Cloud
  • macd(src, slow=25, fast=13): moving average convergence/divergence of src
  • mmo(src, n=2): Murrey Math oscillator of src
  • renko(df=None, filename=None, interval=None): Renko Chart
  • roc(src, n=2): rate of change of src across n periods
  • rolling(src, n=2, fn=None, axis=1): rolling sum, max, min, or mean of src across n periods
  • rsi(src, n=2): relative strength index of src across n periods
  • sdev(src, n=2): standard deviation across n periods
  • sma(src, n=2): simple moving average of src across n periods
  • td_sequential(src, n=2): TD sequential of src across n periods
  • tsi(src, slow=25, fast=13): true strength indicator


  • area_between(line1, line2): find the area between line1 and line2
  • crossover(x1, x2): find all instances of intersections between two lines
  • demo_df: provide BTC's hourly OHLCV data in case no data is provided
  • draw_candlesticks(ax, df): add candlestick visuals to a matplotlib chart
  • fill_values(averages, interval, target_len): Fill missing values with evenly spaced samples.
    • Example: You're using 15-min candlestick data to find the 1-hour moving average and want a value at every 15-min mark, and not every 1-hour mark.
  • group_candles(df, interval=4): combine candles so instead of needing a different dataset for each time interval, you can form time intervals using more precise data.
    • Example: you have 15-min candlestick data but want to test a strategy based on 1-hour candlestick data (interval=4).
  • intersection(a0, a1, b0, b1): find the intersection coordinates between vector A and vector B


  • @args_to_dtype(dtype): Convert all function arguments to a specific data type
    from TAcharts.wrappers import args_to_dtype
    # Example: `src` is converted to a list
    def rsi(src, n=2):
  • @pd_series_to_np_array: Convert function arguments from pd.Series to np.array
    from TAcharts.wrappers import pd_series_to_np_array
    # Example: `high`, `low`, and `close` are all converted into `np.array` data types
    def atr(high, low, close, n=14):

How it works

Create your DataFrame variable

# NOTE: File should contain the columns 'date', 'open', 'high', 'low', and 'close'
import pandas as pd
df = pd.read_csv('../Daily.csv')

Bollinger Bands

from TAcharts.indicators.bollinger import bollinger
from TAcharts.plot import plot

b = Bollinger(df)



from TAcharts.indicators.ichimoku import Ichimoku
from TAcharts.plot import plot

i = Ichimoku(df), 60, 120, 30)




from TAcharts.indicators.renko import Renko
from TAcharts.plot import plot

r = Renko(df)
r.set_brick_size(auto=True, atr_period=2)



Project details

Download files

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

Files for TAcharts, version 0.0.12
Filename, size File type Python version Upload date Hashes
Filename, size TAcharts-0.0.12-py3-none-any.whl (35.1 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size TAcharts-0.0.12.tar.gz (12.6 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page