Overall Statistics
Total Trades
0
Average Win
0%
Average Loss
0%
Compounding Annual Return
14.295%
Drawdown
5.600%
Expectancy
0
Net Profit
0.587%
Sharpe Ratio
-0.439
Probabilistic Sharpe Ratio
35.580%
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
-0.075
Beta
0.319
Annual Standard Deviation
0.183
Annual Variance
0.033
Information Ratio
-0.168
Tracking Error
0.381
Treynor Ratio
-0.252
Total Fees
$0.00
Estimated Strategy Capacity
$0
Lowest Capacity Asset
from System.Drawing import Color

class TestAlgorithm(QCAlgorithm):
    def Initialize(self):
        self.SetStartDate(2021,9,1)
        self.SetEndDate(2021,9,16)
        self.SetCash("BTC", 1)
        self.btc = self.AddCrypto("BTCUSD", Resolution.Minute).Symbol #, fillDataForward = False)
        self.Consolidate("BTCUSD", timedelta(minutes=15), self.FifteenMinuteBarHandler)

            
        self.SetBrokerageModel(BrokerageName.GDAX, AccountType.Cash)
        self.SetWarmUp(25)
        self.smafast = self.SMA("BTCUSD", 1, Resolution.Daily)
        self.smaslow = self.SMA("BTCUSD", 3, Resolution.Daily)
        self.aroon = self.AROON("BTCUSD", 25, 25)
    
        #self.consolidator = QuoteBarConsolidator(self.TimeFrame)
        #self.consolidator.DataConsolidated += self.CustomHandler
        #self.SubscriptionManager.AddConsolidator(self.btc, self.consolidator)

        #self.Consolidate(btc.Symbol, timedelta(minutes=15), self.OnDataConsolidated)
        #self.Consolidate("BTCUSD", timedelta(minutes=30), self.ThirtyMinuteBarHandler)
        

        # create the 15-minutes data consolidator
        fifteenMinuteConsolidator = TradeBarConsolidator(timedelta(minutes=15))
        self.SubscriptionManager.AddConsolidator("BTCUSD", fifteenMinuteConsolidator)
        # register the 15-minute consolidated bar data to automatically update the indicator
        self.RegisterIndicator("BTCUSD", self.aroon, fifteenMinuteConsolidator)
    

        stockPlot = Chart("Trade Plot")
        stockPlot.AddSeries(Series('Price', SeriesType.Line, 0))
        stockPlot.AddSeries(Series('smafast', SeriesType.Line, 0))   
        stockPlot.AddSeries(Series('smaslow', SeriesType.Line, 0)) 
        stockPlot.AddSeries(Series('aroonup', SeriesType.Line, 1)) 
        stockPlot.AddSeries(Series('aroondown', SeriesType.Line, 1)) 
        self.AddChart(stockPlot)
    
    
    def FifteenMinuteBarHandler(self, consolidated):
        #self.Log(f"{consolidated.EndTime} >> fifteenMinuteBarHandler >> {consolidated.Close}") 
    
        if self.IsWarmingUp: return
        
        price = self.Securities["BTCUSD"].Price
        
        self.Plot("Trade Plot", "Price", price)
        self.Plot("Trade Plot", "smafast", self.smafast.Current.Value)
        self.Plot("Trade Plot", "smaslow", self.smaslow.Current.Value)
        self.Plot("Trade Plot", "aroonup", self.aroon.AroonUp.Current.Value)
        self.Plot("Trade Plot", "aroondown", self.aroon.AroonDown.Current.Value)
        
        
#    def OnData(self, data):        ...    
#