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 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.362 Tracking Error 0.188 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset |
# Cryptos Consolidated Bar EMAC Signal # ------------------------------------------------------------------------ CRYPTOS = ["ETHUSD", "BTCUSD", "LINKUSD"]; BAR = 120; FAST = 12; SLOW = 26; # ------------------------------------------------------------------------ class MultipleTickerSingleTechnicalIndicatorWithResampling(QCAlgorithm): def Initialize(self): self.SetStartDate(2022, 3, 1) self.SetEndDate(2022, 4, 29) self.SetCash(100000) self.cryptos = [self.AddCrypto(ticker, Resolution.Minute).Symbol for ticker in CRYPTOS] self.fast = {}; self.slow = {}; for sec in self.cryptos: Consolidator = TradeBarConsolidator(timedelta(minutes = BAR)) self.fast[sec] = ExponentialMovingAverage(FAST) self.slow[sec] = ExponentialMovingAverage(SLOW) self.RegisterIndicator(sec, self.fast[sec], Consolidator) self.RegisterIndicator(sec, self.slow[sec], Consolidator) self.Consolidate(sec, timedelta(minutes = BAR), self.CustomBarHandler) self.SetWarmUp(SLOW*BAR, Resolution.Minute) def CustomBarHandler(self, consolidated): if self.IsWarmingUp: return for sec in self.cryptos: if not self.fast[sec].IsReady: continue if not self.slow[sec].IsReady: continue price = self.Securities[sec].Price fast = self.fast[sec].Current.Value slow = self.slow[sec].Current.Value signal = (fast - slow) / ((fast + slow) / 2.0) self.Plot("Signal", sec, signal)