Technical Indicators¶
FinanceLib provides 11 technical analysis indicators, all implemented as pure functions operating on pandas Series.
Trend Indicators¶
Simple Moving Average (SMA)¶
Exponential Moving Average (EMA)¶
MACD¶
from financelib.trading.algo_trade import macd
macd_line, signal_line = macd(close_prices, fast_period=12, slow_period=26, signal_period=9)
histogram = macd_line - signal_line
Average Directional Index (ADX)¶
from financelib.trading.algo_trade import adx
result = adx(high, low, close, period=14)
# Values > 25 indicate strong trend
Aroon¶
Momentum Indicators¶
Relative Strength Index (RSI)¶
from financelib.trading.algo_trade import rsi
result = rsi(close_prices, period=14)
# > 70: overbought, < 30: oversold
Stochastic Oscillator¶
from financelib.trading.algo_trade import stochastic
k_line, d_line = stochastic(high, low, close, k_period=14, d_period=3)
Williams %R¶
from financelib.trading.algo_trade import williams_r
result = williams_r(high, low, close, period=14)
# Above -20: overbought, Below -80: oversold
Commodity Channel Index (CCI)¶
Volatility Indicators¶
Bollinger Bands¶
from financelib.trading.algo_trade import bollinger_bands
upper, middle, lower = bollinger_bands(close_prices, period=20, std_dev=2)
Average True Range (ATR)¶
Full Example¶
from financelib import Stock
from financelib.trading.algo_trade import rsi, macd, bollinger_bands, sma
stock = Stock("THYAO.IS")
df = stock.get_historical_data(period="6mo")
close = df["Close"]
high = df["High"]
low = df["Low"]
# Calculate multiple indicators
rsi_val = rsi(close).iloc[-1]
macd_line, signal = macd(close)
upper, middle, lower = bollinger_bands(close)
ma50 = sma(close, period=50)
print(f"RSI: {rsi_val:.1f}")
print(f"MACD: {macd_line.iloc[-1]:.4f}")
print(f"Price vs BB: {close.iloc[-1]:.2f} (Upper: {upper.iloc[-1]:.2f}, Lower: {lower.iloc[-1]:.2f})")
print(f"SMA50: {ma50.iloc[-1]:.2f}")