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 Probabilistic 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.934 Tracking Error 0.168 Treynor Ratio 0 Total Fees $0.00 |
class MACDTrendAlgorithm(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.''' self.SetStartDate(2012, 6, 1) #Set Start Date self.SetCash(50000) #Set Strategy Cash self.AddEquity("SPY", Resolution.Hour) # # define our daily macd(12,26) with a 9 day signal self.macd = self.MACD("SPY", 12, 26, 9, MovingAverageType.Exponential, Resolution.Hour) # #define our daily RSI with a 14 day period self.rsi = self.RSI("SPY", 14, MovingAverageType.Simple, Resolution.Hour) def OnData(self, data): # if self.rsi.IsReady: # self.Debug(self.rsi.Current.Value) '''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.''' #wait for our macd and RSI to fully initialize if not self.macd.IsReady or not self.rsi.IsReady: return self.Debug('ready') # define a small tolerance on our checks to avoid bouncing for MACD tolerance = 0.0025 holdings = self.Portfolio["SPY"].Quantity signalDeltaPercent = (self.macd.Current.Value - self.macd.Signal.Current.Value)/self.macd.Fast.Current.Value # if our macd is greater than our signal, then let's go long if (holdings <= 0 and signalDeltaPercent > tolerance and self.rsi.Current.Value < 30): self.SetHoldings("SPY", 1.0) # of our macd is less than our signal, then let's go short elif (holdings >= 0 and signalDeltaPercent < -tolerance and self.rsi.Current.Value > 70): self.Liquidate("SPY") else: self.Debug("False")