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.097
Tracking Error
0.217
Treynor Ratio
0
Total Fees
$0.00
class VerticalTransdimensionalCoreWave(QCAlgorithm):

    def Initialize(self):
        
        self.SetStartDate(2020,8,24)
        self.SetEndDate(2020, 10,5)
        self.TQQQ = self.AddEquity("TQQQ", Resolution.Minute)
        self.SetCash(10000)  # Set Strategy Cash
        self.SetWarmUp(200)
        
        self.Firststock = "TQQQ"
        
        #Indicators that can be changed
        self.FirstHMAPeriod = 25
        #self.FirstBuyIndicator = self.GetParameter("FirstBuyIndicator")
        #self.FirstSellIndicator = self.GetParameter("FirstSellIndicator")
        self.ShortEMA = 25
        self.LongEMA = 50
        self.CyclePeriod = 10
        
        self.Firsthma = self.HMA(self.Firststock, self.FirstHMAPeriod, Resolution.Minute) #Initializing the Hull Moving Average of the First Stock
        self.FirstSchaff = self.STC(self.Firststock, self.CyclePeriod, self.ShortEMA, self.LongEMA, MovingAverageType.Exponential) #Initializing the Schaff Trend Cycle Indicator on the First Stock
        self.FirstSchaff.Updated += self.SchaffUpdated
        self.SchaffWindow = RollingWindow[IndicatorDataPoint](3)
        
        self.window = RollingWindow[TradeBar](2)
        
    
        #Plotting****************************************************************
        stockPlot = Chart("Trade Plot")
        stockPlot.AddSeries(Series("Price", SeriesType.Line, 0))
        stockPlot.AddSeries(Series("Buy", SeriesType.Scatter, 0))
        stockPlot.AddSeries(Series("Sell", SeriesType.Scatter, 0))
        stockPlot.AddSeries(Series("FirstHMA", SeriesType.Line, 0))
        self.AddChart(stockPlot)
        
    def SchaffUpdated(self, sender, updated):
        self.SchaffWindow.Add(updated)
    
    def OnData(self, data): #Where actions take place and you enter in the criteria to follow
        
        if self.IsWarmingUp: return #warming up the data, starts running the algorithm before the actual start data
        if not (self.SchaffWindow.IsReady and self.window.IsReady): return
        
        self.window.Add(self.CurrentSlice.Bars[self.Firststock].Close)
     
        one = self.SchaffWindow[0]
        two = self.SchaffWindow[1]
    
        #First Stock Buy Action Area
        if self.SchaffWindow[0] > 25 and self.SchaffWindow[1]< 25:
            if (not self.Portfolio.Invested):
                self.SetHoldings(self.Firststock, 1, True)
                self.Plot("Trade Plot", "Buy", data[self.Firststock].Value)
        
        #First Stock Sell Action Area
        if self.SchaffWindow[0] < 75 and self.SchaffWindow[1] > 75:
            if (self.Portfolio.Invested):
                self.Liquidate(self.Firststock)
                self.Plot("Trade Plot", "Sell", data[self.Firststock].Value)
        
        #Plotting******************************************************************
        self.Plot("Trade Plot", "Price", data[self.Firststock].Close)
        self.Plot("Trade Plot", "FirstHMA", self.Firsthma.Current.Value)
        self.Plot("Indicator", "FirstSchaff", self.FirstSchaff.Current.Value)