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 {
	
	using QuantConnect.Data.Market;
	using QuantConnect.Securities;
	using QuantConnect.Securities.Future;
	
    public class FuturesTrader : QCAlgorithm {

		private String[] futureSymbols = new[] {"ES", "ZB", "CL", "GC"};
		private Dictionary<Symbol, FuturesChain> contract_chains = new Dictionary<Symbol, FuturesChain>();
		private Dictionary<Symbol, Future> contracts = new Dictionary<Symbol, Future>();
		private bool contractsChecked = false;

        public override void Initialize() {
            SetStartDate(2019, 1, 1);  //Set Start Date
            SetEndDate(2019, 10, 1);  //Set Start Date
            SetCash(100000);             //Set Strategy Cash
            
			SetWarmUp(TimeSpan.FromDays(5));
        	SetTimeZone("America/Los_Angeles");
      
    		foreach (var futureSymbol in futureSymbols) {
    			Debug($"Registering {futureSymbol}");
				Future fut = AddFuture(futureSymbol, Resolution.Minute);
            	fut.SetFilter(universe => universe.FrontMonth());
    		}
        }

        public override void OnData(Slice data) {
            // if (!Portfolio.Invested)
            // {
            //    SetHoldings(_spy, 1);
            //    Debug("Purchased Stock");
            //}
        }
    }
}
namespace QuantConnect.Algorithm.Framework.Selection {

	public class FuturesUniverseSelectionModel : FutureUniverseSelectionModel{
		public FuturesUniverseSelectionModel(Func<DateTime, IEnumerable<Symbol>> futureChainSymbolSelector)
			:base(TimeSpan.FromDays(1), futureChainSymbolSelector){
			}
		public FutureFilterUniverse filter(FutureFilterUniverse filter){
			return filter.Expiration(TimeSpan.FromDays(0), TimeSpan.FromDays(90))
                      .OnlyApplyFilterAtMarketOpen();
		}
	}

}