Overall Statistics |
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio -9.062 Tracking Error 0.055 Treynor Ratio 0 Total Fees $0.00 |
class Sample(QCAlgorithm): def Initialize(self): self.SetStartDate(2020, 12, 1) self.SetCash(100000) self.strategies = {} self.AddUniverse(self.selection_coarse) def selection_coarse(self, coarse): selected = [ x for x in coarse if x.HasFundamentalData and (x.Price >= 20) ] dollar_volume = sorted(selected, key=lambda x: x.DollarVolume, reverse=True) top = dollar_volume[:5] symbols = [x.Symbol for x in top] return symbols def OnSecuritiesChanged(self, changes): for security in changes.AddedSecurities: symbol = security.Symbol if symbol not in self.strategies: self.strategies[symbol] = Strategy(self, symbol) for security in changes.RemovedSecurities: symbol = security.Symbol if symbol in self.strategies: strategy = self.strategies.pop(symbol, None) self.SubscriptionManager.RemoveConsolidator(symbol, strategy.consolidator_intraday) def OnData(self, data): pass class Strategy: def __init__(self, qc, symbol): self.qc = qc self.symbol = symbol self.consolidator_intraday = TradeBarConsolidator(timedelta(5)) self.consolidator_intraday.DataConsolidated += self.handler_intraday self.qc.SubscriptionManager.AddConsolidator(self.symbol, self.consolidator_intraday) self._ema_intraday = ExponentialMovingAverage(8) self.ema_intraday = RollingWindow[ExponentialMovingAverage](5) # HISTORY PULL TO UPDATE CONSOLIDATOR self.history = self.qc.History(self.symbol, 300).loc[self.symbol] for bar in self.history.itertuples(): tradebar = TradeBar(bar.Index, self.symbol, bar.open, bar.high, bar.low, bar.close, bar.volume, timedelta(minutes=1)) self.consolidator_intraday.Update(tradebar) # CHECK IF INDICATOR READY if self._ema_intraday.IsReady: self.qc.Debug(f'{symbol} - Indicator Ready') else: self.qc.Debug(f'{symbol} - Indicator Not Ready') def handler_intraday(self, sender, bar): self._ema_intraday.Update(bar.EndTime, bar.Close) self.ema_intraday.Add(self._ema_intraday)