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.889 Tracking Error 0.272 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 |
import numpy as np # Percentage Volume Oscillator (PVO) # --------------------------------- STOCK = 'SPY'; MA_F= 12; MA_S = 26; # --------------------------------- class PercentageVolumeOscillator(QCAlgorithm): def Initialize(self): self.SetStartDate(2020, 1, 1) self.SetCash(100000) self.stock = self.AddEquity(STOCK, Resolution.Daily).Symbol self.last_timestamp = None self.window = RollingWindow[float](MA_S) volume_history = self.History(self.stock, MA_S, Resolution.Daily).loc[self.stock]['volume'] for time, volume in volume_history.iteritems(): self.window.Add(volume) self.last_timestamp = time def OnData(self, data): if data.ContainsKey(self.stock) and data[self.stock] is not None and data.Time != self.last_timestamp: self.window.Add(data[self.stock].Volume) self.last_timestamp = data.Time def OnEndOfDay(self, symbol): v = np.array(list(self.window)[::-1]) pvo = float(100*(v[-MA_F:].mean()/v[-MA_S:].mean() - 1)) self.Plot("Indicator", "PVO", pvo) self.Plot("Indicator", "Zero", 0)