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 -1.287 Tracking Error 0.097 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
# region imports from AlgorithmImports import * # endregion class DemoAlgorithm(QCAlgorithm): def initialize(self): self.set_start_date(2024, 1, 1) self.set_end_date(2024, 5, 1) self.set_cash(100000) symbol = self.add_equity('SPY', resolution=Resolution.MINUTE).symbol custom_indicator = CustomIndicator(period=100) custom_indicator_history = self.indicator_history(custom_indicator, symbol, custom_indicator.warm_up_period) self.log(f"{custom_indicator.is_ready=}, {custom_indicator.samples=}, {custom_indicator.warm_up_period=}.") for indicator in custom_indicator._indicators: self.log(f"{indicator.name}: is ready? -> {indicator.is_ready}, samples= {indicator.samples}, previous= {str(indicator.previous)}, current= {str(indicator.current)}.") class CustomIndicator(PythonIndicator): def __init__(self, period: int) -> None: self.time = datetime.min self.value = 0 self._indicators = [AverageTrueRange(period), SimpleMovingAverage(period), ExponentialMovingAverage(period), Maximum(period)] self.warm_up_period = max([indicator.warm_up_period for indicator in self._indicators], default=period) self.samples = 0 self._is_ready = False def update(self, bar: TradeBar) -> bool: for indicator in self._indicators: indicator.update(bar) self.samples += 1 return self.is_ready @property def is_ready(self) -> bool: if not self._is_ready: self._is_ready = all(indicator.is_ready for indicator in self._indicators) return self._is_ready