Overall Statistics |
Total Trades 7 Average Win 113.90% Average Loss 0% Compounding Annual Return 1251.214% Drawdown 32.300% Expectancy 0 Net Profit 878.756% Sharpe Ratio 2.012 Loss Rate 0% Win Rate 100% Profit-Loss Ratio 0 Alpha 2.324 Beta 0.592 Annual Standard Deviation 1.188 Annual Variance 1.41 Information Ratio 1.92 Tracking Error 1.187 Treynor Ratio 4.034 Total Fees $983.30 |
import numpy as np ### <summary> ### Basic template algorithm simply initializes the date range and cash. This is a skeleton ### framework you can use for designing an algorithm. ### </summary> class BasicTemplateAlgorithm(QCAlgorithm): '''Basic template algorithm simply initializes the date range and cash''' def Initialize(self): '''Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.''' self.SetStartDate(2017,01,01) #Set Start Date self.SetEndDate(2017,11,15) #Set End Date self.SetCash(10000) #Set Strategy Cash self.SetBrokerageModel(BrokerageName.GDAX) self.AddCrypto("LTCUSD", Resolution.Daily) self.rsi_now = self.RSI("LTCUSD", 14, MovingAverageType.Simple, Resolution.Daily) stockPlot = Chart('Trade Plot') # On the Trade Plotter Chart we want 3 series: trades and price: stockPlot.AddSeries(Series('RSI', SeriesType.Line, 0)) self.AddChart(stockPlot) def OnData(self, data): if not self.rsi_now.IsReady or self.rsi_now.Current.Value == 100: return holdings = self.Portfolio.HoldStock #self.Log("Holdings: " + str(holdings)) #self.Log("RSI: " + str(self.rsi_now.Current.Value)) if holdings <= 0: if self.rsi_now.Current.Value < 50: self.SetHoldings("LTCUSD", 1.0) self.Log("IN: " + str(self.Securities["LTCUSD"].Price)) elif self.rsi_now.Current.Value > 80: self.Liquidate("LTCUSD") self.Log("OUT: " + str(self.Securities["LTCUSD"].Price)) # if not self.Portfolio.HoldStock and self.rsi_now.Current.Value < 30: # self.SetHoldings("BTCUSD", 1) # self.Log("IN: " + str(self.Securities["BTCUSD"].Price)) # self.Log("Holdings: " + str(holdings)) # self.Log("RSI: " + str(self.rsi_now.Current.Value)) # elif self.Portfolio.HoldStock and self.rsi_now.Current.Value > 80: # self.Liquidate("BTCUSD") # self.Log("OUT: " + str(self.Securities["BTCUSD"].Price)) # self.Log("Holdings: " + str(holdings)) # self.Log("RSI: " + str(self.rsi_now.Current.Value)) self.Plot("Trade Plot", "RSI", self.rsi_now.Current.Value);