| 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