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 -1.95 Tracking Error 0.104 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset |
class FatBrownBison(QCAlgorithm): def Initialize(self): self.cash = 100000 self.ticker = "TSLA" self.tp = 0.02 self.risk = 0.01 self.SetStartDate(2021, 1, 1) self.SetEndDate(2021, 11, 1) self.SetCash(self.cash) self.AddEquity(self.ticker, Resolution.Minute) #indicators and rolling windows self.emaFast = self.EMA(self.ticker, 12) self.emaFast.Updated += self.SmaUpdated self.fastWin = RollingWindow[IndicatorDataPoint](5) self.emaSlow = self.EMA(self.ticker, 26) self.emaSlow.Updated += self.SmaUpdated self.slowWin = RollingWindow[IndicatorDataPoint](5) self.SetWarmUp(26) #self.SetRiskManagement(MaximumDrawdownPercentPerSecurity(0.005)) def OnData(self, data): currSlowEMA = self.slowWin[0] prevSlowEMA = self.slowWin[1] currFastEMA = self.fastWin[0] prevFastEMA = self.fastWin[1] if not self.Portfolio.Invested: #short logic w/ stop loss if prevFastEMA.Value > prevSlowEMA.Value and currFastEMA.Value < currSlowEMA.Value: self.SetHoldings(self.ticker, -1) self.StopMarketOrder(self.ticker, self.Portfolio[self.ticker].Quantity, self.Portfolio[self.ticker].Price * (1 - self.tp)) #long logic w/ stop loss elif prevFastEMA.Value < prevSlowEMA.Value and currFastEMA.Value > currSlowEMA.Value: self.SetHoldings(self.ticker, 1) self.StopMarketOrder(self.ticker, -self.Portfolio[self.ticker].Quantity, self.Portfolio[self.ticker].Price * (1 + self.tp)) #short take profit logic elif self.Portfolio[self.ticker].IsShort: if self.Securties[self.ticker].Price <= (self.Portfolio[self.ticker].Price (1 - self.tp)): self.Transactions.CancelOpenOrders() self.Liquidate() #long take profit logic elif self.Portfolio[self.ticker].IsLong: if self.Securties[self.ticker].Price >= (self.Portfolio[self.ticker].Price * (1 + self.tp)): self.Transactions.CancelOpenOrders() self.Liquidate() def SmaUpdated(self, sender, updated): self.slowWin.Add(updated) self.fastWin.Add(updated)