| 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 3.457 Tracking Error 0.2 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
# region imports
from AlgorithmImports import *
# endregion
class ClassicRenkoBarConsolidatorAlgorithm(QCAlgorithm):
_consolidators = {}
_bucket_size = 100_000.0
def initialize(self) -> None:
self.set_start_date(2025, 3, 1)
self.set_end_date(2025, 3, 5)
self._es = self.add_future("ES", Resolution.Tick)
self._es.set_filter(0,180)
def on_consolidated(self, sender: object, bar: TradeBar) -> None:
self.log(str(bar))
def on_data(self, slice):
if self._es.mapped not in self._consolidators:
def selector(data):
value = data.quantity * data.price
return value
consolidator = ClassicRenkoConsolidator(self._bucket_size, selector=selector)
consolidator.data_consolidated += self.on_consolidated
#self.subscription_manager.add_consolidator(self._es.mapped, consolidator, TickType.TRADE)
self._consolidators[self._es.mapped] = consolidator
ticks = slice.ticks.get(self._es.mapped, [])
for tick in ticks:
self._consolidators[self._es.mapped].update(tick)