How would I update the value for self.macd?
Would I use self.Signal.Current.Value, self.Fast.Current.Value, self.MovingAverageConvergenceDivergence.Current.Value?
Would I have to set-up a MACD history as well and get the values from there?I've done it before using a single stock like so:#Decleared in Initilize self.macd_3 = self.MACD(self.syl, 12, 26, Resolution.Daily) #Macd_3 Bar Data self.macd_3.Updated += self.MacdUpdated self.macd3Win = RollingWindow[IndicatorDataPoint](12) def MacdUpdated(self, sender, updated): '''Adds updated values to rolling window''' self.macd3Win.Add(updated) But since I want to use a universe and cant initilize in the AssetData because it does not take the QCAlgorithm class
Alexandre Catarino
Hi tom vang ,
Sorry about the wait.
In the algorithm you shared, the MACD is updated by SymbolData.update that is called in OnData.
Since it is manually updating the indicators, it doesn't need to create them using the helper method (e.g., self.MACD), but it would be possible by passing the algorithm as a SymbolData parameter:
self.universe[s.Symbol] = AssetData(self, s.Symbol, history) class AssetData(object): def __init__(self, algorithm, symbol, history): self.macd = algorithm.MACD(symbol,3,6,9,MovingAverageType.Exponential)
If we want to save the history of the MACD attributes, we can use the following code:
# Indicators+Universe Demonstration class AssetData(object): def __init__(self, symbol, history): self.std = StandardDeviation(30) self.macd = MovingAverageConvergenceDivergence(3,6,9,MovingAverageType.Exponential) self.macd.Updated += self.MacdUpdated self.macd3Win = { 'MACD': RollingWindow[IndicatorDataPoint](12), 'Signal': RollingWindow[IndicatorDataPoint](12), 'Fast': RollingWindow[IndicatorDataPoint](12) } for bar in history.itertuples(): self.update(bar.Index[1], bar.close) def MacdUpdated(self, sender, datapoint): self.macd3Win['MACD'].Add(datapoint) self.macd3Win['Signal'].Add(sender.Signal.Current) self.macd3Win['Fast'].Add(sender.Fast.Current)
Tom vang
The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by QuantConnect. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. QuantConnect makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances. All investments involve risk, including loss of principal. You should consult with an investment professional before making any investment decisions.
To unlock posting to the community forums please complete at least 30% of Boot Camp.
You can continue your Boot Camp training progress from the terminal. We hope to see you in the community soon!