Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| import numpy as np | |
| def calculate_sma(data, window): | |
| """ | |
| Tính toán Simple Moving Average (SMA) | |
| Args: | |
| data: Series dữ liệu giá | |
| window: Cửa sổ tính toán | |
| Returns: | |
| Series chứa giá trị SMA | |
| """ | |
| return data.rolling(window=window).mean() | |
| def calculate_ema(data, window): | |
| """ | |
| Tính toán Exponential Moving Average (EMA) | |
| Args: | |
| data: Series dữ liệu giá | |
| window: Cửa sổ tính toán | |
| Returns: | |
| Series chứa giá trị EMA | |
| """ | |
| return data.ewm(span=window).mean() | |
| def calculate_rsi(data, window=14): | |
| """ | |
| Tính toán Relative Strength Index (RSI) | |
| Args: | |
| data: Series dữ liệu giá | |
| window: Cửa sổ tính toán (mặc định 14) | |
| Returns: | |
| Series chứa giá trị RSI | |
| """ | |
| delta = data.diff() | |
| gain = (delta.where(delta > 0, 0)).rolling(window=window).mean() | |
| loss = (-delta.where(delta < 0, 0)).rolling(window=window).mean() | |
| rs = gain / loss | |
| return 100 - (100 / (1 + rs)) | |
| def add_technical_indicators(price_data): | |
| """ | |
| Thêm các chỉ báo kỹ thuật vào DataFrame giá | |
| Args: | |
| price_data: DataFrame chứa dữ liệu giá | |
| Returns: | |
| DataFrame với các chỉ báo kỹ thuật đã được thêm vào | |
| """ | |
| df = price_data.copy() | |
| # Thêm các chỉ báo | |
| df['SMA_20'] = calculate_sma(df['close'], 20) | |
| df['SMA_50'] = calculate_sma(df['close'], 50) | |
| df['EMA_12'] = calculate_ema(df['close'], 12) | |
| df['EMA_26'] = calculate_ema(df['close'], 26) | |
| df['RSI'] = calculate_rsi(df['close']) | |
| return df |