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 -5.424 Tracking Error 0.087 Treynor Ratio 0 Total Fees $0.00 |
class DynamicOptimizedContainmentField(QCAlgorithm): def Initialize(self): self.SetStartDate(2020, 11, 20) # Set Start Date self.SetCash(100000) # Set Strategy Cash self.UniverseSettings.Resolution = Resolution.Daily self.AddUniverse(self.SelectCoarse) self.symbols = {} def SelectCoarse(self, coarse): sortedCoarse = sorted(coarse, key=lambda c:c.DollarVolume, reverse=True) return [c.Symbol for c in sortedCoarse][:10] def OnSecuritiesChanged(self, changes): for security in changes.AddedSecurities: symbol = security.Symbol if symbol not in self.symbols: self.symbols[symbol] = SymbolData(self, symbol) for security in changes.RemovedSecurities: symbol = security.Symbol if symbol in self.symbols: symbolData = self.symbols.pop(symbol, None) self.SubscriptionManager.RemoveConsolidator(symbol, symbolData.consolidator) def OnData(self,data): d = self.Time.date() symbol = list(self.symbols.keys())[0] symbolData=self.symbols[symbol] if symbolData.IsReady : self.Debug(symbolData.Time) self.Debug(symbolData.Close) self.Debug(symbolData.RSI.Current.Value) class SymbolData: def __init__(self, algorithm, symbol): self.algorithm = algorithm self.symbol = symbol self.consolidator = TradeBarConsolidator(timedelta(days=7)) self.consolidator.DataConsolidated += self.OnDataConsolidated algorithm.SubscriptionManager.AddConsolidator(symbol, self.consolidator) self.Time=None self.Close=0 self.RSI=SimpleMovingAverage(2) self.IsReady=False history = algorithm.History(symbol,14, Resolution.Daily).loc[symbol] for idx, bar in history.iterrows(): tradeBar = TradeBar(idx, symbol, bar.open, bar.high, bar.low, bar.close, bar.volume) self.consolidator.Update(tradeBar) def OnDataConsolidated(self, sender, bar): self.algorithm.Debug(f"Data Consolidatoed for {self.symbol} at {bar.EndTime} with bar: {bar}") self.Close=bar.Close self.Time=bar.Time self.RSI.Update(IndicatorDataPoint(bar.Time, bar.Close)) self.IsReady = self.RSI.IsReady