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 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 |
namespace QuantConnect.Algorithm.CSharp { public class QuantumUncoupledInterceptor : QCAlgorithm { public override void Initialize() { SetStartDate(2019, 2, 20); //Set Start Date SetCash(100000); //Set Strategy Cash var symbol = AddEquity("SPY", Resolution.Minute).Symbol; RegisterIndicator(symbol, new AwesomeOscillator("TestDebugging")); } /// OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here. /// Slice object keyed by symbol containing the stock data public override void OnData(Slice data) { // if (!Portfolio.Invested) // { // SetHoldings(_spy, 1); // Debug("Purchased Stock"); //} } } }
namespace QuantConnect { public class AwesomeOscillator : BarIndicator, IIndicatorWarmUpPeriodProvider{ private readonly int _period; public int WarmUpPeriod { get; } public override bool IsReady => _slow_sma_queue.Count() == _period_slow; public int _period_fast; public int _period_slow; private List<decimal> _fast_sma_queue = new List<decimal>(); private List<decimal> _slow_sma_queue = new List<decimal>(); public AwesomeOscillator(string name, int period_fast = 5, int period_slow = 34) : base(name){ _period_fast = period_fast; _period_slow = period_slow; } protected override decimal ComputeNextValue(IBaseDataBar input){ // Calculation AO = sma((high+low)/2, lengthAO1) - sma((high+low)/2, lengthAO2) decimal CurrentQueue = ((input.Low + input.High)/ 2); decimal fast_sma = 0m; decimal slow_sma = 0m; if(_period_fast >= _fast_sma_queue.Count()){ _fast_sma_queue.Add(CurrentQueue); } else { fast_sma = _fast_sma_queue.Sum() / _period_fast; } if(_period_slow >= _slow_sma_queue.Count()){ _slow_sma_queue.Add(CurrentQueue); } else { slow_sma = _slow_sma_queue.Sum() / _period_slow; } return (fast_sma - slow_sma); } } }