I have found that the RTH data is not being processing bars on the last complete day. As a result, the RTH.IsFirstBarOfSession is not being set to true. In addition a SessioniIterator is returning stale session information.
This problem is not related to historical data. If I have this on a chart at the time the RTH starts, the bar processing on the RTH DataSeries does not occur.
I have constructed a simple test (see below) to demonstrate. Here are two excerpts from the same the test output:
This is excerpt is working as expected. See how BarsInProgress shows all of the three DataSeries (0,1,2) are being processed.
Start Bar: 8/29/2019 8:15:00 AM Bars In Progress: 2
Start Bar: 8/29/2019 8:30:00 AM Bars In Progress: 0
Start Bar: 8/29/2019 8:30:00 AM Bars In Progress: 2
Start Bar: 8/29/2019 8:45:00 AM Bars In Progress: 0
Start Bar: 8/29/2019 8:45:00 AM Bars In Progress: 2
Start Bar: 8/29/2019 9:00:00 AM Bars In Progress: 0
Start Bar: 8/29/2019 9:00:00 AM Bars In Progress: 2 ETH
Start Bar: 8/29/2019 9:15:00 AM Bars In Progress: 0
Start Bar: 8/29/2019 9:15:00 AM Bars In Progress: 2
Start Bar: 8/29/2019 9:30:00 AM Bars In Progress: 0
Start Bar: 8/29/2019 9:30:00 AM Bars In Progress: 2
Start Bar: 8/29/2019 9:45:00 AM Bars In Progress: 0 <<<<< RTH start here
Start Bar: 8/29/2019 9:45:00 AM Bars In Progress: 1
Start Bar: 8/29/2019 9:45:00 AM Bars In Progress: 2
Start Bar: 8/29/2019 10:00:00 AM Bars In Progress: 0
Start Bar: 8/29/2019 10:00:00 AM Bars In Progress: 1
Start Bar: 8/29/2019 10:00:00 AM Bars In Progress: 2 RTH
Start Bar: 8/29/2019 10:15:00 AM Bars In Progress: 0
Start Bar: 8/29/2019 10:15:00 AM Bars In Progress: 1
Start Bar: 8/29/2019 10:15:00 AM Bars In Progress: 2
Start Bar: 8/29/2019 10:30:00 AM Bars In Progress: 0
Start Bar: 8/29/2019 10:30:00 AM Bars In Progress: 1
Start Bar: 8/29/2019 10:30:00 AM Bars In Progress: 2
Start Bar: 8/29/2019 10:45:00 AM Bars In Progress: 0
Start Bar: 8/29/2019 10:45:00 AM Bars In Progress: 1
Start Bar: 8/29/2019 10:45:00 AM Bars In Progress: 2
The log excerpt below is NOT working as expected.
Notice that BarsInProgress is only processing 0 (the default chart bars) and 2 (the ETH series). BarsInProgress 1 is never processed even after the RTH session begins.
Start Bar: 8/30/2019 8:30:00 AM Bars In Progress: 0
Start Bar: 8/30/2019 8:30:00 AM Bars In Progress: 2
Start Bar: 8/30/2019 8:45:00 AM Bars In Progress: 0
Start Bar: 8/30/2019 8:45:00 AM Bars In Progress: 2
Start Bar: 8/30/2019 9:00:00 AM Bars In Progress: 0
Start Bar: 8/30/2019 9:00:00 AM Bars In Progress: 2
Start Bar: 8/30/2019 9:15:00 AM Bars In Progress: 0
Start Bar: 8/30/2019 9:15:00 AM Bars In Progress: 2
Start Bar: 8/30/2019 9:30:00 AM Bars In Progress: 0
Start Bar: 8/30/2019 9:30:00 AM Bars In Progress: 2
Start Bar: 8/30/2019 9:45:00 AM Bars In Progress: 0 <<<<< RTH start here
Start Bar: 8/30/2019 9:45:00 AM Bars In Progress: 2
Start Bar: 8/30/2019 10:00:00 AM Bars In Progress: 0
Start Bar: 8/30/2019 10:00:00 AM Bars In Progress: 2
Start Bar: 8/30/2019 10:15:00 AM Bars In Progress: 0
Start Bar: 8/30/2019 10:15:00 AM Bars In Progress: 2
Start Bar: 8/30/2019 10:30:00 AM Bars In Progress: 0
Start Bar: 8/30/2019 10:30:00 AM Bars In Progress: 2
Start Bar: 8/30/2019 10:45:00 AM Bars In Progress: 0
Start Bar: 8/30/2019 10:45:00 AM Bars In Progress: 2
Start Bar: 8/30/2019 11:00:00 AM Bars In Progress: 0
Start Bar: 8/30/2019 11:00:00 AM Bars In Progress: 2
How do I get the BarsInProgress to begin during the RTH session?
Thank you.
================================================== ===============
Indicator code that generated the above output.
================================================== ===============
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Description = @"Enter the description for your new custom Indicator here.";
Name = "VerifyBars";
Calculate = Calculate.OnBarClose;
IsOverlay = false;
DisplayInDataBox = true;
DrawOnPricePanel = true;
DrawHorizontalGridLines = true;
DrawVerticalGridLines = true;
PaintPriceMarkers = true;
ScaleJustification = NinjaTrader.Gui.Chart.ScaleJustification.Right;
//Disable this property if your indicator requires custom values that cumulate with each new market data event.
//See Help Guide for additional information.
IsSuspendedWhileInactive = true;
}
else if (State == State.Configure)
{
AddDataSeries(Bars.Instrument.FullName, new BarsPeriod { BarsPeriodType = BarsPeriod.BarsPeriodType, Value = BarsPeriod.Value}, "CME US Index Futures RTH");
AddDataSeries(Bars.Instrument.FullName, new BarsPeriod { BarsPeriodType = BarsPeriodType.Minute, Value = BarsPeriod.Value}, "CME US Index Futures ETH") ;
}
}
protected override void OnBarUpdate()
{
//Add your custom indicator logic here.
Print ("Bar: " + Time[0] + " Bars In Progress: " + BarsInProgress );
//Bars In Progress:
// 0 - Bars on visible Chart
// 1- RTH Bars from DataSeries
// 2- ETH Bars from DataSeries
}
}
}
Comment