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 Sortino 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 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
# region imports from AlgorithmImports import * # endregion from datetime import time from datetime import timedelta class BreakoutAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2023, 12, 1) # Set the backtest start date self.SetEndDate(2023, 12, 2) # Set the backtest start date self.SetCash(100000) # Set the initial cash balance self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin) # Define the equity to trade (AMD in this case) amd = self.AddEquity("AMD", Resolution.Tick) amd.SetDataNormalizationMode(DataNormalizationMode.Raw) self.symbol = amd.Symbol self.vwap = self.VWAP(self.symbol) self.ema9 = self.EMA(self.symbol, 9, Resolution.Minute, Field.Close) self.ema20 = self.EMA(self.symbol, 20, Resolution.Minute, Field.Close) self.SetWarmUp(5 * 20, Resolution.Minute) self.EndTime = time(15, 55) self.lastPlotMinute = -1 def OnData(self, data): if self.symbol.Value not in data.Keys: return ticks = data[self.symbol] if len(ticks) == 0: return tick = max(ticks, key=lambda x: x.Price) if self.Time.second == 0 and self.Time.minute != self.lastPlotMinute: self.lastPlotMinute = self.Time.minute self.Plot("AMD", "Price", tick.Price) self.Plot("AMD", self.ema20, self.ema9) self.Debug(f"{self.Time} price: {tick.Price}, ema9: {self.ema9.Current.Value}, ema20: {self.ema20.Current.Value}")