Skip to main content

Trading Technical Indicators, python library. Where Traditional Technical Analysis and AI are met.

Project description

trading-technical-indicators (tti)

Trading Technical Indicators python library, where Traditional Technical Analysis and AI are met. Version 0.2.2 (stable release)

  • Calculate technical indicators (62 indicators supported).
  • Produce graphs for any technical indicator.
  • Get trading signals for each indicator.
  • Trading simulation based on trading signals.
  • Machine Learning integration for prices prediction (not included in this release).

Implementation based on the book 'Technical Analysis from A to Z, Steven B. Achelis'. Validation based on the 'A to Z Companion Spreadsheet, Steven B. Achelis and Jon C. DeBry'

API documentation and installation instructions can be found in the project's web-site: Trading Technical Indicators

Change Log

Stable Releases

  • 0.2.2: Incompatibilities with the latest pandas release 1.2.0 fixed (#20)
  • 0.2.1: Bug fixes, new pandas release causes an exception in some indicators calculation (#20)
  • 0.2.0: First stable release, updates described in the following github issues (#2, #3, #14, #15)

Beta Releases

  • 0.1.b3: Updates described in the following github issues (#11, #7, #8)
  • 0.1.b2: Bugs fixes (#1)
  • 0.1.b1: Cosmetic changes in package building file applied (setup.py)
  • 0.1.b0: First beta release

Planned Releases

  • 1.0.0: Full featured release, including machine learning related features (planned for 01.03.2021).

Indicators supported

  • Accumulation Distribution Line
  • Average True Range
  • Bollinger Bands
  • Chaikin Money Flow
  • Chaikin Oscillator
  • Chande Momentum Oscillator
  • Commodity Channel Index
  • Detrended Price Oscillator
  • Directional Movement Index
  • Double Exponential Moving Average
  • Ease Of Movement
  • Envelopes
  • Fibonacci Retracement
  • Forecast Oscillator
  • Ichimoku Cloud
  • Intraday Movement Index
  • Klinger Oscillator
  • Linear Regression Indicator
  • Linear Regression Slope
  • Market Facilitation Index
  • Mass Index
  • Median Price
  • Momentum
  • Exponential Moving Average
  • Simple Moving Average
  • Time-Series Moving Average
  • Triangular Moving Average
  • Variable Moving Average
  • Moving Average Convergence Divergence
  • Negative Volume Index
  • On Balance Volume
  • Parabolic SAR
  • Performance
  • Positive Volume Index
  • Price And Volume Trend
  • Price Channel
  • Price Oscillator
  • Price Rate Of Change
  • Projection Bands
  • Projection Oscillator
  • Qstick
  • Range Indicator
  • Relative Momentum Index
  • Relative Strength Index
  • Relative Volatility Index
  • Standard Deviation
  • Stochastic Momentum Index
  • Fast Stochastic Oscillator
  • Slow Stochastic Oscillator
  • Swing Index
  • Time Series Forecast
  • Triple Exponential Moving Average
  • Typical Price
  • Ultimate Oscillator
  • Vertical Horizontal Filter
  • Volatility Chaikins
  • Volume Oscillator
  • Volume Rate Of Change
  • Weighted Close
  • Wilders Smoothing
  • Williams Accumulation Distribution
  • Williams %R

Usage Example

Code example

"""
Trading-Technical-Indicators (tti) python library

File name: indicator_example.py
    Example code for the trading technical indicators, for the docs.

Accumulation Distribution Line indicator and SCMN.SW.csv data file is used.
"""

import pandas as pd
from tti.indicators import AccumulationDistributionLine

# Read data from csv file. Set the index to the correct column
# (dates column)
df = pd.read_csv('./data/SCMN.SW.csv', parse_dates=True, index_col=0)

# Create indicator
adl_indicator = AccumulationDistributionLine(input_data=df)

# Get indicator's calculated data
print('\nTechnical Indicator data:\n', adl_indicator.getTiData())

# Get indicator's value for a specific date
print('\nTechnical Indicator value at 2012-09-06:', adl_indicator.getTiValue('2012-09-06'))

# Get the most recent indicator's value
print('\nMost recent Technical Indicator value:', adl_indicator.getTiValue())

# Get signal from indicator
print('\nTechnical Indicator signal:', adl_indicator.getTiSignal())

# Show the Graph for the calculated Technical Indicator
adl_indicator.getTiGraph().show()

# Execute simulation based on trading signals
simulation_data, simulation_statistics, simulation_graph = \
    adl_indicator.getTiSimulation(
        close_values=df[['close']], max_exposure=None,
        short_exposure_factor=1.5)
print('\nSimulation Data:\n', simulation_data)
print('\nSimulation Statistics:\n', simulation_statistics)

# Show the Graph for the executed trading signal simulation
simulation_graph.show()

Output

Technical Indicator data:
                      adl
Date
1998-10-05  5.346066e+05
1998-10-06  9.788753e+05
1998-10-07  1.377338e+06
1998-10-08  1.251994e+06
1998-10-09  1.108012e+06
...                  ...
2020-11-30  1.736986e+07
2020-12-01  1.741746e+07
2020-12-02  1.737860e+07
2020-12-03  1.741683e+07
2020-12-04  1.742771e+07

[5651 rows x 1 columns]

Technical Indicator value at 2012-09-06: [8617026.854250321]

Most recent Technical Indicator value: [17427706.42639293]

Technical Indicator signal: ('buy', -1)

Simulation Data:
            signal open_trading_action  ... earnings  balance
Date                                   ...
1998-10-05   hold                none  ...        0        0
1998-10-06    buy                long  ...        0  385.138
1998-10-07    buy                long  ...   13.264  411.666
1998-10-08    buy                long  ...   13.264  777.644
1998-10-09    buy                long  ...   19.159  795.329
...           ...                 ...  ...      ...      ...
2020-11-30    buy                long  ...  19817.2  37577.2
2020-12-01   hold                none  ...  19817.2  37577.2
2020-12-02    buy                long  ...  19817.2  38019.2
2020-12-03    buy                long  ...  19817.2  38385.1
2020-12-04    buy                long  ...  19817.2  38837.2

[5651 rows x 7 columns]

Simulation Statistics:
 {'number_of_trading_days': 5651, 'number_of_buy_signals': 4767, 'number_of_ignored_buy_signals': 0, 'number_of_sell_signals': 601, 'number_of_ignored_sell_signals': 0, 'last_stock_value': 475.5, 'last_exposure': 22340.73, 'last_open_long_positions': 40, 'last_open_short_positions': 0, 'last_portfolio_value': 19020.0, 'last_earnings': 19817.21, 'final_balance': 38837.21}

Output graphs

Download files

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

Source Distribution

tti-0.2.2.tar.gz (48.9 kB view details)

Uploaded Source

Built Distribution

tti-0.2.2-py3-none-any.whl (120.5 kB view details)

Uploaded Python 3

File details

Details for the file tti-0.2.2.tar.gz.

File metadata

  • Download URL: tti-0.2.2.tar.gz
  • Upload date:
  • Size: 48.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.1.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.6

File hashes

Hashes for tti-0.2.2.tar.gz
Algorithm Hash digest
SHA256 dda54e84983d1bbf41baef890cafd5ef8dd259ca3dd0ca846f0c63fe76da2cdf
MD5 ef78ab3d9d490b19b920283eb5e7b61d
BLAKE2b-256 5a4aa358762a7e1152de4968c90c817cd0a0ade8a0c079798c15a1b7377dbe59

See more details on using hashes here.

File details

Details for the file tti-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: tti-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 120.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.1.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.6

File hashes

Hashes for tti-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 98fcbb98af35ed575707e81e2443ef7311507c064a2cf41755b4b71199b23b66
MD5 61ae83354ba68fd9f14a3b6b02b053a1
BLAKE2b-256 08b940ed28681cd82cc8bac37e27dde34c1057ce11d4625bdf224dae27e3ddd1

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