ta-lib-python Documentation

Python wrapper for TA-Lib (

RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy ta-lib-python on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name ta-lib-python --restart always ta-lib/ta-lib-python:latest

File: README.md

TA-Lib 📈





This is a Python wrapper for TA-LIB based on Cython
instead of SWIG. From the homepage:

TA-Lib is widely used by trading software developers requiring to perform
technical analysis of financial market data.

  • Includes 150+ indicators such as ADX, MACD, RSI, Stochastic, Bollinger
    Bands, etc.
  • Candlestick pattern recognition
  • Open-source API for C/C++, Java, Perl, Python and 100% Managed .NET

The original Python bindings included with TA-Lib use
SWIG which unfortunately are difficult to install and
aren't as efficient as they could be. Therefore this project uses
Cython and Numpy to efficiently
and cleanly bind to TA-Lib - producing results 2-4 times faster than the
SWIG interface.

In addition, this project also supports the use of the
Polars and Pandas
libraries.

Versions 🗂️

The upstream TA-Lib C library released version 0.6.1 and changed the library
name to -lta-lib from -lta_lib. After trying to support both via
autodetect and having some issues, we have decided to currently support three
feature branches:

  • ta-lib-python 0.4.x (supports ta-lib 0.4.x and numpy 1)
  • ta-lib-python 0.5.x (supports ta-lib 0.4.x and numpy 2)
  • ta-lib-python 0.6.x (supports ta-lib 0.6.x and numpy 2)

Installation 💾

You can install from PyPI:

shell
python -m pip install TA-Lib

Or checkout the sources and run setup.py yourself:

shell
python setup.py install

It also appears possible to install via Conda Forge:

shell
conda install -c conda-forge ta-lib

Dependencies 🧩

To use TA-Lib for python, you need to have the TA-Lib
already installed. You should probably follow their installation
directions
for your platform, but some
suggestions are included below for reference.

Some Conda Forge users have reported success installing the underlying TA-Lib C
library using the libta-lib package:

$ conda install -c conda-forge libta-lib

Mac OS X

You can simply install using Homebrew:

shell
brew install ta-lib

If you are using Apple Silicon, such as the M1 processors, and building mixed
architecture Homebrew projects, you might want to make sure it's being built
for your architecture:

shell
arch -arm64 brew install ta-lib

And perhaps you can set these before installing with pip:

shell
export TA_INCLUDE_PATH="$(brew --prefix ta-lib)/include"
export TA_LIBRARY_PATH="$(brew --prefix ta-lib)/lib"

You might also find this helpful, particularly if you have tried several
different installations without success:

shell
your-arm64-python -m pip install --no-cache-dir ta-lib

Windows

For 64-bit Windows, the easiest way is to get the executable installer:

  1. Download ta-lib-0.7.1-windows-x86_64.msi.
  2. Run the Installer or run msiexec from the command-line.

Alternatively, if you prefer to get the libraries without installing, or
would like to use the 32-bit version:

Linux

Download
ta-lib-0.7.1-src.tar.gz
and:

shell
tar -xzf ta-lib-0.7.1-src.tar.gz
cd ta-lib-0.7.1/
./configure --prefix=/usr
make
sudo make install

If you build TA-Lib using make -jX it will fail but that's OK!
Simply rerun make -jX followed by [sudo] make install.

Note: if your directory path includes spaces, the installation will probably
fail with No such file or directory errors.

Wheels ⚙️

For convenience, and starting with version 0.6.5, we now build binary wheels
for different operating systems, architectures, and Python versions using
GitHub Actions which include the underlying TA-Lib C library and are easy to
install.

Supported platforms:

  • Linux
    • x86_64
    • arm64
  • macOS
    • x86_64
    • arm64
  • Windows
    • x86_64
    • x86
    • arm64

Supported Python versions:

  • 3.9
  • 3.10
  • 3.11
  • 3.12
  • 3.13
  • 3.14

In the event that your operating system, architecture, or Python version are
not available as a binary wheel, it is fairly easy to install from source
using the instructions above.

Troubleshooting 🛠️

If you get a warning that looks like this:

shell
setup.py:79: UserWarning: Cannot find ta-lib library, installation may fail.
warnings.warn('Cannot find ta-lib library, installation may fail.')

This typically means setup.py can't find the underlying TA-Lib
library, a dependency which needs to be installed.


If you installed the underlying TA-Lib library with a custom prefix
(e.g., with ./configure --prefix=$PREFIX), then when you go to install
this python wrapper you can specify additional search paths to find the
library and include files for the underlying TA-Lib library using the
TA_LIBRARY_PATH and TA_INCLUDE_PATH environment variables:

shell
export TA_LIBRARY_PATH=$PREFIX/lib
export TA_INCLUDE_PATH=$PREFIX/include
python setup.py install # or pip install ta-lib

Sometimes installation will produce build errors like this:

shell
talib/_ta_lib.c:601:10: fatal error: ta-lib/ta_defs.h: No such file or directory
  601 | #include "ta-lib/ta_defs.h"
      |          ^~~~~~~~~~~~~~~~~~
compilation terminated.

or:

shell
common.obj : error LNK2001: unresolved external symbol TA_SetUnstablePeriod
common.obj : error LNK2001: unresolved external symbol TA_Shutdown
common.obj : error LNK2001: unresolved external symbol TA_Initialize
common.obj : error LNK2001: unresolved external symbol TA_GetUnstablePeriod
common.obj : error LNK2001: unresolved external symbol TA_GetVersionString

This typically means that it can't find the underlying TA-Lib library, a
dependency which needs to be installed. On Windows, this could be caused by
installing the 32-bit binary distribution of the underlying TA-Lib library,
but trying to use it with 64-bit Python.


Sometimes installation will fail with errors like this:

shell
talib/common.c:8:22: fatal error: pyconfig.h: No such file or directory
 #include "pyconfig.h"
                      ^
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

This typically means that you need the Python headers, and should run
something like:

shell
sudo apt-get install python3-dev

Sometimes building the underlying TA-Lib library has errors running
make that look like this:

shell
../libtool: line 1717: cd: .libs/libta_lib.lax/libta_abstract.a: No such file or directory
make[2]: *** [libta_lib.la] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1

This might mean that the directory path to the underlying TA-Lib library
has spaces in the directory names. Try putting it in a path that does not have
any spaces and trying again.


Sometimes you might get this error running setup.py:

shell
/usr/include/limits.h:26:10: fatal error: bits/libc-header-start.h: No such file or directory
#include 
         ^~~~~~~~~~~~~~~~~~~~~~~~~~

This is likely an issue with trying to compile for 32-bit platform but
without the appropriate headers. You might find some success looking at the
first answer to this question.


If you get an error on macOS like this:

shell
code signature in <141BC883-189B-322C-AE90-CBF6B5206F67>
'python3.9/site-packages/talib/_ta_lib.cpython-39-darwin.so' not valid for
use in process: Trying to load an unsigned library)

You might look at this question
and use xcrun codesign to fix it.


If you wonder why STOCHRSI gives you different results than you expect,
probably you want STOCH applied to RSI, which is a little different
than the STOCHRSI which is STOCHF applied to RSI:

python
>>> import talib
>>> import numpy as np
>>> c = np.random.randn(100)

# this is the library function
>>> k, d = talib.STOCHRSI(c)

# this produces the same result, calling STOCHF
>>> rsi = talib.RSI(c)
>>> k, d = talib.STOCHF(rsi, rsi, rsi)

# you might want this instead, calling STOCH
>>> rsi = talib.RSI(c)
>>> k, d = talib.STOCH(rsi, rsi, rsi)

If the build appears to hang, you might be running on a VM with not enough memory - try 1 GB or 2 GB.

It has also been reported that using a swapfile could help, for example:

shell
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

If you get "permission denied" errors such as this, you might need to give
your user access to the location where the underlying TA-Lib C library is
installed -- or install it to a user-accessible location.

shell
talib/_ta_lib.c:747:28: fatal error: /usr/include/ta-lib/ta_defs.h: Permission denied
 #include "ta-lib/ta-defs.h"
                            ^
compilation terminated
error: command 'gcc' failed with exit status 1

If you're having trouble compiling the underlying TA-Lib C library on ARM64,
you might need to configure it with an explicit build type before running
make and make install, for example:

shell
./configure --build=aarch64-unknown-linux-gnu

This is caused by old config.guess file, so another way to solve this is
to copy a newer version of config.guess into the underlying TA-Lib C library
sources:

shell
cp /usr/share/automake-1.16/config.guess /path/to/extracted/ta-lib/config.guess

And then re-run configure:

shell
./configure

If you're having trouble using PyInstaller and
get an error that looks like this:

shell
...site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
    exec(bytecode, module.__dict__)
  File "talib\__init__.py", line 72, in <module>
ModuleNotFoundError: No module named 'talib.stream'

Then, perhaps you can use the --hidden-import argument to fix this:

shell
pyinstaller --hidden-import talib.stream "replaceToYourFileName.py"

If you want to use numpy<2, then you should use ta-lib<0.5.

If you want to use numpy>=2, then you should use ta-lib>=0.5.


If you have trouble getting the code autocompletions to work in Visual
Studio Code, a suggestion was made to look for the Python extension
settings, and an option for Language Server, and change it from
Default (which means Pylance if it is installed, Jedi otherwise), to
manually set Jedi and the completions should work. It is possible that
you might need to install it manually for this to
work.

Function API

Similar to TA-Lib, the Function API provides a lightweight wrapper of the
exposed TA-Lib indicators.

Each function returns an output array and have default values for their
parameters, unless specified as keyword arguments. Typically, these functions
will have an initial "lookback" period (a required number of observations
before an output is generated) set to NaN.

The lookback is function-specific and does not always match the value passed
to timeperiod. For example, RSI(timeperiod=14) needs 15 price observations
because the first RSI value depends on 14 price changes between consecutive
bars, not just 14 raw prices.

For convenience, the Function API supports both numpy.ndarray and
pandas.Series and polars.Series inputs.

All of the following examples use the Function API:

python
import numpy as np
import talib

close = np.random.random(100)

Calculate a simple moving average of the close prices:

python
output = talib.SMA(close)

Calculating bollinger bands, with triple exponential moving average:

python
from talib import MA_Type

upper, middle, lower = talib.BBANDS(close, matype=MA_Type.T3)

Calculating momentum of the close prices, with a time period of 5:

python
output = talib.MOM(close, timeperiod=5)

Functions marked in the docs as having an unstable period start with that
extra unstable-period setting at 0. In other words, get_unstable_period()
returns 0 until you explicitly change it with set_unstable_period().

NaN's

The underlying TA-Lib C library handles NaN's in a sometimes surprising manner
by typically propagating NaN's to the end of the output, for example:

python
>>> c = np.array([1.0, 2.0, 3.0, np.nan, 4.0, 5.0, 6.0])

>>> talib.SMA(c, 3)
array([nan, nan,  2., nan, nan, nan, nan])

You can compare that to a Pandas rolling mean, where their approach is to
output NaN until enough "lookback" values are observed to generate new outputs:

python
>>> c = pandas.Series([1.0, 2.0, 3.0, np.nan, 4.0, 5.0, 6.0])

>>> c.rolling(3).mean()
0    NaN
1    NaN
2    2.0
3    NaN
4    NaN
5    NaN
6    5.0
dtype: float64

Abstract API

If you're already familiar with using the function API, you should feel right
at home using the Abstract API.

Every function takes a collection of named inputs, either a dict of
numpy.ndarray or pandas.Series or polars.Series, or a
pandas.DataFrame or polars.DataFrame. If a pandas.DataFrame or
polars.DataFrame is provided, the output is returned as the same type
with named output columns.

For example, inputs could be provided for the typical "OHLCV" data:

python
import numpy as np

# note that all ndarrays must be the same length!
inputs = {
    'open': np.random.random(100),
    'high': np.random.random(100),
    'low': np.random.random(100),
    'close': np.random.random(100),
    'volume': np.random.random(100)
}

Functions can either be imported directly or instantiated by name:

python
from talib import abstract

# directly
SMA = abstract.SMA

# or by name
SMA = abstract.Function('sma')

From there, calling functions is basically the same as the function API:

python
from talib.abstract import *

# uses close prices (default)
output = SMA(inputs, timeperiod=25)

# uses open prices
output = SMA(inputs, timeperiod=25, price='open')

# uses close prices (default)
upper, middle, lower = BBANDS(inputs, 20, 2.0, 2.0)

# uses high, low, close (default)
slowk, slowd = STOCH(inputs, 5, 3, 0, 3, 0) # uses high, low, close by default

# uses high, low, open instead
slowk, slowd = STOCH(inputs, 5, 3, 0, 3, 0, prices=['high', 'low', 'open'])

Streaming API

An experimental Streaming API was added that allows users to compute the latest
value of an indicator. This can be faster than using the Function API, for
example in an application that receives streaming data, and wants to know just
the most recent updated indicator value.

python
import talib
from talib import stream

close = np.random.random(100)

# the Function API
output = talib.SMA(close)

# the Streaming API
latest = stream.SMA(close)

# the latest value is the same as the last output value
assert (output[-1] - latest) < 0.00001

Supported Indicators and Functions 📋

We can show all the TA functions supported by TA-Lib, either as a list or
as a dict sorted by group (e.g. "Overlap Studies", "Momentum Indicators",
etc):

python
import talib

# list of functions
for name in talib.get_functions():
    print(name)

# dict of functions by group
for group, names in talib.get_function_groups().items():
    print(group)
    for name in names:
        print(f"  {name}")

Indicator Groups 🏷️

  • Overlap Studies
  • Momentum Indicators
  • Volume Indicators
  • Volatility Indicators
  • Price Transform
  • Cycle Indicators
  • Pattern Recognition

Overlap Studies

text
BBANDS               Bollinger Bands
DEMA                 Double Exponential Moving Average
EMA                  Exponential Moving Average
HT_TRENDLINE         Hilbert Transform - Instantaneous Trendline
KAMA                 Kaufman Adaptive Moving Average
MA                   Moving average
MAMA                 MESA Adaptive Moving Average
MAVP                 Moving average with variable period
MIDPOINT             MidPoint over period
MIDPRICE             Midpoint Price over period
SAR                  Parabolic SAR
SAREXT               Parabolic SAR - Extended
SMA                  Simple Moving Average
T3                   Triple Exponential Moving Average (T3)
TEMA                 Triple Exponential Moving Average
TRIMA                Triangular Moving Average
WMA                  Weighted Moving Average

Momentum Indicators

text
ADX                  Average Directional Movement Index
ADXR                 Average Directional Movement Index Rating
APO                  Absolute Price Oscillator
AROON                Aroon
AROONOSC             Aroon Oscillator
BOP                  Balance Of Power
CCI                  Commodity Channel Index
CMO                  Chande Momentum Oscillator
DX                   Directional Movement Index
MACD                 Moving Average Convergence/Divergence
MACDEXT              MACD with controllable MA type
MACDFIX              Moving Average Convergence/Divergence Fix 12/26
MFI                  Money Flow Index
MINUS_DI             Minus Directional Indicator
MINUS_DM             Minus Directional Movement
MOM                  Momentum
PLUS_DI              Plus Directional Indicator
PLUS_DM              Plus Directional Movement
PPO                  Percentage Price Oscillator
ROC                  Rate of change : ((price/prevPrice)-1)*100
ROCP                 Rate of change Percentage: (price-prevPrice)/prevPrice
ROCR                 Rate of change ratio: (price/prevPrice)
ROCR100              Rate of change ratio 100 scale: (price/prevPrice)*100
RSI                  Relative Strength Index
STOCH                Stochastic
STOCHF               Stochastic Fast
STOCHRSI             Stochastic Relative Strength Index
TRIX                 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
ULTOSC               Ultimate Oscillator
WILLR                Williams' %R

Volume Indicators

text
AD                   Chaikin A/D Line
ADOSC                Chaikin A/D Oscillator
OBV                  On Balance Volume

Cycle Indicators

text
HT_DCPERIOD          Hilbert Transform - Dominant Cycle Period
HT_DCPHASE           Hilbert Transform - Dominant Cycle Phase
HT_PHASOR            Hilbert Transform - Phasor Components
HT_SINE              Hilbert Transform - SineWave
HT_TRENDMODE         Hilbert Transform - Trend vs Cycle Mode

Price Transform

text
AVGPRICE             Average Price
MEDPRICE             Median Price
TYPPRICE             Typical Price
WCLPRICE             Weighted Close Price

Volatility Indicators

text
ATR                  Average True Range
NATR                 Normalized Average True Range
TRANGE               True Range

Pattern Recognition

text
/* Detailed source-code truncated for AI context efficiency. */

Statistic Functions

text
BETA                 Beta
CORREL               Pearson's Correlation Coefficient (r)
LINEARREG            Linear Regression
LINEARREG_ANGLE      Linear Regression Angle
LINEARREG_INTERCEPT  Linear Regression Intercept
LINEARREG_SLOPE      Linear Regression Slope
STDDEV               Standard Deviation
TSF                  Time Series Forecast
VAR                  Variance

File: docs/func_groups/cycle_indicators.md

Cycle Indicator Functions

HT_DCPERIOD - Hilbert Transform - Dominant Cycle Period

NOTE: The HT_DCPERIOD function has an unstable period.

python
real = HT_DCPERIOD(real)

HT_DCPHASE - Hilbert Transform - Dominant Cycle Phase

NOTE: The HT_DCPHASE function has an unstable period.

python
real = HT_DCPHASE(real)

HT_PHASOR - Hilbert Transform - Phasor Components

NOTE: The HT_PHASOR function has an unstable period.

python
inphase, quadrature = HT_PHASOR(real)

HT_SINE - Hilbert Transform - SineWave

NOTE: The HT_SINE function has an unstable period.

python
sine, leadsine = HT_SINE(real)

HT_TRENDMODE - Hilbert Transform - Trend vs Cycle Mode

NOTE: The HT_TRENDMODE function has an unstable period.

python
integer = HT_TRENDMODE(real)

Documentation Index

FLOAT_RIGHTAll Function Groups


File: docs/func_groups/math_operators.md

Math Operator Functions

ADD - Vector Arithmetic Add

python
real = ADD(real0, real1)

DIV - Vector Arithmetic Div

python
real = DIV(real0, real1)

MAX - Highest value over a specified period

python
real = MAX(real, timeperiod=30)

MAXINDEX - Index of highest value over a specified period

python
integer = MAXINDEX(real, timeperiod=30)

MIN - Lowest value over a specified period

python
real = MIN(real, timeperiod=30)

MININDEX - Index of lowest value over a specified period

python
integer = MININDEX(real, timeperiod=30)

MINMAX - Lowest and highest values over a specified period

python
min, max = MINMAX(real, timeperiod=30)

MINMAXINDEX - Indexes of lowest and highest values over a specified period

python
minidx, maxidx = MINMAXINDEX(real, timeperiod=30)

MULT - Vector Arithmetic Mult

python
real = MULT(real0, real1)

SUB - Vector Arithmetic Subtraction

python
real = SUB(real0, real1)

SUM - Summation

python
real = SUM(real, timeperiod=30)

Documentation Index

FLOAT_RIGHTAll Function Groups


File: docs/func_groups/math_transform.md

Math Transform Functions

ACOS - Vector Trigonometric ACos

python
real = ACOS(real)

ASIN - Vector Trigonometric ASin

python
real = ASIN(real)

ATAN - Vector Trigonometric ATan

python
real = ATAN(real)

CEIL - Vector Ceil

python
real = CEIL(real)

COS - Vector Trigonometric Cos

python
real = COS(real)

COSH - Vector Trigonometric Cosh

python
real = COSH(real)

EXP - Vector Arithmetic Exp

python
real = EXP(real)

FLOOR - Vector Floor

python
real = FLOOR(real)

LN - Vector Log Natural

python
real = LN(real)

LOG10 - Vector Log10

python
real = LOG10(real)

SIN - Vector Trigonometric Sin

python
real = SIN(real)

SINH - Vector Trigonometric Sinh

python
real = SINH(real)

SQRT - Vector Square Root

python
real = SQRT(real)

TAN - Vector Trigonometric Tan

python
real = TAN(real)

TANH - Vector Trigonometric Tanh

python
real = TANH(real)

Documentation Index

FLOAT_RIGHTAll Function Groups


File: docs/func_groups/momentum_indicators.md

Momentum Indicator Functions

ADX - Average Directional Movement Index

NOTE: The ADX function has an unstable period.

python
real = ADX(high, low, close, timeperiod=14)

ADXR - Average Directional Movement Index Rating

NOTE: The ADXR function has an unstable period.

python
real = ADXR(high, low, close, timeperiod=14)

APO - Absolute Price Oscillator

python
real = APO(real, fastperiod=12, slowperiod=26, matype=0)

AROON - Aroon

python
aroondown, aroonup = AROON(high, low, timeperiod=14)

AROONOSC - Aroon Oscillator

python
real = AROONOSC(high, low, timeperiod=14)

BOP - Balance Of Power

python
real = BOP(open, high, low, close)

CCI - Commodity Channel Index

python
real = CCI(high, low, close, timeperiod=14)

CMO - Chande Momentum Oscillator

NOTE: The CMO function has an unstable period.

python
real = CMO(real, timeperiod=14)

DX - Directional Movement Index

NOTE: The DX function has an unstable period.

python
real = DX(high, low, close, timeperiod=14)

IMI - Intraday Momentum Index

NOTE: The IMI function has an unstable period.

python
real = IMI(open, close, timeperiod=14)

MACD - Moving Average Convergence/Divergence

python
macd, macdsignal, macdhist = MACD(real, fastperiod=12, slowperiod=26, signalperiod=9)

MACDEXT - MACD with controllable MA type

python
macd, macdsignal, macdhist = MACDEXT(real, fastperiod=12, fastmatype=0, slowperiod=26, slowmatype=0, signalperiod=9, signalmatype=0)

MACDFIX - Moving Average Convergence/Divergence Fix 12/26

python
macd, macdsignal, macdhist = MACDFIX(real, signalperiod=9)

MFI - Money Flow Index

NOTE: The MFI function has an unstable period.

python
real = MFI(high, low, close, volume, timeperiod=14)

MINUS_DI - Minus Directional Indicator

NOTE: The MINUS_DI function has an unstable period.

python
real = MINUS_DI(high, low, close, timeperiod=14)

MINUS_DM - Minus Directional Movement

NOTE: The MINUS_DM function has an unstable period.

python
real = MINUS_DM(high, low, timeperiod=14)

MOM - Momentum

python
real = MOM(real, timeperiod=10)

PLUS_DI - Plus Directional Indicator

NOTE: The PLUS_DI function has an unstable period.

python
real = PLUS_DI(high, low, close, timeperiod=14)

PLUS_DM - Plus Directional Movement

NOTE: The PLUS_DM function has an unstable period.

python
real = PLUS_DM(high, low, timeperiod=14)

PPO - Percentage Price Oscillator

python
real = PPO(real, fastperiod=12, slowperiod=26, matype=0)

ROC - Rate of change : ((price/prevPrice)-1)*100

python
real = ROC(real, timeperiod=10)

ROCP - Rate of change Percentage: (price-prevPrice)/prevPrice

python
real = ROCP(real, timeperiod=10)

ROCR - Rate of change ratio: (price/prevPrice)

python
real = ROCR(real, timeperiod=10)

ROCR100 - Rate of change ratio 100 scale: (price/prevPrice)*100

python
real = ROCR100(real, timeperiod=10)

RSI - Relative Strength Index

NOTE: The RSI function has an unstable period.

python
real = RSI(real, timeperiod=14)

STOCH - Stochastic

python
slowk, slowd = STOCH(high, low, close, fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)

STOCHF - Stochastic Fast

python
fastk, fastd = STOCHF(high, low, close, fastk_period=5, fastd_period=3, fastd_matype=0)

STOCHRSI - Stochastic Relative Strength Index

NOTE: The STOCHRSI function has an unstable period.

python
fastk, fastd = STOCHRSI(real, timeperiod=14, fastk_period=5, fastd_period=3, fastd_matype=0)

TRIX - 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA

python
real = TRIX(real, timeperiod=30)

ULTOSC - Ultimate Oscillator

python
real = ULTOSC(high, low, close, timeperiod1=7, timeperiod2=14, timeperiod3=28)

WILLR - Williams' %R

python
real = WILLR(high, low, close, timeperiod=14)

Documentation Index

FLOAT_RIGHTAll Function Groups


File: docs/func_groups/overlap_studies.md

Overlap Studies Functions

ACCBANDS - Acceleration Bands

python
upperband, middleband, lowerband = ACCBANDS(high, low, close, timeperiod=20)

BBANDS - Bollinger Bands

python
upperband, middleband, lowerband = BBANDS(real, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)

DEMA - Double Exponential Moving Average

python
real = DEMA(real, timeperiod=30)

EMA - Exponential Moving Average

NOTE: The EMA function has an unstable period.

python
real = EMA(real, timeperiod=30)

HT_TRENDLINE - Hilbert Transform - Instantaneous Trendline

NOTE: The HT_TRENDLINE function has an unstable period.

python
real = HT_TRENDLINE(real)

KAMA - Kaufman Adaptive Moving Average

NOTE: The KAMA function has an unstable period.

python
real = KAMA(real, timeperiod=30)

MA - Moving average

python
real = MA(real, timeperiod=30, matype=0)

MAMA - MESA Adaptive Moving Average

NOTE: The MAMA function has an unstable period.

python
mama, fama = MAMA(real, fastlimit=0, slowlimit=0)

MAVP - Moving average with variable period

python
real = MAVP(real, periods, minperiod=2, maxperiod=30, matype=0)

MIDPOINT - MidPoint over period

python
real = MIDPOINT(real, timeperiod=14)

MIDPRICE - Midpoint Price over period

python
real = MIDPRICE(high, low, timeperiod=14)

SAR - Parabolic SAR

python
real = SAR(high, low, acceleration=0, maximum=0)

SAREXT - Parabolic SAR - Extended

python
real = SAREXT(high, low, startvalue=0, offsetonreverse=0, accelerationinitlong=0, accelerationlong=0, accelerationmaxlong=0, accelerationinitshort=0, accelerationshort=0, accelerationmaxshort=0)

SMA - Simple Moving Average

python
real = SMA(real, timeperiod=30)

T3 - Triple Exponential Moving Average (T3)

NOTE: The T3 function has an unstable period.

python
real = T3(real, timeperiod=5, vfactor=0)

TEMA - Triple Exponential Moving Average

python
real = TEMA(real, timeperiod=30)

TRIMA - Triangular Moving Average

python
real = TRIMA(real, timeperiod=30)

WMA - Weighted Moving Average

python
real = WMA(real, timeperiod=30)

Documentation Index

FLOAT_RIGHTAll Function Groups


File: docs/func_groups/pattern_recognition.md

Pattern Recognition Functions

CDL2CROWS - Two Crows

python
integer = CDL2CROWS(open, high, low, close)

CDL3BLACKCROWS - Three Black Crows

python
integer = CDL3BLACKCROWS(open, high, low, close)

CDL3INSIDE - Three Inside Up/Down

python
integer = CDL3INSIDE(open, high, low, close)

CDL3LINESTRIKE - Three-Line Strike

python
integer = CDL3LINESTRIKE(open, high, low, close)

CDL3OUTSIDE - Three Outside Up/Down

python
integer = CDL3OUTSIDE(open, high, low, close)

CDL3STARSINSOUTH - Three Stars In The South

python
integer = CDL3STARSINSOUTH(open, high, low, close)

CDL3WHITESOLDIERS - Three Advancing White Soldiers

python
integer = CDL3WHITESOLDIERS(open, high, low, close)

CDLABANDONEDBABY - Abandoned Baby

python
integer = CDLABANDONEDBABY(open, high, low, close, penetration=0)

CDLADVANCEBLOCK - Advance Block

python
integer = CDLADVANCEBLOCK(open, high, low, close)

CDLBELTHOLD - Belt-hold

python
integer = CDLBELTHOLD(open, high, low, close)

CDLBREAKAWAY - Breakaway

python
integer = CDLBREAKAWAY(open, high, low, close)

CDLCLOSINGMARUBOZU - Closing Marubozu

python
integer = CDLCLOSINGMARUBOZU(open, high, low, close)

CDLCONCEALBABYSWALL - Concealing Baby Swallow

python
integer = CDLCONCEALBABYSWALL(open, high, low, close)

CDLCOUNTERATTACK - Counterattack

python
integer = CDLCOUNTERATTACK(open, high, low, close)

CDLDARKCLOUDCOVER - Dark Cloud Cover

python
integer = CDLDARKCLOUDCOVER(open, high, low, close, penetration=0)

CDLDOJI - Doji

python
integer = CDLDOJI(open, high, low, close)

CDLDOJISTAR - Doji Star

python
integer = CDLDOJISTAR(open, high, low, close)

CDLDRAGONFLYDOJI - Dragonfly Doji

python
integer = CDLDRAGONFLYDOJI(open, high, low, close)

CDLENGULFING - Engulfing Pattern

python
integer = CDLENGULFING(open, high, low, close)

CDLEVENINGDOJISTAR - Evening Doji Star

python
integer = CDLEVENINGDOJISTAR(open, high, low, close, penetration=0)

CDLEVENINGSTAR - Evening Star

python
integer = CDLEVENINGSTAR(open, high, low, close, penetration=0)

CDLGAPSIDESIDEWHITE - Up/Down-gap side-by-side white lines

python
integer = CDLGAPSIDESIDEWHITE(open, high, low, close)

CDLGRAVESTONEDOJI - Gravestone Doji

python
integer = CDLGRAVESTONEDOJI(open, high, low, close)

CDLHAMMER - Hammer

python
integer = CDLHAMMER(open, high, low, close)

CDLHANGINGMAN - Hanging Man

python
integer = CDLHANGINGMAN(open, high, low, close)

CDLHARAMI - Harami Pattern

python
integer = CDLHARAMI(open, high, low, close)

CDLHARAMICROSS - Harami Cross Pattern

python
integer = CDLHARAMICROSS(open, high, low, close)

CDLHIGHWAVE - High-Wave Candle

python
integer = CDLHIGHWAVE(open, high, low, close)

CDLHIKKAKE - Hikkake Pattern

python
integer = CDLHIKKAKE(open, high, low, close)

CDLHIKKAKEMOD - Modified Hikkake Pattern

python
integer = CDLHIKKAKEMOD(open, high, low, close)

CDLHOMINGPIGEON - Homing Pigeon

python
integer = CDLHOMINGPIGEON(open, high, low, close)

CDLIDENTICAL3CROWS - Identical Three Crows

python
integer = CDLIDENTICAL3CROWS(open, high, low, close)

CDLINNECK - In-Neck Pattern

python
integer = CDLINNECK(open, high, low, close)

CDLINVERTEDHAMMER - Inverted Hammer

python
integer = CDLINVERTEDHAMMER(open, high, low, close)

CDLKICKING - Kicking

python
integer = CDLKICKING(open, high, low, close)

CDLKICKINGBYLENGTH - Kicking - bull/bear determined by the longer marubozu

python
integer = CDLKICKINGBYLENGTH(open, high, low, close)

CDLLADDERBOTTOM - Ladder Bottom

python
integer = CDLLADDERBOTTOM(open, high, low, close)

CDLLONGLEGGEDDOJI - Long Legged Doji

python
integer = CDLLONGLEGGEDDOJI(open, high, low, close)

CDLLONGLINE - Long Line Candle

python
integer = CDLLONGLINE(open, high, low, close)

CDLMARUBOZU - Marubozu

python
integer = CDLMARUBOZU(open, high, low, close)

CDLMATCHINGLOW - Matching Low

python
integer = CDLMATCHINGLOW(open, high, low, close)

CDLMATHOLD - Mat Hold

python
integer = CDLMATHOLD(open, high, low, close, penetration=0)

CDLMORNINGDOJISTAR - Morning Doji Star

python
integer = CDLMORNINGDOJISTAR(open, high, low, close, penetration=0)

CDLMORNINGSTAR - Morning Star

python
integer = CDLMORNINGSTAR(open, high, low, close, penetration=0)

CDLONNECK - On-Neck Pattern

python
integer = CDLONNECK(open, high, low, close)

CDLPIERCING - Piercing Pattern

python
integer = CDLPIERCING(open, high, low, close)

CDLRICKSHAWMAN - Rickshaw Man

python
integer = CDLRICKSHAWMAN(open, high, low, close)

CDLRISEFALL3METHODS - Rising/Falling Three Methods

python
integer = CDLRISEFALL3METHODS(open, high, low, close)

CDLSEPARATINGLINES - Separating Lines

python
integer = CDLSEPARATINGLINES(open, high, low, close)

CDLSHOOTINGSTAR - Shooting Star

python
integer = CDLSHOOTINGSTAR(open, high, low, close)

CDLSHORTLINE - Short Line Candle

python
integer = CDLSHORTLINE(open, high, low, close)

CDLSPINNINGTOP - Spinning Top

python
integer = CDLSPINNINGTOP(open, high, low, close)

CDLSTALLEDPATTERN - Stalled Pattern

python
integer = CDLSTALLEDPATTERN(open, high, low, close)

CDLSTICKSANDWICH - Stick Sandwich

python
integer = CDLSTICKSANDWICH(open, high, low, close)

CDLTAKURI - Takuri (Dragonfly Doji with very long lower shadow)

python
integer = CDLTAKURI(open, high, low, close)

CDLTASUKIGAP - Tasuki Gap

python
integer = CDLTASUKIGAP(open, high, low, close)

CDLTHRUSTING - Thrusting Pattern

python
integer = CDLTHRUSTING(open, high, low, close)

CDLTRISTAR - Tristar Pattern

python
integer = CDLTRISTAR(open, high, low, close)

CDLUNIQUE3RIVER - Unique 3 River

python
integer = CDLUNIQUE3RIVER(open, high, low, close)

CDLUPSIDEGAP2CROWS - Upside Gap Two Crows

python
integer = CDLUPSIDEGAP2CROWS(open, high, low, close)

CDLXSIDEGAP3METHODS - Upside/Downside Gap Three Methods

python
integer = CDLXSIDEGAP3METHODS(open, high, low, close)

Documentation Index

FLOAT_RIGHTAll Function Groups


File: docs/func_groups/price_transform.md

Price Transform Functions

AVGDEV - Average Deviation

python
real = AVGDEV(real, timeperiod=14)

AVGPRICE - Average Price

python
real = AVGPRICE(open, high, low, close)

MEDPRICE - Median Price

python
real = MEDPRICE(high, low)

TYPPRICE - Typical Price

python
real = TYPPRICE(high, low, close)

WCLPRICE - Weighted Close Price

python
real = WCLPRICE(high, low, close)

Documentation Index
FLOAT_RIGHTAll Function Groups


File: docs/func_groups/statistic_functions.md

Statistic Functions

BETA - Beta

python
real = BETA(real0, real1, timeperiod=5)

CORREL - Pearson's Correlation Coefficient (r)

python
real = CORREL(real0, real1, timeperiod=30)

LINEARREG - Linear Regression

python
real = LINEARREG(real, timeperiod=14)

LINEARREG_ANGLE - Linear Regression Angle

python
real = LINEARREG_ANGLE(real, timeperiod=14)

LINEARREG_INTERCEPT - Linear Regression Intercept

python
real = LINEARREG_INTERCEPT(real, timeperiod=14)

LINEARREG_SLOPE - Linear Regression Slope

python
real = LINEARREG_SLOPE(real, timeperiod=14)

STDDEV - Standard Deviation

python
real = STDDEV(real, timeperiod=5, nbdev=1)

TSF - Time Series Forecast

python
real = TSF(real, timeperiod=14)

VAR - Variance

python
real = VAR(real, timeperiod=5, nbdev=1)

Documentation Index

FLOAT_RIGHTAll Function Groups


File: docs/func_groups/volatility_indicators.md

Volatility Indicator Functions

ATR - Average True Range

NOTE: The ATR function has an unstable period.

python
real = ATR(high, low, close, timeperiod=14)

NATR - Normalized Average True Range

NOTE: The NATR function has an unstable period.

python
real = NATR(high, low, close, timeperiod=14)

TRANGE - True Range

python
real = TRANGE(high, low, close)

Documentation Index

FLOAT_RIGHTAll Function Groups