Overall Statistics
namespace QuantConnect 
{   
    /*
    *   QuantConnect University: Futures Example
    *
    *   QuantConnect allows importing generic data sources! This example demonstrates importing a futures
    *   data from the popular open data source Quandl.
    *
    *   QuantConnect has a special deal with Quandl giving you access to Stevens Continuous Futurs (SCF) for free. 
    *   If you'd like to download SCF for local backtesting, you can download it through Quandl.com.
    */
    public class QCUQuandlFutures : QCAlgorithm
    {
        string _crude = "SCF/CME_CL1_ON";
        
        SimpleMovingAverage _smaSlow;
        SimpleMovingAverage _smaFast;
        
        //Initialize the data and resolution you require for your strategy:
        public override void Initialize()
        {
            SetStartDate(2000, 1, 1);         
            SetEndDate(DateTime.Now.Date.AddDays(-1)); 
            SetCash(25000);
            AddData<QuandlFuture>(_crude, Resolution.Daily); 
            
            _smaFast = new SimpleMovingAverage(_crude, 15); 
            _smaSlow = new SimpleMovingAverage(_crude, 60); 
            
            //Manually creating and subscribing indicator for data updates.
            //This allows the indicator to automatically be the right value.
            var crudeSlowConsolidator = new DynamicDataConsolidator(period: TimeSpan.FromDays(1), isTradeBar: false, hasVolume: false);
            RegisterIndicator(_crude, _smaSlow, crudeSlowConsolidator, x => x.Value);
            
            var crudeFastConsolidator = new DynamicDataConsolidator(period: TimeSpan.FromDays(1),  isTradeBar:false, hasVolume: false);
            RegisterIndicator(_crude, _smaFast, crudeFastConsolidator, x => x.Value);
        }

        //Data Event Handler: New data arrives here. "TradeBars" type is a dictionary of strings so you can access it by symbol.
        public void OnData(Quandl data)
        {
            if (!Portfolio.HoldStock && _smaFast > _smaSlow)
            {
                SetHoldings(_crude, 1);
                Debug(Time.ToString("u") + " Purchased Crude Oil: " + _crude);
            }
        }
    }
    
    // Custom quandl data type for setting customized value column name. 
    // Value column is used for the primary trading calculations and charting.
    public class QuandlFuture : Quandl {
        
        public QuandlFuture() : base(valueColumnName: "Settle") 
        {
        }
    }
}