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']