@@ -48,12 +48,17 @@ def macd(
4848
4949 if isinstance (data , PdDataFrame ):
5050 # Calculate the short-term and long-term EMAs
51- data = ema (data , source_column , short_period , f"EMA_{ short_period } " )
52- data = ema (data , source_column , long_period , f"EMA_{ long_period } " )
51+ data = ema (
52+ data , source_column , short_period , f"EMA_MACD_TEMP_{ short_period } "
53+ )
54+ data = ema (
55+ data , source_column , long_period , f"EMA_MACD_TEMP_{ long_period } "
56+ )
5357
5458 # Calculate the MACD line
5559 data [macd_column ] = \
56- data [f"EMA_{ short_period } " ] - data [f"EMA_{ long_period } " ]
60+ data [f"EMA_MACD_TEMP_{ short_period } " ] \
61+ - data [f"EMA_MACD_TEMP_{ long_period } " ]
5762
5863 # Calculate the Signal Line
5964 data = ema (data , macd_column , signal_period , signal_column )
@@ -62,7 +67,12 @@ def macd(
6267 data [histogram_column ] = data [macd_column ] - data [signal_column ]
6368
6469 # Delete the temporary EMA columns
65- data = data .drop (columns = [f"EMA_{ short_period } " , f"EMA_{ long_period } " ])
70+ data = data .drop (
71+ columns = [
72+ f"EMA_MACD_TEMP_{ short_period } " ,
73+ f"EMA_MACD_TEMP_{ long_period } "
74+ ]
75+ )
6676 return data
6777 elif isinstance (data , pl .DataFrame ):
6878 # Polars implementation
@@ -71,19 +81,22 @@ def macd(
7181 data ,
7282 source_column ,
7383 short_period ,
74- f"EMA_ { short_period } "
75- )[f"EMA_ { short_period } " ],
84+ f"EMA_MACD_TEMP_ { short_period } "
85+ )[f"EMA_MACD_TEMP_ { short_period } " ],
7686 ema (
7787 data ,
7888 source_column ,
7989 long_period ,
80- f"EMA_ { long_period } "
81- )[f"EMA_ { long_period } " ]
90+ f"EMA_MACD_TEMP_ { long_period } "
91+ )[f"EMA_MACD_TEMP_ { long_period } " ]
8292 ])
8393
8494 data = data .with_columns (
8595 (
86- pl .col (f"EMA_{ short_period } " ) - pl .col (f"EMA_{ long_period } " )
96+ pl .col (
97+ f"EMA_MACD_TEMP_{ short_period } " )
98+ - pl .col (f"EMA_MACD_TEMP_{ long_period } "
99+ )
87100 ).alias (macd_column )
88101 )
89102
@@ -98,7 +111,12 @@ def macd(
98111 )
99112
100113 # Delete the temporary EMA columns
101- data = data .drop ([f"EMA_{ short_period } " , f"EMA_{ long_period } " ])
114+ data = data .drop (
115+ [
116+ f"EMA_MACD_TEMP_{ short_period } " ,
117+ f"EMA_MACD_TEMP_{ long_period } "
118+ ]
119+ )
102120 return data
103121 else :
104122 raise PyIndicatorException (
0 commit comments