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
-1.503
Tracking Error
0.102
Treynor Ratio
0
Total Fees
$0.00
Estimated Strategy Capacity
$0
Lowest Capacity Asset
class DeterminedRedCat(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2021, 5, 1)
        self.SetCash(100000)
        
        self.btc = self.AddCrypto("BTCUSD", Resolution.Minute, Market.GDAX).Symbol
        
        self.fourHourWindow = RollingWindow[TradeBar](2)
        
        fourHourConsolidator = TradeBarConsolidator(timedelta(hours=4))
        fourHourConsolidator.DataConsolidated += self.FourHourBarHandler
        self.SubscriptionManager.AddConsolidator(self.btc, fourHourConsolidator)
        
        self.macd = MovingAverageConvergenceDivergence(12, 26, 9, MovingAverageType.Exponential)
        self.RegisterIndicator(self.btc, self.macd, fourHourConsolidator)
        
        self.dmi = AverageDirectionalIndex(14)
        self.RegisterIndicator(self.btc, self.dmi, fourHourConsolidator)
        
        self.emaTwelve = ExponentialMovingAverage(12)
        self.RegisterIndicator(self.btc, self.emaTwelve, fourHourConsolidator)
        

        self.SetWarmup(timedelta(hours=140))



    def OnData(self, data):
        if self.IsWarmingUp or self.btc not in data or not self.fourHourWindow.IsReady:
            return


    def FourHourBarHandler(self, sender, bar):
        self.fourHourWindow.Add(bar)
        
        if not self.macd.IsReady or not self.dmi.IsReady or not self.emaTwelve.IsReady or not self.fourHourWindow.IsReady:
            return
        
        self.Debug("fourHourWindow close: " + str(self.fourHourWindow[0].Close) + " " + str(self.fourHourWindow[0].Time))
        self.Debug("MACD: " + str(self.macd.Current.Value) + " Histogram: " + str(self.macd.Histogram.Current.Value))
        self.Debug("ADX: " + str(self.dmi.Current.Value) + " DMI+: " + str(self.dmi.PositiveDirectionalIndex.Current.Value) + " DMI-: " + str(self.dmi.NegativeDirectionalIndex.Current.Value))
        self.Debug("emaTwelve: " + str(self.emaTwelve.Current.Value))