Overall Statistics |
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return -3.130% Drawdown 13.500% Expectancy 0 Net Profit -13.358% Sharpe Ratio -0.58 Probabilistic Sharpe Ratio 0.000% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0.022 Beta 0.007 Annual Standard Deviation 0.036 Annual Variance 0.001 Information Ratio -0.698 Tracking Error 0.183 Treynor Ratio -3.218 Total Fees $0.00 Estimated Strategy Capacity $830000.00 Lowest Capacity Asset ETHUSD XJ Portfolio Turnover 0.05% |
from AlgorithmImports import * # 4h RSI btc algo. 100sma trend. THEN make one that sorts too class DeterminedSkyBlueDinosaur(QCAlgorithm): def Initialize(self): self.SetStartDate(2019, 3, 4) self.SetCash(100000) self.ticker=self.AddCrypto("ETHUSD", Resolution.Minute) self.rsi=self.RSI(self.ticker.Symbol, 14, Resolution.Minute) self.TREND=self.SMA(self.ticker.Symbol, 9, Resolution.Daily) mins_in_day=24*60 warmup_days=9 warmup_time=mins_in_day*warmup_days self.SetWarmup(warmup_time) consolidator = TradeBarConsolidator((timedelta(minutes=60))) consolidator.DataConsolidated += self.OnDataConsolidated self.SubscriptionManager.AddConsolidator(self.ticker.Symbol, consolidator) self.prev_rsi_value=None def OnDataConsolidated(self, sender, bar): self.rsi.Update(bar.EndTime, bar.Close) if self.IsWarmingUp: return if not self.ticker.Price > self.TREND.Current.Value: return rsi_value=self.rsi.Current.Value trade_quantity=int(self.Portfolio.Cash/self.ticker.Price)*0.9 if self.prev_rsi_value is None: self.prev_rsi_value=rsi_value if not self.Portfolio.Invested: if 5<rsi_value<21 and rsi_value>self.prev_rsi_value: self.MarketOrder(self.ticker.Symbol, trade_quantity) self.StopMarketOrder(self.ticker.Symbol, -trade_quantity,self.ticker.Price*0.8) if self.Portfolio.Invested: if rsi_value>90: self.Liquidate() self.prev_rsi_value=rsi_value