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
2.486
Tracking Error
0.23
Treynor Ratio
0
Total Fees
$0.00
import pandas as pd

class OptimizedVerticalSplitter(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2021, 1, 2)  # Set Start Date
        self.SetCash(100000)  # Set Strategy Cash
        symbol = self.AddEquity("SPY", Resolution.Minute).Symbol

        self.rsi = RelativeStrengthIndex(5)
        self.ema9 = ExponentialMovingAverage(9)
        
        # create the 36-minutes data consolidator
        threeCountConsolidator = TradeBarConsolidator(timedelta(minutes=30))
        threeCountConsolidator.DataConsolidated += self.ConsolidationHandler
        self.SubscriptionManager.AddConsolidator(symbol, threeCountConsolidator)
        
        self.indicator_history = pd.DataFrame()
        
        history = self.History(symbol, 30*9, Resolution.Minute)
        if not history.empty and 'close' in history.columns:
            for i, (time, row) in enumerate(history.loc[symbol].iterrows()):
                if i % 30 == 0:
                    self.update_indicators(time, row.close)
                    
                    
    def update_indicators(self, time, value):
        if self.rsi.Update(time, value):
            self.indicator_history.loc[time, 'rsi'] = self.rsi.Current.Value
        
        if self.ema9.Update(time, value):
            self.indicator_history.loc[time, 'ema9'] = self.ema9.Current.Value
        
        self.indicator_history = self.indicator_history.iloc[-10:]
        
    
    def ConsolidationHandler(self, sender, consolidated):
        self.update_indicators(consolidated.EndTime, consolidated.Close)
        
        
    def OnData(self, data):
        if data.Time.minute == 1 or data.Time.minute == 31:
            self.Log(f"RSI: {self.rsi.Current.Value}   EMA: {self.ema9.Current.Value}")
    
    def OnEndOfAlgorithm(self):
        self.Log(f"Indicator History: {self.indicator_history.to_string()}")