| 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 |
using MathNet.Numerics.Statistics;
using Python.Runtime;
namespace QuantConnect.Algorithm.CSharp
{
public class MinuteJumpDetection : QCAlgorithm
{
public override void Initialize()
{
SetStartDate(2009, 06, 01);
SetEndDate(2020, 01, 01);
SetCash(3000);
SetTimeZone(TimeZones.NewYork);
// NB: note that fill-forward does not actually fill-forward while market is closed!
var futureES = AddFuture(Futures.Indices.SP500EMini, Resolution.Minute, fillDataForward: true);
futureES.SetFilter(x => x.FrontMonth());
}
private Symbol currentContract = null;
private TradeBarConsolidator consolidator = null;
private HashSet<Symbol> seenFrontMonths = new HashSet<Symbol>();
private TradeBar prevBar = null;
public override void OnData(Slice slice) {
foreach (var chain in slice.FutureChains) {
foreach (var contract in chain.Value) {
// Second clause prevents buggy back-and-forth flipping of front month in early 2018
if (currentContract != contract.Symbol && !seenFrontMonths.Contains(contract.Symbol)) {
Debug($"Cur: {currentContract}");
Debug($"New: {contract.Expiry}\t{contract.UnderlyingSymbol}\t{contract.Symbol}");
currentContract = contract.Symbol;
seenFrontMonths.Add(contract.Symbol);
}
}
}
if (!slice.Bars.ContainsKey(currentContract))
return;
var b = slice.Bars[currentContract];
if (prevBar != null) {
if (Math.Abs(b.High - b.Open) > 6M && Math.Abs(b.High - b.Close) > 6M) {
Debug($"{b.Time.ToString("yyyyMMdd HHmm")} {b.Open} {b.High} {b.Low} {b.Close} {b.Volume}");
}
if (Math.Abs(b.Low - b.Open) > 6M && Math.Abs(b.Low - b.Close) > 6M) {
Debug($"{b.Time.ToString("yyyyMMdd HHmm")} {b.Open} {b.High} {b.Low} {b.Close} {b.Volume}");
}
// if (Math.Abs(b.High - b.Open) > 10M || Math.Abs(b.High - b.Close) > 10M) {
// Debug($"{b.Time.ToString("yyyyMMdd HHmm")} {b.Open} {b.High} {b.Low} {b.Close} {b.Volume}");
// }
}
prevBar = b;
}
}
}