Overall Statistics |
Total Trades 107 Average Win 0.53% Average Loss -0.56% Compounding Annual Return 77.649% Drawdown 2.600% Expectancy 0.148 Net Profit 5.167% Sharpe Ratio 3.659 Probabilistic Sharpe Ratio 76.458% Loss Rate 42% Win Rate 58% Profit-Loss Ratio 0.96 Alpha 0.425 Beta -0.459 Annual Standard Deviation 0.142 Annual Variance 0.02 Information Ratio 3.108 Tracking Error 0.235 Treynor Ratio -1.134 Total Fees $197.95 Estimated Strategy Capacity $680000000.00 Lowest Capacity Asset ES 1S1 |
# RSI and Unrealized Profit Percent Scalping # ---------------------------------------- BAR = 5; RSI = 5; SL = 0.005; TP = 0.005; # ---------------------------------------- class UnrealizedProfitPercentScalping(QCAlgorithm): def Initialize(self): self.SetStartDate(2015, 1, 1) self.SetEndDate(2015, 2, 1) self.SetCash(100000) self.future = self.AddFuture(Futures.Indices.SP500EMini, Resolution.Minute).Symbol self.rsi = self.RSI(self.future, 5, MovingAverageType.Simple, Resolution.Minute) consolidator = TradeBarConsolidator(timedelta(minutes = BAR)) self.SubscriptionManager.AddConsolidator(self.future, consolidator) self.RegisterIndicator(self.future, self.rsi, consolidator) self.SetWarmUp(2*RSI, Resolution.Minute) self.enter_price = 0 def OnData(self, data): if self.IsWarmingUp or not self.rsi.IsReady: return rsi = self.rsi.Current.Value price = self.Securities[self.future].Price pnl = self.Securities[self.future].Holdings.UnrealizedProfitPercent if self.Time.hour >= 9 and self.Time.hour <= 14: if not self.Portfolio.Invested: if self.rsi.Current.Value <= 10: self.MarketOrder(self.future, 1) self.enter_price = price elif self.rsi.Current.Value >= 90: self.MarketOrder(self.future, -1) self.enter_price = price elif self.Portfolio.Invested: if self.enter_price > 0: if pnl < - SL: self.Liquidate(self.future, "Stop Loss") self.enter_price = 0 elif pnl >= TP: self.Liquidate(self.future, "Take Profit") self.enter_price = 0