Overall Statistics |
Total Trades 4 Average Win 0% Average Loss 0% Compounding Annual Return 5877.111% Drawdown 0.300% Expectancy 0 Net Profit 3.419% Sharpe Ratio 69.491 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 15.927 Beta 1.348 Annual Standard Deviation 0.232 Annual Variance 0.054 Information Ratio 104.784 Tracking Error 0.153 Treynor Ratio 11.979 Total Fees $8.09 |
class QInOut(QCAlgorithm): def Initialize(self): self.SetStartDate(2020,1,1) self.SetEndDate(2020,1,5) self.SetCash(100000) self.SetWarmUp(timedelta(days=400)) #self.SetWarmUp(100,Resolution.Hour) self.TickerTable = {} self.InEquity="QQQ" self.tickers = ["QQQ","TLT"] for ticker in self.tickers: # --------- Add Equity self.AddEquity(ticker, Resolution.Hour) # --------- Add Equity indicators rsi = self.RSI(ticker, 14, MovingAverageType.DoubleExponential, Resolution.Daily) rc = self.RC(ticker,14, 2, Resolution.Daily) ppo = self.PPO(ticker, 10,12, MovingAverageType.Exponential, Resolution.Daily) symbolData = SymbolData(ticker, rsi, rc, ppo) self.TickerTable[ticker] = symbolData self.Schedule.On(self.DateRules.EveryDay("QQQ"),self.TimeRules.AfterMarketOpen("QQQ",0), self.Trade) def OnData(self, data): # Problem 1 -------------------- Indicator not ready if not not self.TickerTable["QQQ"].Rsi.IsReady: self.Debug("RSI not ready") return if not self.TickerTable["QQQ"].Ppo.IsReady: self.Debug("PPO not ready") return if not self.TickerTable["QQQ"].Rc.IsReady: self.Debug("RC not ready") return def Trade(self): self.InEquity_RSI = self.TickerTable[self.InEquity].Rsi.Current.Value self.InEquity_PPO = self.TickerTable[self.InEquity].Ppo.Current.Value self.InEquity_SLOPE = self.TickerTable[self.InEquity].Rc.Slope.Current.Value # Problem 2 ------------ if u execute this at Marketclose .... Insufucuuent margin self.SetHoldings("TLT",1.0,False,"test") self.SetHoldings("QQQ",1.0,False,"test") self.SetHoldings("TLT",1.0,False,"test") # Problem 3 & 4 ------------- If u fetch QQQ on Before MarketOpen at Hour Resolution on Daily resolution... Indicators data shift by 1 day and Data Stale self.Debug(f"{self.Time} PPO:{round(self.InEquity_PPO,2)} Slope:{round(self.InEquity_SLOPE,2)} RSI:{round(self.InEquity_RSI,2)}") class SymbolData: def __init__(self, symbol, rsi, rc, ppo): self.Symbol = symbol self.Rsi = rsi self.Rc = rc self.Ppo = ppo