Overall Statistics
Total Trades
17
Average Win
0%
Average Loss
0.00%
Compounding Annual Return
-0.007%
Drawdown
0.000%
Expectancy
-1
Net Profit
-0.007%
Sharpe Ratio
-0.627
Probabilistic Sharpe Ratio
5.591%
Loss Rate
100%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
0
Annual Standard Deviation
0
Annual Variance
0
Information Ratio
-0.749
Tracking Error
0.334
Treynor Ratio
-1.033
Total Fees
$17.00
Estimated Strategy Capacity
$190000000.00
import time
class Trial2(QCAlgorithm):
    
    # Order ticket for our stop order, Datetime when stop order was last hit
    stopMarketTicket = None
    stopMarketOrderFillTime = datetime.min
    highestPrice = 100
    openingBar = None
    def Initialize(self):
        self.symbol = "BNGO"
        self.SetStartDate(2020, 2, 20)
        self.SetEndDate(2021, 2, 24)
        self.SetCash(100000)
        self.currents = None
        self.AddEquity(self.symbol, Resolution.Minute)
        self.Securities[self.symbol].SetDataNormalizationMode(DataNormalizationMode.Raw)
        self.Consolidate(self.symbol, timedelta(minutes=10), self.OnDataConsolidated)

    def OnData(self, data):
        if self.openingBar is None:
            #self.Debug("Part1")
            return
        if self.openingBar.High < self.Securities[self.symbol].Price:
            if not self.Portfolio.Invested:
                if self.Time.day != self.currents:
                    self.MarketOrder(self.symbol, 1)
                    self.currents = self.Time.day
                    global stopMarketTicket
                    stopMarketTicket = self.StopMarketOrder(self.symbol, -1, round(0.90 * self.Securities[self.symbol].Price, 2))
                    #self.Debug("Part2")
        if self.Portfolio.Invested and self.Securities[self.symbol].Price > self.highestPrice:
            #self.Debug("Part3")
            self.highestPrice = self.Securities[self.symbol].Price
            updateSettings = UpdateOrderFields()
            updateSettings.StopPrice = round(self.highestPrice * 0.90, 2)
            updateSettings.Tag = "Stop Price Updated for Trade"
            response = stopMarketTicket.Update(updateSettings)

    def OnOrderEvent(self, orderEvent):
        if orderEvent.Status != OrderStatus.Filled:
            return
        if self.stopMarketTicket is not None and self.stopMarketTicket.OrderId == orderEvent.OrderId: 
            self.stopMarketOrderFillTime = self.Time
            
    def OnDataConsolidated(self, bar):
        if bar.Time.hour == 9 and bar.Time.minute == 30:
            self.openingBar = bar