Overall Statistics |
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 2.283% Drawdown 8.400% Expectancy 0 Net Profit 3.419% Sharpe Ratio 0.462 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.065 Beta -2.083 Annual Standard Deviation 0.052 Annual Variance 0.003 Information Ratio 0.076 Tracking Error 0.052 Treynor Ratio -0.011 Total Fees $1.00 |
class CandlestickAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2018, 1, 1) self.SetEndDate(2019, 6, 30) self.SetCash(100000) self.Equities = ["AAPL"] self.MarkOrder = None self.SL_Order = None self.TP_Order = None self.SL = 0.95 self.TP = 1.10 for Equity in self.Equities: self.AddEquity("AAPL", Resolution.Minute) self.Window = RollingWindow[TradeBar](5) self.Consolidate("AAPL", Resolution.Daily, self.TradeBarHandler) def TradeBarHandler(self, TradeBar): self.Window.Add(TradeBar); def OnOrderEvent(self, OrderEvent): if OrderEvent.FillQuantity == 0: return Order = self.Transactions.GetOrderById(OrderEvent.OrderId) FillPrice = round(OrderEvent.FillPrice*1, 2); StopPrice = round(FillPrice * self.SL, 2); ProfitPrice = round(FillPrice*self.TP, 2); self.Log('>> SL >> FillPrice:{} StopPrice:{}'.format(FillPrice, StopPrice)); self.Log("ORDER NOTIFICATION >> {} >> Status: {} Symbol: {}. Quantity: " "{}. Direction: {}. Fill Price {}".format(str(Order.Tag), str(OrderEvent.Status), str(OrderEvent.Symbol), str(OrderEvent.FillQuantity), str(OrderEvent.Direction), str(OrderEvent.FillPrice))); if self.Portfolio.Invested: if self.Securities["AAPL"].Price == StopPrice: self.Liquidate("AAPL"); if self.Securities["AAPL"].Price == ProfitPrice: self.StopMarketOrder("AAPL", -50, ProfitPrice); def OnData(self, data): if not (self.Window.IsReady): return if not self.Portfolio.Invested: if self.Window[1].Low < self.Window[2].Low and self.Window[0].Low < self.Window[1].Low and self.Securities["AAPL"].Open < self.Window[0].Low and self.Securities["AAPL"].Price > self.Window[0].Close: self.MarkOrder = self.MarketOrder("AAPL", 100); #self.StopMarketOrder("AAPL", -100, StopPrice); elif self.Window[2].Low < self.Window[3].Low and self.Window[1].Low < self.Window[2].Low and self.Window[0].Open < self.Window[1].Low and self.Window[0].Open < self.Window[1].Low and self.Securities["AAPL"].Price > self.Window[0].High: self.MarkOrder = self.MarketOrder("AAPL", 101); #self.StopMarketOrder("AAPL", -101, StopPrice); #if self.Securities["AAPL"].Price == StopPrice: #self.Liquidate("AAPL"); #if self.Securities["AAPL"].Price == ProfitLevel: #self.SL_Order = self.StopMarketOrder("AAPL", -50, self.Securities["AAPL"].Price);