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(); } } }