Spaces:
Sleeping
Sleeping
import matplotlib.pyplot as plt | |
import numpy as np | |
# HELPER FUNCTIONS: | |
def plot_column(dataframe, column_name): | |
plt.figure(figsize=(6, 3)) | |
plt.plot(dataframe[column_name]) | |
plt.title(f"Plot of {column_name}") | |
plt.xlabel("Index") | |
plt.ylabel(column_name) | |
plt.grid(True) | |
return plt | |
# Calculate EMA | |
def ema(close, period=20): | |
return close.ewm(span=period, adjust=False).mean() | |
# Calculate RSI | |
def rsi(close, period=14): | |
delta = close.diff() | |
gain, loss = delta.copy(), delta.copy() | |
gain[gain < 0] = 0 | |
loss[loss > 0] = 0 | |
avg_gain = gain.rolling(period).mean() | |
avg_loss = abs(loss.rolling(period).mean()) | |
rs = avg_gain / avg_loss | |
rsi = 100.0 - (100.0 / (1.0 + rs)) | |
return rsi | |
# Calculate MACD | |
def macd(close, fast_period=12, slow_period=26, signal_period=9): | |
fast_ema = close.ewm(span=fast_period, adjust=False).mean() | |
slow_ema = close.ewm(span=slow_period, adjust=False).mean() | |
macd_line = fast_ema - slow_ema | |
signal_line = macd_line.ewm(span=signal_period, adjust=False).mean() | |
histogram = macd_line - signal_line | |
return macd_line | |
# Calculate OBV | |
def obv(close, volume): | |
obv = np.where( | |
close > close.shift(), volume, np.where(close < close.shift(), -volume, 0) | |
).cumsum() | |
return obv | |