diff --git a/zipline/pipeline/factors/technical.py b/zipline/pipeline/factors/technical.py index 77bda03e..bdbc49ae 100644 --- a/zipline/pipeline/factors/technical.py +++ b/zipline/pipeline/factors/technical.py @@ -718,13 +718,23 @@ class MovingAverageConvergenceDivergence(CustomFactor): hist: Difference between MACD and signal. (Divergence series) """ inputs = [USEquityPricing.close] - - params = {'fast_period': 12, - 'slow_period': 26, - 'signal_period': 9} - + params = ('fast_period', 'slow_period', 'signal_period') outputs = ('MACD', 'signal', 'hist') + def __new__(cls, + fast_period=12, + slow_period=26, + signal_period=9, + *args, + **kwargs): + return super(MovingAverageConvergenceDivergence, cls).__new__( + fast_period=fast_period, + slow_period=slow_period, + signal_period=signal_period, + window_length=slow_period + signal_period, + *args, **kwargs + ) + def calculate_macd(self, col, fast, slow, signal): try: macd, sig, hist = MACD(col,