P
PipsGrowth

finta Library

Simple and elegant technical analysis library with 80+ indicators built entirely on pandas. One-line syntax: <code className="text-primary">TA.RSI(df)</code> — that&apos;s it.

Difficulty: Beginner
Category: Indicators

Installation

# Pure Python — works everywhere
$ pip install finta

80+ Available Indicators

Trend

SMAEMADEMATEMAWMAHMAKAMAZLEMAVWAPICHIMOKU

Momentum

RSIMACDSTOCHCCIMOMROCWILLRTSIUOAO

Volume

OBVVFIMFIADLCMFEMVVWAP

Volatility

ATRBBANDSKCDCSTARC

Other

PIVOTFISHAPZSQZMIVPTEBBP

Code Examples

Installation

Install finta with pip

Python
pip install finta
# Verify
python -c "from finta import TA; print('finta ready!')"

Basic Usage

Simple one-line indicator calculations

Python
from finta import TA
import yfinance as yf
# Get OHLCV data
df = yf.download("EURUSD=X", period="1y")
# finta uses simple one-line calls
sma = TA.SMA(df, period=20)
ema = TA.EMA(df, period=12)
rsi = TA.RSI(df, period=14)
print(f"SMA(20): {sma.iloc[-1]:.5f}")
print(f"EMA(12): {ema.iloc[-1]:.5f}")
print(f"RSI(14): {rsi.iloc[-1]:.2f}")

Advanced Indicators

Bollinger Bands, MACD, and Ichimoku Cloud

Python
from finta import TA
# Bollinger Bands - returns DataFrame with upper, mid, lower
bbands = TA.BBANDS(df, period=20, std_multiplier=2)
print(f"Upper: {bbands['BB_UPPER'].iloc[-1]:.5f}")
print(f"Middle: {bbands['BB_MIDDLE'].iloc[-1]:.5f}")
print(f"Lower: {bbands['BB_LOWER'].iloc[-1]:.5f}")
# MACD
macd = TA.MACD(df)
print(f"MACD: {macd['MACD'].iloc[-1]:.5f}")
print(f"Signal: {macd['SIGNAL'].iloc[-1]:.5f}")
# Ichimoku Cloud
ichimoku = TA.ICHIMOKU(df)
print(ichimoku.columns.tolist())

Complete Trading Strategy

Multi-indicator strategy using finta

Python
from finta import TA
import yfinance as yf
import pandas as pd
df = yf.download("EURUSD=X", period="1y")
# Calculate indicators
df['SMA_20'] = TA.SMA(df, period=20)
df['SMA_50'] = TA.SMA(df, period=50)
df['RSI'] = TA.RSI(df, period=14)
df['ATR'] = TA.ATR(df, period=14)
macd = TA.MACD(df)
df['MACD'] = macd['MACD']
df['MACD_Signal'] = macd['SIGNAL']
# Generate signals
df['Buy'] = (
(df['SMA_20'] > df['SMA_50']) &
(df['RSI'] < 70) &
(df['MACD'] > df['MACD_Signal'])
)
df['Sell'] = (
(df['SMA_20'] < df['SMA_50']) |
(df['RSI'] > 70)
)
# Show latest signals
latest = df.iloc[-1]
signal = "BUY" if latest['Buy'] else "SELL" if latest['Sell'] else "HOLD"
print(f"Signal: {signal}")
print(f"RSI: {latest['RSI']:.2f}, ATR: {latest['ATR']:.5f}")

Best Practices

OHLCV DataFrames

finta expects standard OHLCV column names: Open, High, Low, Close, Volume

Simple API

All indicators follow TA.INDICATOR(df) pattern — very easy to learn

Performance

Pure Python — slower than C-based TA-Lib for large datasets

Limited Documentation

Check source code for advanced parameters and return types

PipsGrowth - Expert Broker Reviews, Trading Strategies & Tools