Overall Statistics
Total Orders
0
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Start Equity
100000
End Equity
100000
Net Profit
0%
Sharpe Ratio
0
Sortino 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%
from AlgorithmImports import *

class TSLAFiveMinLateSession(QCAlgorithm):
    def Initialize(self):
        self.Debug("Initialize() called")

        start_dt = datetime(2025, 6, 23)
        end_dt = datetime(2025, 6, 30)

        self.Debug(f"Start Date: {start_dt.date()} | End Date: {end_dt.date()}")

        self.SetStartDate(start_dt)
        self.SetEndDate(end_dt)
        self.SetCash(100000)

        # Use positional arguments to enable extended market hours
        self.symbol = self.AddEquity("TSLA", Resolution.Minute, Market.USA, True, 0, True).Symbol

        # Call analysis immediately
        self.AnalyzeLateBars(start_dt, end_dt)

    def OnData(self, data: Slice):
        self.Debug("OnData() called")
        pass

    def AnalyzeLateBars(self, start_dt, end_dt):
        self.Debug("AnalyzeLateBars() called")

        history = self.History(self.symbol, start_dt, end_dt, Resolution.Minute)
        if history.empty:
            self.Debug("No history returned")
            return

        self.Debug(f"Total 1-min bars retrieved: {len(history)}")

        df = history.loc[self.symbol].reset_index()
        df = df[['time', 'open', 'high', 'low', 'close']]
        df = df.set_index('time')

        # Resample to 5-minute bars
        df_5min = df.resample('5T').agg({
            'open': 'first',
            'high': 'max',
            'low': 'min',
            'close': 'last'
        }).dropna()

        self.Debug(f"Total 5-min bars after resampling: {len(df_5min)}")

        # Filter between 3:55 PM and 5:30 PM
        filtered = df_5min.between_time("15:55", "17:30")

        self.Debug(f"Total filtered bars (15:55–17:30): {len(filtered)}")

        for time, row in filtered.iterrows():
            self.Debug(f"{time} | Open: {row['open']:.2f} | High: {row['high']:.2f} | "
                       f"Low: {row['low']:.2f} | Close: {row['close']:.2f}")