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) 
        {
        	//
        }
    }
}