| Overall Statistics |
|
Total Orders 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Start Equity 100000 End Equity 100000 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% |
# community_consolidator_5min_10May2024
# investigating. 5min consolidator live does not match
# ref: https://github.com/QuantConnect/Lean/blob/master/Algorithm.Python/DataConsolidationAlgorithm.py
# region imports
from AlgorithmImports import *
# endregion
class WellDressedTanAlbatross(QCAlgorithm):
def Initialize(self):
#community_consolidator_5min_10May2024
if self.LiveMode:
self.Debug(f"######################################################################################################")
self.Debug(f"community_consolidator_5min_10May2024. 15.May.24")
self.log(f"Paper Trading. Data=QuantConnect")
#self.log(f"IB. Data = IB")
else:
#self.Debug(f"Backtesting Live run on 10.May.2025. algorithm-log_L-670cdeb6f6bea36bc53ec2e7125f18f3.txt")
self.Debug(f"Backtesting Live run on 15.May.2025. algorithm-log_L-3efb948db47052bfaffaafbe244ca0ab_15.May.txt")
# self.start_dt = datetime(2024, 5, 9, 9, 30, 0)
# self.end_dt = self.start_dt + timedelta(hours=1)
#10.May
# self.start_dt = datetime(2024, 5, 10, 12, 57, 0) #NY time
# self.end_dt = datetime(2024, 5, 10, 16, 0, 0)
#15 & 16th .May
self.start_dt = datetime(2024, 5, 15, 11, 10, 0) #NY time
self.end_dt = datetime(2024, 5, 16, 16, 0, 0)
self.restrict_logging = True # if true restrict logging outside start_dt/end_dt. only applies in backtesting
self.set_start_date(self.start_dt)
self.set_end_date(self.end_dt)
self.SetCash(100000)
self.ticker_name = 'SPY'
self.my_symbol = self.add_equity(self.ticker_name, Resolution.MINUTE).symbol
self.time_frame_1 = 5 # mins
self.time_frame_2 = 60 # mins
thirty_minute_consolidator = TradeBarConsolidator(timedelta(minutes=self.time_frame_1))
thirty_minute_consolidator.data_consolidated += self.on_five_minute_bar_handler
self.subscription_manager.add_consolidator(self.ticker_name, thirty_minute_consolidator)
self.schedule.on(self.date_rules.every_day(self.ticker_name),
self.time_rules.after_market_open(self.ticker_name, -1),
self.market_about_to_open)
self.schedule.on(self.date_rules.every_day(self.ticker_name),
self.time_rules.before_market_close(self.ticker_name, 1),
self.market_about_to_close)
self.log(f"start_dt = {self.start_dt}")
self.log(f"end_dt = {self.end_dt}")
def do_not_log(self):
#to restrict too much logging in BT
if not self.LiveMode and self.restrict_logging:
if self.Time < self.start_dt or self.Time > self.end_dt:
return True
return False
def OnData(self, data: Slice):
#uncomment to restrict logging
if self.do_not_log():
return
bar = data[self.my_symbol]
self.log(f"OnData,\tbar end={bar.EndTime},\tself.Time={self.Time},\tnow={self.Time.now()},\tbar.Close={bar.Close}")
def print_bar(self, tf, bar):
#uncomment to restrict logging
if self.do_not_log():
return
self.log(f"{tf} min,\tbar end={bar.EndTime},\tself.Time={self.Time},\tnow={self.Time.now()},\tbar.Close={bar.Close}")
def on_five_minute_bar_handler(self, sender, consolidated):
self.print_bar(self.time_frame_1, consolidated)
def on_end_of_day(self, symbol):
self.log(f"on_end_of_day. self.Time={self.Time}, symbol={symbol}")
def on_end_of_algorithm(self):
self.log(f"on_end_of_algorithm. self.Time={self.Time}")
def market_about_to_open(self):
self.log("------------------------------------------------------------------------")
self.log(f"market_about_to_open. self.Time={self.Time}")
def market_about_to_close(self):
self.log(f"market_about_to_close. self.Time={self.Time} *************************")