| 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 Probabilistic 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
{
public class FutureChainProviderAlgorithm : QCAlgorithm
{
private Symbol _futureContract = string.Empty;
private readonly HashSet<Symbol> _contractsAdded = new HashSet<Symbol>();
public Symbol SP500 = QuantConnect.Symbol.Create("ES", SecurityType.Future, Market.USA);
public override void Initialize()
{
SetStartDate(2015, 12, 24);
SetEndDate(2015, 12, 24);
SetCash(100000);
AddEquity("SPY", Resolution.Minute);
}
public override void OnData(Slice data)
{
if (!(Securities.ContainsKey(_futureContract) && Portfolio[_futureContract].Invested))
{
var futureChains = FutureChainProvider.GetFutureContractList(SP500, Time);
//Debug(futureChains.ToString());
var contracts = (from symbol in futureChains
where ((symbol.ID.Date - data.Time).TotalDays < 100 && (symbol.ID.Date - data.Time).TotalDays > 10)
select symbol);
if (contracts.Count() != 0)
{
Debug(futureChains.ToString());
_futureContract = contracts.OrderBy(x => x.ID.Date)
.FirstOrDefault();
if (_contractsAdded.Add(_futureContract))
{
// use AddFutureContract() to subscribe the data for specified contract
AddFutureContract(_futureContract, Resolution.Minute);
}
}
else _futureContract = string.Empty;
}
if (Securities.ContainsKey(_futureContract) && !Portfolio[_futureContract].Invested)
{
MarketOrder(_futureContract, 1);
}
}
}
}