| 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 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset |
class CasualApricotChicken(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2022, 3, 20)
self.SetEndDate(2022, 3, 20)
self.SetCash(25000)
self.stopLossBuffer = 0.05
self.takeProfitPercentage = 0.005
self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage)
self.ticker = self.AddEquity("QQQ", Resolution.Minute).Symbol
self.Consolidate(self.ticker, timedelta(minutes=5), self.BarHandler)
self.window = RollingWindow[TradeBar](4)
#self.SetRiskManagement(MaximumDrawdownPercentPerSecurity(0.015))
def OnData(self, data):
self.window.Add(data[self.ticker])
if not self.window.IsReady: return
#3bar reversal trade
tickD = self.window[0]
tickC = self.window[1]
tickB = self.window[2]
tickA = self.window[3]
#downtrend reveral (long positioning)
if not self.Portfolio.Invested and (tickA.Close > tickB.Close) and (tickB.Close > tickC.Close) and (tickC.Close < tickD.Close):
self.SetHoldings(self.ticker, 1)
self.quantity = -self.Portfolio[self.ticker].Quantity
self.stopMarketPrice = tickC.Low
self.StopMarketOrder(self.ticker, self.quantity, self.stopMarketPrice)
self.takeProfitPrice = tickA.High
#self.takeProfitPrice = self.Portfolio[self.ticker].Price * (1 + self.takeProfitPercentage)
elif self.Portfolio.Invested and self.Portfolio[self.ticker].Price >= self.takeProfitPrice:
self.Transactions.CancelOpenOrders()
self.Liquidate()
#self.LimitOrder(self.ticker, -self.quantity, self.price)
def BarHandler(self, consolidated):
return