| Overall Statistics |
|
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 0.239% Drawdown 0.300% Expectancy 0 Net Profit 1.198% Sharpe Ratio 1.023 Probabilistic Sharpe Ratio 51.907% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0.002 Annual Variance 0 Information Ratio 1.023 Tracking Error 0.002 Treynor Ratio 0 Total Fees $1.00 Estimated Strategy Capacity $9500000000.00 Lowest Capacity Asset AAPL R735QTJ8XC9X |
# from AlgorithmImports import *
from datetime import datetime
from dateutil.relativedelta import relativedelta
class RollingWindowAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(datetime.now() - relativedelta(years = 5))
self.SetEndDate(datetime.now())
self.SetCash(10000)
self.SetBrokerageModel(brokerage = BrokerageName.InteractiveBrokersBrokerage, accountType = AccountType.Cash)
self.tickerObj = self.AddEquity(ticker = 'AAPL',
resolution = Resolution.Daily,
market = Market.USA,
fillDataForward = True,
leverage = Security.NullLeverage,
extendedMarketHours = False)
self.ticker = self.tickerObj.Symbol
self.window = RollingWindow[TradeBar](20)
self.sma = self.SMA(symbol = self.ticker,
period = 20,
resolution = Resolution.Daily,
selector = None)
self.sma.Updated += self.SMAUpdated
self.smaWindow = RollingWindow[IndicatorDataPoint](20)
def OnData(self, data):
self.window.Add(data[self.ticker])
if not self.smaWindow.IsReady:
return
if not self.Portfolio.Invested:
self.MarketOrder(self.ticker, 1)
self.Debug(f'Buy on Market Open: {self.window[0].Time}')
self.Debug(f'Trading day before: {round(self.smaWindow[1].Value, 2)}, Current: {round(self.smaWindow[1].Value, 2)}')
def SMAUpdated(self, sender, updated):
self.smaWindow.Add(updated)