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