FinTA (Financial Technical Analysis)
Common financial technical indicators implemented in Pandas.
This is work in progress, bugs are expected and results of indicators might not be correct.
Supported indicators:
['SMA', 'SMM', 'EMA', 'DEMA', 'TEMA', 'TRIMA', 'TRIX', 'AMA', 'LWMA', 'VAMA', 'VIDYA', 'ER', 'KAMA', 'ZLEMA', 'WMA', 'HMA', 'VWAP', 'SMMA', 'ALMA', 'MAMA', 'FRAMA', 'MACD', 'PPO', 'VW_MACD', 'MOM', 'ROC', 'RSI', 'IFT_RSI', 'SWI', 'TR', 'ATR', 'SAR', 'BBANDS', 'BBWIDTH', 'PERCENT_B', 'KC', 'DO', 'DMI', 'ADX', 'PIVOTS', 'STOCH', 'STOCHD', 'STOCHRSI', 'WILLIAMS', 'UO', 'AO', 'MI', 'VORTEX', 'KST', 'TSI', 'TP', 'ADL', 'CHAIKIN', 'MFI', 'OBV', 'WOBV', 'VZO', 'EFI', 'CFI', 'EBBP', 'EMV', 'CCI', 'COPP', 'BASP', 'BASPN', 'CMO', 'CHANDELIER', 'QSTICK', 'TMF', 'WTO', 'FISH', 'ICHIMOKU', 'APZ', 'VR', 'SQZMI', 'VPT', 'FVE', 'VFI']
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
data 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 prepare the DataFrame into ohlc
format you can do something as following:
standardize column names of your source
df.columns = ["date", 'close', 'volume']
set index on the date column, which is requirement to sort it by time periods
df.set_index('date', inplace=True)
select only price column, resample by time period and return daily ohlc (you can choose different time period)
ohlc = df["close"].resample("24h").ohlc()
ohlc()
method applied on the Series above will automatically format the dataframe in format expected by the library so resulting ohlc
Series is ready to use.
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
) - 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
Support the development by donating in cryptocurrency:
XBT: 3PTyUNfn4uoSZGQ48tGMnqorca1DW9Xs4M
XPC: PFdR14r9JM2EQSDh9nRZQ6EW5yzHjNJz3E