Created with Highcharts 12.1.2Equity08:00 AM04:00 PMMar 208:00 AM04:00 PMMar 308:00 AM04:00 PMMar 408:00 AM04:00 PMMar 508:00 AM04:00 PMMar 608:00 AM100,000
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)