Jared Broad, This is a follow-up to our discussion in Slack. Thanks so much for your response.

Is it possible, using history, rolling window, or something else, to select Universe based on whether today was a hammer at end of day?

One of my first attempts at this was based on the EMA Universe Selection tutorial in the Bootcamp. Here's a version of that attempt: this is giving me a bunch of Please register to receive data for symbol... errors:

class HammersUniverse(QCAlgorithm): def Initialize(self): self.SetStartDate(2020, 2, 20) self.SetCash(10000) self.UniverseSettings.Resolution = Resolution.Daily self.AddUniverse(self.CoarseSelectionFunction) self.hammers = { } def CoarseSelectionFunction(self, universe): selected = [] universe = sorted(universe, key=lambda c: c.DollarVolume, reverse=True) # If I only want US stocks, is this the correct route? universe = [c for c in universe if c.Price > 10 and c.Market == 'usa'][:10] for security in universe: symbol = security.Symbol if symbol not in self.hammers: history = self.History(symbol, 1, Resolution.Daily) self.hammers[symbol] = SelectionData(self, history, symbol) self.hammers[symbol].update(security.Time, security.Price) if self.hammers[symbol].is_ready(): _hammer_value = self.hammers[symbol].Current.Value if _hammer_value == 1 or _hammer_value == -1: selected.append(symbol) return selected[:10] def OnSecuritiesChanged(self, changes): for security in changes.RemovedSecurities: # self.Liquidate(security.Symbol) self.Debug(f"Added: { security.Symbol }") for security in changes.AddedSecurities: # self.SetHoldings(security.Symbol, 0.10) self.Debug(f"Removed: { security.Symbol }") class SelectionData(): def __init__(self, algo, history, symbol): # Could not call CandleStickPatterns directly like we do EMA in the Bootcamp, so I pass the # Also, for Hammer, I needed the symbol we are working with. # Is this a good way to go? self.hammer = algo.CandlestickPatterns.Hammer(symbol, Resolution.Daily) for bar in history.itertuples(): tradebar = TradeBar(bar.Index[1], bar.Index[0], bar.open, bar.high, bar.low, bar.close, bar.volume) self.hammer.Update(tradebar) def is_ready(self): return self.hammer.IsReady def update(self, time, price): self.hammer.Update(time, price)

I diverged from this based on some forum posts I'd seen, but none speak to this specific need directly, so I have been piecing things together).

In Slack, you'd mentioned that I am using the helper method, and that I need to use the actual class--the helpers are normally capitalized, but in the candle sections are lowercase. Where might I find the documentation on this? You are referring to the call to

algo.CandlestickPatterns.Hammer(symbol, Resolution.Daily)

, correct?

Author