Overall Statistics |
Total Trades 10 Average Win 1.41% Average Loss 0% Compounding Annual Return 9.049% Drawdown 2.300% Expectancy 0 Net Profit 7.226% Sharpe Ratio 2.132 Loss Rate 0% Win Rate 100% Profit-Loss Ratio 0 Alpha 0.031 Beta 2.814 Annual Standard Deviation 0.041 Annual Variance 0.002 Information Ratio 1.646 Tracking Error 0.041 Treynor Ratio 0.031 Total Fees $10.00 |
### Simple RSI Strategy intended to provide a minimal algorithm example copied from BackTest Rookies ### one indicator attempting to use ADX and DM+ DM- ### </summary> class RSIAlgorithm(QCAlgorithm): 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.''' # Set our main strategy parameters self.SetStartDate(2018,1, 1) # Set Start Date self.SetEndDate(2018,10,20) # Set End Date self.SetCash(10000) # Set Strategy Cash RSI_Period = 14 # RSI Look back period self.RSI_OB = 60 # RSI Overbought level self.RSI_OS = 40 # RSI Oversold level self.Allocate = 0.25 # Percentage of captital to allocate self.TH = 29 # threshold line for ADX self.tcker = "AAPL" # Find more symbols here: http://quantconnect.com/data self.AddEquity(self.tcker, Resolution.Daily) self.RSI_Ind = self.RSI(self.tcker, RSI_Period) self.ADX_Ind = self.ADX(self.tcker, 14, Resolution.Daily) # Ensure that the Indicator has enough data before trading,. self.SetWarmUp(RSI_Period) def OnData(self, data): '''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here. Arguments: data: Slice object keyed by symbol containing the stock data ''' self.diplus = self.ADX_Ind.PositiveDirectionalIndex.Current.Value self.diminus = self.ADX_Ind.NegativeDirectionalIndex.Current.Value self.adx = self.ADX_Ind.Current.Value self.close = data[self.tcker].Close self.high = data[self.tcker].High self.low = data[self.tcker].Low self.Debug("{} Close: {} ADX: {} DIPLUS: {} DIMINUS: {}".format(self.tcker, self.close, self.adx, self.diplus, self.diminus)) # Check if we are in the market if not self.Portfolio.Invested: # If not, we check the RSI Indicator if self.RSI_Ind.Current.Value < self.RSI_OS: # and self.diplus > self.TH: # Buy Apple self.SetHoldings(self.tcker, self.Allocate) else: if self.RSI_Ind.Current.Value > self.RSI_OB: #and self.ADX_Ind.NegativeDirectionalIndex > self.TH: # Sell Apple self.Liquidate(self.tcker)