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
# region imports
from AlgorithmImports import *
from datetime import datetime
import numpy as np
# endregion

class FatBlackHamster(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2023, 1, 5)  # Set Start Date
        self.SetEndDate(2023, 1, 7) # Set end date
        self.SetCash(100000)  # Set Strategy Cash

        #Initialize SPY before using consolidator
        self.spy = self.AddEquity("SPY", Resolution.Minute).Symbol

        #Create rolling window with 2 indeces
        #self.rollingWindow = RollingWindow[TradeBar](2)

        # create consolidator for 2 minute, 
        twoMinConsolidator = TradeBarConsolidator(timedelta(minutes=2))
        #attach the event handler, which is a function that will be called each time we produce a new consolidated piece of data
        twoMinConsolidator.DataConsolidated += self.TwoMinBarHandler
        #This call adds the 2min consolidator to the manager to receive updates from the engine
        self.SubscriptionManager.AddConsolidator("SPY", twoMinConsolidator)

        #create SMA indicators
        self.sma5 = self.SMA(self.spy, 5)
        self.sma35 = self.SMA(self.spy, 35)

        #Register indicators 
        self.RegisterIndicator("SPY", self.sma5, twoMinConsolidator)
        self.RegisterIndicator("SPY", self.sma35, twoMinConsolidator)

        #create array to use later to compare ewo candles
        self.array = [0,0]

        #Warm up sma indicators
        self.SetWarmup(timedelta(days=35), Resolution.Minute)

        self.SetBenchmark("SPY")

    def OnData(self, data: Slice):
        pass
        #if not self.IsWarmingUp:
        
            #if certain part of strategy:
                #self.Debug(str(self.array[0]) + ", " + str(self.array[1]))
                #self.Debug("Buy Long")
                #self.Debug(str(self.Time))

            #elif other part of strategy:
                #self.Debug(str(self.array[0]) + ", " + str(self.array[1]))
                #self.Debug("Buy Short")
                #self.Debug(str(self.Time))
        
        #self.Debug(self.rollingWindow[0])

    def TwoMinBarHandler(self, sender, consolidated):
        #This is the event handler for 2min trade bar defined in Init().  Each time the consolidator produces a new
        #2 minute bar, this function will be called automatically.  The 'sender' parameter will be the instance of the 
        #IDataConsolidator that invoked the event, but will almost never need that

        #Add 2min info to rolling window (he had dif parameter)
        #self.rollingWindow.Add(consolidated)

        if not self.IsWarmingUp:

            #Make EWO value for current 2min window
            twoMinEWO = self.sma5.Current.Value - self.sma35.Current.Value

            #Throw it into array and pop value from 2 bars ago
            self.array.pop(0)
            self.array.append(twoMinEWO)
            #self.Debug(str(twoMinEWO))


            
            #self.Debug(str(self.Time))
            #self.Debug(str(self.sma5.Current.Value))
            #self.Debug(str(self.sma35.Current.Value))
            #self.Debug(str(self.array[0]) + ", " + str(self.array[1]))

            self.Plot("Benchmark", "5SMA", self.sma5.Current.Value)
            self.Plot("Benchmark", "35SMA", self.sma35.Current.Value)