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 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 |
from collections import deque from datetime import datetime class BitfinexTest(QCAlgorithm): def Initialize(self): self.SetStartDate(2019,3,1) # Set Start Date self.SetEndDate(2019,3,5) self.SetCash(10000) # Set Strategy Cash self.SetBrokerageModel(BrokerageName.Bitfinex, AccountType.Margin) self.AddCrypto('BTCUSD', Resolution.Minute) self.SetBenchmark("BTCUSD") self.SetTimeZone(TimeZones.Utc) self.slowperiod = 60 self.qprice = deque(maxlen=5) self.qsma = deque(maxlen=5) self.qatr = deque(maxlen=5) self.warmupfinished = False self.consolidated5min = False consolidator = QuoteBarConsolidator(5) consolidator.DataConsolidated += self.OnDataConsolidated self.SubscriptionManager.AddConsolidator('BTCUSD',consolidator) self.slowsma = SimpleMovingAverage(self.slowperiod) self.atrmin = AverageTrueRange(14) self.RegisterIndicator('BTCUSD', self.slowsma, consolidator) self.RegisterIndicator('BTCUSD', self.atrmin, consolidator) cryptoPlot = Chart('Crypto Plot') cryptoPlot.AddSeries(Series('Price', SeriesType.Line, 0)) cryptoPlot.AddSeries(Series('atr', SeriesType.Line, 1)) cryptoPlot.AddSeries(Series('smaslow', SeriesType.Line, 0)) self.AddChart(cryptoPlot) self.SetWarmUp(self.slowperiod+2) def OnData(self, data): #OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here. if not data.ContainsKey("BTCUSD"): self.Debug("No Data record for BTCUSD"); return #self.qprice.appendleft(data['BTCUSD'].Close) #if self.slowsma.IsReady: self.qsma.appendleft(self.slowsma.Current.Value) #if self.atrmin.IsReady: self.qatr.appendleft(self.atrmin.Current.Value) if self.IsWarmingUp or self.consolidated5min == False: return if self.warmupfinished == False: self.Log(f"qprice: {self.qprice}") self.Log(f"qsma: {self.qsma}") self.Log(f"qatr: {self.qatr}") self.warmupfinished = True if self.Time.minute <= 5 and self.Time.hour % 6 == 0: self.Plot('Crypto Plot', 'Price', data['BTCUSD'].Close) self.Plot('Crypto Plot', 'atr', self.qatr[0]) self.Plot('Crypto Plot', 'smaslow', self.slowsma.Current.Value) def OnDataConsolidated(self,sender,bar): self.Log("DataConsolidated") if not self.IsWarmingUp: self.consolidated5min = True self.qprice.appendleft(bar.Close) self.qsma.appendleft(self.slowsma.Current.Value) self.qatr.appendleft(self.atrmin.Current.Value)