So I have created this custom class and relevant code like this - 

Search for "rsiSelectionData.update(sec.EndTime, sec.AdjustedPrice, sec.DollarVolume)".

 

While debugging, the debugger goes to this line, but nest step it goes to next line

"validBuyValues =  filter(lambda x : x.isBuyZone, self.stateData.values())"

Not sure why the debugger does not go into the custom update method?

I get the debt statements though. Any ideas? thank you

 

from Alphas.RsiAlphaModel import RsiAlphaModel from Execution.ImmediateExecutionModel import ImmediateExecutionModel from System import * from System.Collections.Generic import List from QuantConnect import * from QuantConnect.Algorithm import QCAlgorithm from QuantConnect.Data.UniverseSelection import * ''' Simple testing strategy so that find all stocks for which the RSI is more than 20 Buy. - if RSI of today is more than 25, but yesterday was less than 25 Liquidate - if RSI of open positions goes above 75 SELL - if RSI today is less than 75 but yesterday was more than 75 Liquidate - if RSI of open positions goes below 25 ''' class ResistanceVentralThrustAssembly(QCAlgorithm): def Initialize(self): self.SetStartDate(2019, 11, 20) # Set Start Date self.SetEndDate(2019, 11, 21) self.SetCash(10000) # Set Strategy Cash # Strategy is for Daily data self.UniverseSettings.Resolution = Resolution.Daily #self.AddUniverse(self.MyCoarseFilterFunction, self.FineSelectionFunction) self.AddUniverse(self.MyCoarseFilterFunction) self.SetWarmUp(timedelta(20)) self.AddAlpha(RsiAlphaModel(60, Resolution.Daily)) self.SetExecution(ImmediateExecutionModel()) self.SetPortfolioConstruction(InsightWeightingPortfolioConstructionModel()) self.SetRiskManagement(TrailingStopRiskManagementModel(0.03)) self.__numberOfSymbols = 10 self.stateData = {} def OnData(self, data): '''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here. Arguments: data: Slice object keyed by symbol containing the stock data ''' # if not self.Portfolio.Invested: # self.SetHoldings("SPY", 1) pass def MyCoarseFilterFunction(self, coarse): # Get all symbols by dollar volume sortedByDollarVolume = sorted(coarse, key=lambda x: x.DollarVolume, reverse=True) filtered = [x for x in sortedByDollarVolume if x.Price > 10 ][:5] for sec in filtered: if sec.Symbol not in self.stateData: self.stateData[sec.Symbol] = SelectionData(self, sec.Symbol, 14) rsiSelectionData = self.stateData[sec.Symbol] rsiSelectionData.update(sec.EndTime, sec.AdjustedPrice, sec.DollarVolume) validBuyValues = filter(lambda x : x.isBuyZone, self.stateData.values()) return [x.Symbol for x in filtered[:1] ] class SelectionData(object): def __init__(self, algo, symbol, period): self.symbol = symbol self.rsi = ExponentialMovingAverage(period) self.isBuyZone = False self.volume = 0 self.algo = algo def update(self, time, price, volume): self.algo.Debug('test') self.volume = volume self.rsi.Update(time, price) self.algo.Debug('rsi----') self.algo.Debug(self.rsi)

 

Author