FinTA (Financial Technical Analysis)
Common financial technical indicators implemented in Pandas.
This is work in progress, bugs are expected and results of some indicators may not be accurate.
Supported indicators:
Finta supports 76 trading indicators:
* Simple Moving Average 'SMA'
* Simple Moving Median 'SMM'
* Smoothed Simple Moving Average 'SSMA'
* Exponential Moving Average 'EMA'
* Double Exponential Moving Average 'DEMA'
* Triple Exponential Moving Average 'TEMA'
* Triangular Moving Average 'TRIMA'
* Triple Exponential Moving Average Oscillator 'TRIX'
* Volume Adjusted Moving Average 'VAMA'
* Kaufman Efficiency Indicator 'ER'
* Kaufman's Adaptive Moving Average 'KAMA'
* Zero Lag Exponential Moving Average 'ZLEMA'
* Weighted Moving Average 'WMA'
* Hull Moving Average 'HMA'
* Elastic Volume Moving Average 'EVWMA'
* Volume Weighted Average Price 'VWAP'
* Smoothed Moving Average 'SMMA'
* Moving Average Convergence Divergence 'MACD'
* Percentage Price Oscillator 'PPO'
* Volume-Weighted MACD 'VW_MACD'
* Elastic-Volume weighted MACD 'EV_MACD'
* Market Momentum 'MOM'
* Rate-of-Change 'ROC'
* Relative Strenght Index 'RSI'
* Inverse Fisher Transform RSI 'IFT_RSI'
* True Range 'TR'
* Average True Range 'ATR'
* Stop-and-Reverse 'SAR'
* Bollinger Bands 'BBANDS'
* Bollinger Bands Width 'BBWIDTH'
* Percent B 'PERCENT_B'
* Keltner Channels 'KC'
* Donchian Channel 'DO'
* Directional Movement Indicator 'DMI'
* Average Directional Index 'ADX'
* Pivot Points 'PIVOT'
* Fibonacci Pivot Points 'PIVOT_FIB'
* Stochastic Oscillator %K 'STOCH'
* Stochastic oscillator %D 'STOCHD'
* Stochastic RSI 'STOCHRSI'
* Williams %R 'WILLIAMS'
* Ultimate Oscillator 'UO'
* Awesome Oscillator 'AO'
* Mass Index 'MI'
* Vortex Indicator 'VORTEX'
* Know Sure Thing 'KST'
* True Strength Index 'TSI'
* Typical Price 'TP'
* Accumulation-Distribution Line 'ADL'
* Chaikin Oscillator 'CHAIKIN'
* Money Flow Index 'MFI'
* On Balance Volume 'OBV'
* Weighter OBV 'WOBV'
* Volume Zone Oscillator 'VZO'
* Price Zone Oscillator 'PZO'
* Elder's Force Index 'EFI'
* Cummulative Force Index 'CFI'
* Bull power and Bear Power 'EBBP'
* Ease of Movement 'EMV'
* Commodity Channel Index 'CCI'
* Coppock Curve 'COPP'
* Buy and Sell Pressure 'BASP'
* Normalized BASP 'BASPN'
* Chande Momentum Oscillator 'CMO'
* Chandelier Exit 'CHANDELIER'
* Qstick 'QSTICK'
* Twiggs Money Index 'TMF'
* Wave Trend Oscillator 'WTO'
* Fisher Transform 'FISH'
* Ichimoku Cloud 'ICHIMOKU'
* Adaptive Price Zone 'APZ'
* Vector Size Indicator 'VR'
* Squeeze Momentum Indicator 'SQZMI'
* Volume Price Trend 'VPT'
* Finite Volume Element 'FVE'
* Volume Flow Indicator 'VFI'
* Moving Standard deviation 'MSD'
* Schaff Trend Cycle 'STC'
Dependencies:
- python (3.4+)
- pandas (0.21.1+)
TA class is very well documented and there should be no trouble
exploring it and using with your data. Each class method expects proper ohlc DataFrame as input.
Install:
pip install finta
or latest development version:
pip install git+git://github.com/peerchemist/finta.git
Import
from finta import TA
Prepare data to use with finta:
finta expects properly formated ohlc DataFrame, with column names in lowercase:
["open", "high", "low", "close"] and ["volume"] for indicators that expect ohlcv input.
to resample by time period (you can choose different time period)
ohlc = resample(df, "24h")
You can also load a ohlc DataFrame from .cvs file
data_file = ("data/bittrex:btc-usdt.csv")
ohlc = pd.read_csv(data_file, index_col="date", parse_dates=True)
Examples:
will return Pandas Series object with the Simple moving average for 42 periods
TA.SMA(ohlc, 42)
will return Pandas Series object with "Awesome oscillator" values
TA.AO(ohlc)
expects ["volume"] column as input
TA.OBV(ohlc)
will return Series with Bollinger Bands columns [BB_UPPER, BB_LOWER]
TA.BBANDS(ohlc)
will return Series with calculated BBANDS values but will use KAMA instead of MA for calculation, other types of Moving Averages are allowed as well.
TA.BBANDS(ohlc, TA.KAMA(ohlc, 20))
I welcome pull requests with new indicators or fixes for existing ones. Please submit only indicators that belong in public domain and are royalty free.
Contributing
- Fork it (https://github.com/peerchemist/finta/fork)
- Study how it's implemented.
- Create your feature branch (
git checkout -b my-new-feature). - Run black code formatter on the finta.py to ensure uniform code style.
- Commit your changes (
git commit -am 'Add some feature'). - Push to the branch (
git push origin my-new-feature). - Create a new Pull Request.
Donate
Buy me a beer 🍺:
Bitcoin: 3NibjuvQPzcfuLaefhUEEFBcmHpXgKgs4m
Peercoin: P9dAfWoxT7kksKAStubDQR6RhdXk5z12rV
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file finta-0.4.0.tar.gz.
File metadata
- Download URL: finta-0.4.0.tar.gz
- Upload date:
- Size: 25.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/41.1.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.7.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38ff082371495ce9307929ba3240dbac2dd60ab5444c596f84d606dd044f41bc
|
|
| MD5 |
892cac941b31177fa8537b4bbcc41df8
|
|
| BLAKE2b-256 |
58fce5b667c5e3c4f9cd72ce0c17be939b2a21a04aee4c92960ae938add1a3a1
|