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