Overall Statistics
class RSIAlgorithm(QCAlgorithm):


    def Initialize(self):
        self.SetStartDate(2007, 1, 1)  
        self.SetEndDate(2019, 12, 30)  
        self.SetCash(10000)           
        EMA_Period    = 100
        RSI_Period    = 14            
        self.RSI_OB   = 70                
        self.RSI_OS   = 30                
        #self.Allocate = 0.25              
        
        self.spx = self.AddCfd("SPX500USD", Resolution.Daily, Market.Oanda)
        self.SetBrokerageModel(BrokerageName.OandaBrokerage)


        self.ema_spy = self.EMA("SPX500USD", EMA_Period)
        self.PSAR_NAS = self.PSAR("SPX500USD")
        self.rsi_spy = self.RSI("SPX500USD", RSI_Period)
        self.Ichi = self.ICHIMOKU("SPX500USD", 9, 26, 26, 52, 26, 26, Resolution.Daily)
        self.Ichi_Tenkan = self.Ichi.Tenkan.Current.Value


        self.SetWarmUp(RSI_Period)
        self.SetWarmUp(EMA_Period)

    def OnData(self, data):
        if self.IsWarmingUp:
            return
        
        if not self.Portfolio.Invested:
            if self.rsi_spy.Current.Value < self.RSI_OS and self.Securities["SPX500USD"].Close > self.ema_spy.Current.Value:
                self.SetHoldings("SPX500USD", 1)

           
        elif self.Portfolio.Invested:
            if self.Securities["SPX500USD"].Close < self.ema_spy.Current.Value:
                self.Liquidate("SPX500USD")
                #self.SetHoldings("BND", 1)