class CombinedAlgorithm(QCAlgorithm):
def Initialize(self):
# INITIALIZE
self.SetStartDate(2020, 8, 1) # Set Start Date
self.SetEndDate(2021, 12, 12)
self.SetCash(10000) # Set Strategy Cash
self.symbol = self.AddEquity('TSLA', Resolution.Minute)
self.symbol.SetDataNormalizationMode(DataNormalizationMode.Raw)
# SCHEDULED EVENTS
self.Schedule.On(self.DateRules.WeekStart(self.symbol.Symbol), self.TimeRules.AfterMarketOpen(self.symbol.Symbol), self.WeekStart)
self.Schedule.On(self.DateRules.WeekEnd(self.symbol.Symbol), self.TimeRules.BeforeMarketClose(self.symbol.Symbol), self.WeekEnd)
self.Schedule.On(self.DateRules.EveryDay(self.symbol.Symbol), self.TimeRules.BeforeMarketClose(self.symbol.Symbol, 5), self.ParabolicBarCheck)
self.SetWarmUp(timedelta(days = 70))
# CONSOLIDATED DATA
# ATR
atr_consolidator = TradeBarConsolidator(timedelta(days=1))
self.SubscriptionManager.AddConsolidator(self.symbol.Symbol, atr_consolidator)
atr_consolidator.DataConsolidated += self.ATRDayBar
self.atrBarWindow = RollingWindow[TradeBar](14)
# Daily Bars
dailyConsolidator = TradeBarConsolidator(timedelta(days=1))
self.SubscriptionManager.AddConsolidator(self.symbol.Symbol, dailyConsolidator)
dailyConsolidator.DataConsolidated += self.OnTwoDayBar
self.dayBarWindow = RollingWindow[TradeBar](2)
# Weekly Bars
weeklyConsolidator = TradeBarConsolidator(Calendar.Weekly)
self.SubscriptionManager.AddConsolidator(self.symbol.Symbol, weeklyConsolidator)
weeklyConsolidator.DataConsolidated += self.OnTwoWeekBar
self.weekBarWindow = RollingWindow[TradeBar](2)
# CUSTOM CHART
log_plot = Chart('Custom Chart')
log_plot.AddSeries(Series('Orders',SeriesType.Scatter,0))
log_plot.AddSeries(Series('Symbol Price', SeriesType.Line,0))
self.AddChart(log_plot)
def OnData(self, data):
if self.IsWarmingUp:
return
# ENTRY AND EXIT CODE HERE