Operations > Charts >

How Bars are Built

Print this Topic Previous pageReturn to chapter overviewNext page

NinjaTrader builds chart bars from the data provided by your data provider. There are multiple elements in the bar building process that can influence how bars are built.


tog_minusUnderstanding the variables involved in building chart bars

Bar Time Stamp
NinjaTrader stamps a bar with the closing time of the bar. For example, a minute bar with a time of 9:31:00 AM has data from 9:30:00 AM through 9:30:59 AM. Using end of bar time stamps is required in order to be able to plot multiple series of differing time frames within a single chart all accurately synchronized to time.

Discrepancies Between Different Data Feeds

Different data feeds produce different charts, especially when using tick based intervals vs time based intervals. Market data vendors each employ various methods for tick filtering, throttling and time stamping. As a result, no data stream is 100% identical and thus can cause subtle differences in charts. Since NinjaTrader supports many of the leading brokerage and data feed technologies, it is highly likely that two traders using NinjaTrader on different data feeds will have minor differences when plotting the same market and time interval.


Time Settings

Different session templates as well as the date range of data being plotted can affect the chart display and indicator values.


Real-Time Tick Filter

If you have the real-time tick filter enabled, it is possible that your offset percent (the percent away a tick is in value from the last traded price to be considered a bad tick) may be too tight and thus a good tick (gap up/down on session open for example) could be excluded from the bar.

tog_minusUnderstanding the underlying base data type required for constructing various chart bars

Base Data Types Used to Build Bars

A chart bar (period type) requires a base data type as its source for bar construction. Following are NinjaTrader supported period types and their required base data type values. A check mark represents the data base value that is needed to build the period type.


Period type

Base data type values


















































The base data is important to understand. If you are connected to a market data vendor that does NOT support "tick data," you will NOT be able to build chart bars that use "tick data" as its base data such as tick, volume, range or second charts. A matrix of supported data vendors and their varying levels of service is located here.

tog_minusUnderstanding why a chart can look different after reloading historical data from the server

As ticks come into NinjaTrader in real-time, they are time stamped based on your local PC time if they do not already have an associated time stamp that is provided from the real-time data source. The majority of our supported brokerage feeds DO NOT time stamp ticks, where most of our supported market data vendor feeds do provide time stamped ticks. NinjaTrader then builds bars based on the time stamp of the incoming tick and displays these bars in your chart in real-time.

Let's say you have a tick (tick "A") with a time stamp of 10:31:00 AM which gets packaged into the 10:32:00 AM bar and happens to be the high of that bar. An hour later, you reload historical data from your historical data provider into NinjaTrader. This process will overwrite the existing data. The 10:32:00 AM bar now looks different since the high made by TICK "A" is now part of the prior bar, 10:31:00 AM. How is this possible?


Your PC clock could have been off so the time stamp is delayed


Your internet may have been lagging so the tick came in slightly delayed and therefore the time stamp is delayed


Due to standard latency, even 50ms delay (which is normal) could be the difference between a 10:30:59 and 10:31:00 time stamp


There is no way of knowing how the historical data provider packages their bars


The only way to ensure that data always looks the same is if every connectivity provider sent ticks with time stamps AND that all vendors synchronized on time stamps. Unfortunately, this is just not a reality nor plausible scenario.


Loading Historical Data

Please see the "Historical & Real-Time Data" section of the Help Guide for more information.