| Overall Statistics |
|
Total Trades 520 Average Win 2.10% Average Loss -2.71% Compounding Annual Return 5.528% Drawdown 32.800% Expectancy 0.189 Net Profit 222.496% Sharpe Ratio 0.421 Probabilistic Sharpe Ratio 0.242% Loss Rate 33% Win Rate 67% Profit-Loss Ratio 0.78 Alpha 0.031 Beta 0.426 Annual Standard Deviation 0.166 Annual Variance 0.028 Information Ratio -0.117 Tracking Error 0.182 Treynor Ratio 0.164 Total Fees $8756.91 Estimated Strategy Capacity $11000000.00 Lowest Capacity Asset QQQ RIWIV7K5Z9LX |
# https://www.quantifiedstrategies.com/free-swing-trading-strategies/
# QQQ Strategy #4
class WellDressedBlackBat(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2000, 1, 1) # Set Start Date
self.SetCash(100000) # Set Strategy Cash
self.eq = 'QQQ'
self.AddEquity(self.eq, Resolution.Minute)
self.Schedule.On(self.DateRules.Every(DayOfWeek.Monday, DayOfWeek.Tuesday),self.TimeRules.BeforeMarketClose(self.eq, 20),self.checktrade)
self.Schedule.On(self.DateRules.Every(DayOfWeek.Monday, DayOfWeek.Tuesday),self.TimeRules.AfterMarketOpen(self.eq,1),self.getprices)
self.Schedule.On(self.DateRules.Every(DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday),self.TimeRules.BeforeMarketClose(self.eq, 20),self.checkexit)
self.trade, self.tracko, self.trackhl, self.exit = [False, False, False, False]
def checktrade(self):
self.trade = True
def getprices(self):
self.tracko = True
self.trackhl = True
def checkexit(self):
self.exit = True
def OnData(self, data):
'''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
Arguments:
data: Slice object keyed by symbol containing the stock data
'''
if self.tracko:
p = self.Securities[self.eq].Price
self.h = p
self.l = p
self.tracko = False
if self.trackhl:
p = self.Securities[self.eq].Price
self.h = max(self.h,p)
self.l = min(self.l,p)
if self.trade:
p = self.Securities[self.eq].Price
ibs = (p-self.l)/(self.h-self.l)
if not self.Portfolio.Invested:
if ibs <= .15:
self.SetHoldings(self.eq, 1)
else:
h = self.History([self.eq],1,Resolution.Daily)
yh = h['high'].values
if p >= yh:
self.Liquidate()
self.trackhl, self.trade =[False,False]
if self.exit:
p = self.Securities[self.eq].Price
h = self.History([self.eq],1,Resolution.Daily)
yh = h['high'].values
if p >= yh:
self.Liquidate()
self.exit = False