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, 1, 1); foreach(var symbol in new[]{"EURUSD", "EURGBP"}) { AddForex(symbol, Resolution.Minute, Market.Oanda); var fiveMinuteConsolidator = new QuoteBarConsolidator(TimeSpan.FromMinutes(30)); 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); fiveMinuteConsolidator.DataConsolidated += ThirtyMinuteHandler; } } private void ThirtyMinuteHandler(object sender, QuoteBar bar) { if( _atr.Values.All(x=>x.IsReady) && _sma.Values.All(x=>x.IsReady)) { Log( "Time: " + bar.EndTime + " EURUSD Price: " + Securities["EURUSD"].Price + " EURGBP Price: " + Securities["EURGBP"].Price + " EURUSD SMA: " + _sma["EURUSD"] + " EURGBP SMA: " + _sma["EURGBP"] + " EURUSD ATR: " + _atr["EURUSD"] + " EURGBP ATR: " + _atr["EURGBP"]); var holdings = Portfolio["EURGBP"].Quantity; Plot("SMA", _sma.Values.ToArray()); Plot("ATR", _atr.Values.ToArray()); } } public void OnData(QuoteBars data) { // } } }