Examples

Basic Usage

Simple Moving Average

Calculate a 20-period Simple Moving Average:

import pandas as pd
import rhoa

# Load your price data
df = pd.read_csv('your_data.csv')
prices = df['close']

# Calculate 20-period SMA
sma_20 = prices.indicators.sma(window_size=20)
print(sma_20.head())

RSI (Relative Strength Index)

Calculate the RSI indicator:

# Calculate 14-period RSI
rsi = prices.indicators.rsi(window_size=14)

# Find overbought conditions (RSI > 70)
overbought = rsi > 70
print(f"Overbought periods: {overbought.sum()}")

MACD Indicator

Calculate MACD with custom parameters:

# Calculate MACD with default parameters (12, 26, 9)
macd_data = prices.indicators.macd()

# Access individual components
macd_line = macd_data['macd']
signal_line = macd_data['signal']
histogram = macd_data['histogram']

# Find bullish crossovers (MACD crosses above signal)
bullish_crossover = (macd_line > signal_line) & (macd_line.shift(1) <= signal_line.shift(1))

Bollinger Bands

Calculate Bollinger Bands:

# Calculate Bollinger Bands (20-period, 2 standard deviations)
bb = prices.indicators.bollinger_bands(window_size=20, num_std=2.0)

# Check for price touching upper band
touching_upper = prices >= bb['upper_band']

# Check for price touching lower band
touching_lower = prices <= bb['lower_band']

Multiple Indicators

Combine multiple indicators for analysis:

# Calculate multiple indicators
sma_50 = prices.indicators.sma(window_size=50)
rsi_14 = prices.indicators.rsi(window_size=14)
bb = prices.indicators.bollinger_bands()

# Create a comprehensive analysis DataFrame
analysis = pd.DataFrame({
    'price': prices,
    'sma_50': sma_50,
    'rsi': rsi_14,
    'bb_upper': bb['upper_band'],
    'bb_middle': bb['middle_band'],
    'bb_lower': bb['lower_band']
})

print(analysis.head())

Advanced Usage with High/Low/Close Data

For indicators that require OHLC data:

# Assuming you have OHLC data
high = df['high']
low = df['low']
close = df['close']

# Average True Range
atr = close.indicators.atr(high, low, window_size=14)

# Stochastic Oscillator
stoch = close.indicators.stochastic(high, low, k_window=14, d_window=3)
k_percent = stoch['%K']
d_percent = stoch['%D']

# ADX (Average Directional Index)
adx_data = close.indicators.adx(high, low, window_size=14)
adx = adx_data['ADX']
plus_di = adx_data['+DI']
minus_di = adx_data['-DI']