Overall Statistics |
Total Trades 10 Average Win 5.98% Average Loss -24.74% Compounding Annual Return -19.901% Drawdown 68.900% Expectancy -0.255 Net Profit -21.484% Sharpe Ratio 0.066 Probabilistic Sharpe Ratio 12.078% Loss Rate 40% Win Rate 60% Profit-Loss Ratio 0.24 Alpha 0.08 Beta -0.293 Annual Standard Deviation 0.608 Annual Variance 0.369 Information Ratio -0.138 Tracking Error 0.694 Treynor Ratio -0.137 Total Fees $15600.63 |
from clr import AddReference AddReference("System") AddReference("QuantConnect.Algorithm") AddReference("QuantConnect.Common") AddReference("QuantConnect.Indicators") from System import * from QuantConnect import * from QuantConnect.Algorithm import * from QuantConnect.Brokerages import * from QuantConnect.Orders import * from QuantConnect.Indicators import * import decimal as d ### <summary> ### In this example we are looking for price to breakout above the bollinger bands ### and look to buy when we see that. We hold our position until price touches the ### middle band of the bollinger bands. ### class BollingerBreakoutAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2019, 6, 1) #Set Start Date self.SetEndDate(2020, 7, 1) #Set End Date self.SetCash('BTC', 100) #self.SetBrokerageModel(BrokerageName.GDAX) self.SetBrokerageModel(BrokerageName.GDAX, AccountType.Cash) # define crypto we want to trade on # ETHUSD, LTCUSD or BTCUSD self.target_crypto = "ETHBTC" self.AddCrypto(self.target_crypto, Resolution.Daily) # create a bollinger band self.Bolband = self.BB(self.target_crypto, 20, 2, MovingAverageType.Simple, Resolution.Daily) # Plot Bollinger band self.PlotIndicator( "Indicators", self.Bolband.LowerBand, self.Bolband.MiddleBand, self.Bolband.UpperBand, ) # create a momentum indicator over 3 days self.mom = self.MOM(self.target_crypto, 5) #self.mom = self.MOM(self.target_crypto, 3) # Plot Momentum self.PlotIndicator( "Indicators", self.mom ) # set warmup period self.SetWarmUp(20) def OnData(self, data): holdings = self.Portfolio[self.target_crypto].Quantity price = self.Securities[self.target_crypto].Close mom = self.mom.Current.Value # buy if price closes above upper bollinger band if holdings <= 0: if price < self.Bolband.LowerBand.Current.Value: numBtc = self.Portfolio.CashBook['BTC'].Amount quantity = round(.97 * numBtc / self.Securities['ETHBTC'].Price, 2) self.MarketOrder(self.target_crypto, quantity) # sell if price closes below middle bollinger band if holdings > 0 and price > self.Bolband.UpperBand.Current.Value: self.Liquidate()