When coding an indicator or strategy it is important to be able to access the intended bars for correct calculations. In NinjaScript we are able to access the bars we want through proper use of the bar’s indexing.
The bar’s indexing is setup in a reverse chronological order. This means "0" refers to the most recent bar, "1" refers to the previous bar, "2" refers to the bar before that one, etc.
For example, if we wanted to subtract the high and low of 10 bars ago from each other we would do this:
double value = High[10] – Low[10];
CurrentBar
CurrentBar returns an int representing the number of bars existing on the chart. This property is most useful when you want to run calculations from the very beginning of the chart.
For example, if you wanted to find the average high value of the first 10 bars on the chart you could do this:
double highValue = 0; int x = CurrentBar; while (x > CurrentBar - 10) { highValue += High[x]; x--; } Print("The average high value: " + highValue/10);
BarsSinceNewTradingDay
BarsSinceNewTradingDay is another property that can help you find the first bar of the current trading day. The difference between BarsSinceNewTradingDay and CurrentBar is that BarsSinceNewTradingDay resets its count whenever a new session begins. This means if you use it in an index it will only get you to the beginning of the current session and not any previous sessions.
For example, if you wanted to find the open of the current session you could do this:
double openValue = Open[Bars.BarsSinceNewTradingDay];
Note: if you wish to access values older than 256 bars ago you will need to ensure the MaximumBarsLookBack is set to .Infinite.
Other Properties and Methods
There are also a number of other properties and methods that can be useful in helping you locate the correct bars index to reference. Please take a look at these in the help guide: BarsSinceEntryExecution(), BarsSinceExitExecution(), GetBar(),
GetDayBar(), HighestBar(), LowestBar(), LRO(), and MRO().
Leave a comment: