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
0
Tracking Error
0
Treynor Ratio
0
Total Fees
$0.00
Estimated Strategy Capacity
$0
Lowest Capacity Asset
Portfolio Turnover
0%
# region imports
from AlgorithmImports import *
# endregion
import numpy as np

sec = "SPY"

class Consolidatortest(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2013, 10, 7)  # Set Start Date
        self.SetEndDate(2013, 10, 11)  # Set End Date
        self.SetCash(100000)  # Set Strategy Cash
        self.security = self.AddEquity(sec, Resolution.Minute)

        # 15 minute consolidator
        self.Consolidate(self.security.Symbol, timedelta(minutes=15), self.OnDataConsolidated15)
              
        # Manual 24x 15min SMA (not updated automatically)
        self.SMA15 = SimpleMovingAverage(self.security.Symbol,24)

        # RollingWindow of 15min SMA conolidated data
        self.SMAWin15 = RollingWindow[IndicatorDataPoint](24)

        self.SetWarmUp(timedelta(days = 1))


    def OnDataConsolidated15(self, bar):     
        if self.IsWarmingUp: return
        # manually update the SMA15 with the close price & endtime of the current bar
        self.SMA15.Update(bar.EndTime, bar.Close)
        # manually update the SMA15 rollingwindow with the latest SMA15 value
        if self.SMA15.IsReady:
            self.SMAWin15.Add(self.SMA15)


    def OnData(self, data: Slice):        
        #check if SMA is ready, if not, exit
        if not self.SMAWin15.IsReady:
            return
        
        if not self.Portfolio.Invested:
            if self.SMAWin15[0] > self.SMAWin15[23]:
                self.Debug(str(self.SMAWin15[23]))