| Overall Statistics |
|
Total Trades 442 Average Win 1.07% Average Loss -1.12% Compounding Annual Return -7.936% Drawdown 24.300% Expectancy -0.023 Net Profit -7.699% Sharpe Ratio -0.223 Probabilistic Sharpe Ratio 7.310% Loss Rate 50% Win Rate 50% Profit-Loss Ratio 0.96 Alpha -0.043 Beta 0.042 Annual Standard Deviation 0.18 Annual Variance 0.032 Information Ratio -0.456 Tracking Error 0.218 Treynor Ratio -0.959 Total Fees $3931.06 Estimated Strategy Capacity $3500000.00 Lowest Capacity Asset TSLA UNU3P8Y3WFAD |
class OpeningRangeBreakout(QCAlgorithm):
openingBar = None
def Initialize(self):
self.SetStartDate(2018, 7, 10)
self.SetEndDate(2019, 6, 30)
self.SetCash(100000)
self.AddEquity("TSLA", Resolution.Minute)
self.Consolidate("TSLA", timedelta(minutes=30), self.OnDataConsolidated)
#3. Create a scheduled event triggered at 13:30 calling the ClosePositions function
self.Schedule.On(self.DateRules.EveryDay("TSLA"), self.TimeRules.At(13, 30), self.ClosePositions)
def OnData(self, data):
if self.Portfolio.Invested or self.openingBar is None:
return
if data["TSLA"].Close > self.openingBar.High:
self.SetHoldings("TSLA", 1)
elif data["TSLA"].Close < self.openingBar.Low:
self.SetHoldings("TSLA", -1)
def OnDataConsolidated(self, bar):
if bar.Time.hour == 9 and bar.Time.minute == 30:
self.openingBar = bar
#1. Create a function named ClosePositions(self)
def ClosePositions(self):
#2. Set self.openingBar to None, and liquidate TSLA
self.openingBar = None
self.Liquidate("TSLA")