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 -14.276 Tracking Error 0.047 Treynor Ratio 0 Total Fees $0.00 |
class BootCampTask(QCAlgorithm): # Order ticket for our stop order, Datetime when stop order was last hit stopMarketTicket = None stopMarketOrderFillTime = datetime.min highestTSLAPrice = 0 def Initialize(self): self.SetStartDate(2017, 10, 2) self.SetEndDate(2017, 10, 6) self.SetCash(100000) self.SetSecurityInitializer(self.CustomSecurityInitializer) tickers = ['SPY', 'TSLA'] self.symbol_data_by_symbol = {} for ticker in tickers: openingBar = None symbol = self.AddEquity(ticker, Resolution.Minute).Symbol self.symbol_data_by_symbol[symbol] = SymbolData() self.Consolidate(symbol, timedelta(minutes=30), self.OnDataConsolidated) #self.Schedule.On(self.DateRules.EveryDay(symbol), self.TimeRules.At(13,30), self.ClosePositions) #3. Create a scheduled event triggered at 13:30 calling the ClosePositions function def CustomSecurityInitializer(self, security): security.SetDataNormalizationMode(DataNormalizationMode.Raw) #def OnData(self, data): # # if self.openingBar is None: # return # for symbol, symbol_data in self.symbol_data_by_symbol.items(): # if not data.ContainsKey(symbol) or data[symbol] is None: # continue # # if data[symbol].Close > self.openingBar.High and not self.Portfolio.Invested: # quantity = self.CalculateOrderQuantity(symbol, 0.4) # self.MarketOrder(symbol, quantity) # orders 40% of portfolio # self.stopMarketTicket = self.StopMarketOrder(symbol, -500, 0.95 * self.Securities[symbol].Close) # # if self.Portfolio.Invested and data[symbol].Close > self.highestTSLAPrice: # self.highestTSLAPrice = self.Securities[symbol].Close # updateFields = UpdateOrderFields() # updateFields.StopPrice = self.highestTSLAPrice * 0.95 # self.stopMarketTicket.Update(updateFields) # # #def OnOrderEvent(self, orderEvent): # if orderEvent.Status != OrderStatus.Filled: # self.openingBar = None # return # if self.stopMarketTicket is not None and self.stopMarketTicket.OrderId == orderEvent.OrderId: # self.stopMarketOrderFillTime = self.Time def OnDataConsolidated(self, bar): self.Log(f"Bar at {self.Time} for {bar.Symbol}") # if bar.Time.hour == 9 and bar.Time.minute == 30: # self.openingBar = bar # # #def ClosePositions(self): # #2. Set self.openingBar to None, and liquidate TSLA # self.openingBar = None # #self.Liquidate(symbol) # self.Liquidate() # liquidate entire portfolio class SymbolData: def __init__(self): # Order ticket for our stop order, Datetime when stop order was last hit stopMarketTicket = None stopMarketOrderFillTime = datetime.min highestPrice = 0 openingBar = None