Spaces:
Running
Running
File size: 1,539 Bytes
4707543 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
import pandas as pd
def calculate_macd(prices, fast_length=12, slow_length=26, signal_length=9):
"""
Calculates the Moving Average Convergence Divergence (MACD) along with the Signal line.
Parameters:
- prices (pd.Series): A pandas Series containing the stock's closing prices.
- fast_length (int): The length of the fast EMA. Defaults to 12.
- slow_length (int): The length of the slow EMA. Defaults to 26.
- signal_length (int): The length of the signal line. Defaults to 9.
Returns:
- pd.DataFrame: A DataFrame containing the MACD, Signal line, and MACD Histogram.
"""
# Calculate the Fast and Slow EMAs
ema_fast = prices.ewm(span=fast_length, adjust=False).mean()
ema_slow = prices.ewm(span=slow_length, adjust=False).mean()
# Calculate the MACD and Signal line
macd = ema_fast - ema_slow
signal_line = macd.ewm(span=signal_length, adjust=False).mean()
macd_histogram = macd - signal_line
macd_df = pd.DataFrame(data={
'MACD': macd,
'Signal_Line': signal_line,
'MACD_Histogram': macd_histogram
})
return macd_df
if __name__ == "__main__":
# Example usage
data = {'Close': [22, 24, 23, 25, 26, 28, 27, 29, 30, 32, 31, 33]}
prices = pd.Series(data['Close'])
# User-defined parameters for MACD
fast_length = 12
slow_length = 26
signal_length = 9
# Calculate MACD
macd_df = calculate_macd(prices, fast_length, slow_length, signal_length)
print(macd_df)
|