| 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 -1.028 Tracking Error 0.166 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset |
class MinimalExample(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2021, 5, 5) # Set Start Date
self.SetCash(100000) # Set Strategy Cash
self.spy = self.AddEquity("SPY", Resolution.Minute)
self.window = RollingWindow[TradeBar](5)
resolutionInTimeSpan = Extensions.ToTimeSpan(Resolution.Daily)
self.consolidator = TradeBarConsolidator(resolutionInTimeSpan)
self.consolidator.DataConsolidated += self.OnDataConsolidated
self.SubscriptionManager.AddConsolidator(self.spy.Symbol, self.consolidator)
self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.BeforeMarketClose("SPY", 1), self.ClosingBar)
self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.AfterMarketOpen("SPY", 1), self.OpeningBar)
def OnDataConsolidated(self, sender, bar):
self.window.Add(bar)
def ClosingBar(self):
self.Log(f"##### Close {self.Time}")
if self.Portfolio.Invested:
self.Liquidate()
def LogBar(self, bar):
return f"O: {bar.Open}, H: {bar.High}, L: {bar.Low}, C: {bar.Close}, V: {bar.Volume}"
def OpeningBar(self):
self.Log(f"##### Open {self.Time}")
if self.window.IsReady:
current_price = self.Securities[self.spy.Symbol].Price
self.Log(f"{self.Time}: Open@{current_price}")
self.Log(f"D-1 {self.window[0].Time} - {self.window[0].EndTime}: {self.LogBar(self.window[0])}")
self.Log(f"D-2 {self.window[1].Time} - {self.window[1].EndTime}: {self.LogBar(self.window[1])}")