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 { public class MultipleSymbolConsolidator : QCAlgorithm { private Dictionary<Symbol, AverageTrueRange> _atr = new Dictionary<Symbol, AverageTrueRange>(); private Dictionary<Symbol, SimpleMovingAverage> _sma = new Dictionary<Symbol, SimpleMovingAverage>(); public override void Initialize() { SetStartDate(2016, 12, 1); SetEndDate(DateTime.Now.Date.AddDays(-1)); SetCash(50000); foreach(var symbol in new[]{"SPY", "UVXY"}) { AddSecurity(SecurityType.Equity, symbol, Resolution.Minute); var fiveMinuteConsolidator = new TradeBarConsolidator(TimeSpan.FromMinutes(5)); var atr = new AverageTrueRange("ATR_" + symbol, 5, MovingAverageType.Simple); var sma = new SimpleMovingAverage("SMA_" + symbol, 5); _atr.Add(symbol, atr); _sma.Add(symbol, sma); RegisterIndicator(symbol, atr, fiveMinuteConsolidator); RegisterIndicator(symbol, sma, fiveMinuteConsolidator); SubscriptionManager.AddConsolidator(symbol, fiveMinuteConsolidator); if(!symbol.Equals("SPY")) return; fiveMinuteConsolidator.DataConsolidated += FiveMinuteHandler; } } private void FiveMinuteHandler(object sender, TradeBar bar) { if( _atr.Values.All(x=>x.IsReady) && _sma.Values.All(x=>x.IsReady)) { Console.WriteLine( "Time: " + bar.EndTime + " SPY Price: " + Securities["SPY"].Price + " UVXY Price: " + Securities["UVXY"].Price + " SPY SMA: " + _sma["SPY"] + " UVXY SMA: " + _sma["UVXY"] + " SPY ATR: " + _atr["SPY"] + " UVXY ATR: " + _atr["UVXY"]); var holdings = Portfolio["UVXY"].Quantity; Plot("SMA", _sma.Values.ToArray()); Plot("ATR", _atr.Values.ToArray()); } else { Console.WriteLine("Warming up"); } } public void OnData(TradeBars data) { // } } }
namespace QuantConnect { // // Make sure to change "BasicTemplateAlgorithm" to your algorithm class name, and that all // files use "public partial class" if you want to split up your algorithm namespace into multiple files. // //public partial class BasicTemplateAlgorithm : QCAlgorithm, IAlgorithm //{ // Extension functions can go here...(ones that need access to QCAlgorithm functions e.g. Debug, Log etc.) //} //public class Indicator //{ // ...or you can define whole new classes independent of the QuantConnect Context //} }