| 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 -1.419 Tracking Error 0.175 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
# region imports
from AlgorithmImports import *
# endregion
class FatRedPenguin(QCAlgorithm):
def Initialize(self):
self.SetStartDate(1999, 1, 1) # Set Start Date
self.SetEndDate(2012, 1, 1) # Set Start Date
self.SetCash(100000) # Set Strategy Cash
self.symbol = self.AddEquity("SPY", Resolution.Minute).Symbol
self.rollingWindow = RollingWindow[TradeBar](3)
self.Consolidate(self.symbol, Resolution.Daily, self.CustomBarHandler)
self.entryTime = datetime.min
self.entryPrice = 0
self.entryTicket = None
self.profitLimitTicket = None
self.entryTime = datetime.min
self.highestprice = 0
stop_loss = 0.001
self.StopMarketTicket = None
self.TPTicket = None
self.window = timedelta(days=7)
def OnData(self, data):
if not self.rollingWindow.IsReady:
return
if not (self.Time.hour == 9 and self.Time.minute == 31):
return
self.ser = pd.Series([self.rollingWindow[c].Close for c in range(0,self.rollingWindow.Size)])
if self.ser.is_monotonic_increasing and not self.Portfolio.Invested:
quantity = self.CalculateOrderQuantity(self.symbol, 0.1)
self.entryTicket = self.MarketOrder(self.symbol,quantity)
self.Debug(f"Quantity filled: {self.entryTicket.QuantityFilled}; Date: {str(self.Time)}")
self.entryTime = self.Time
if self.Portfolio.Invested and self.Time >= self.entryTime + self.window:
self.Liquidate(self.symbol)
self.Debug(f"Time stop hit, liquidating holdings at Date: {str(self.Time)}")
def CustomBarHandler(self, bar):
self.rollingWindow.Add(bar)
def OnOrderEvent(self, orderEvent):
if orderEvent.Status != OrderStatus.Filled:
return
if self.Portfolio.Invested:
self.TPTicket = self.LimitOrder(self.symbol, -orderEvent.Quantity, orderEvent.FillPrice * (1.0014))
if self.TPTicket is not None and self.TPTicket.OrderId == orderEvent.OrderId:
self.exitTime = self.Time
self.Debug(f"Profit Target Hit, Date: {str(self.Time)}")
self.entryTicket = None