Operations >

Historical & Real-Time Data

Print this Topic Previous pageReturn to chapter overviewNext page

This page contains information on historical and real-time data as provided by your connectivity provider to NinjaTrader as well as information on filtering real-time data and dividend/split adjusting historical data.

 

tog_minusUnderstanding the data provided by your connectivity provider

Historical and Real-Time Data

NinjaTrader, LLC is not a market data provider. Historical data is provided by our connectivity providers that offer historical data as part of their service. The table below displays all NinjaTrader supported connectivity providers as well as the historical and real-time data provided by each:

 

Connectivity Provider

Real-Time Data

Historical Tick Data

Historical Bid/Ask Minute Data

Historical Bid/Ask Daily Data

Historical Bid/Ask Tick Data

Historical Minute Data

Historical Daily Data

Real-Time Timestamp

Instruments Supported

Real-Time News

64-bit Support

Kinetick

www.kinetick.com

YES (subscription only)

YES (subscription only)

NO

NO

YES

YES (subscription only)

YES

Native

E, F, FX, I

YES

YES

BarChart

YES

YES

NO

NO

NO

YES

YES

Native

E, F, FX, I

NO

YES

Clear Corretora

YES

YES

NO

NO

YES

YES

YES

Native

E, F, O

NO

YES

Continuum

YES

YES

YES

YES

YES

YES

YES

Native

F, I

NO

YES

CQG

YES

YES

YES

YES

YES

YES

YES

Native

F, I

NO

YES

eSignal

YES

YES

NO

NO

YES

YES

YES

Native

E, F, FX, I

YES

NO

FXCM

YES

YES

YES

YES

YES

YES

YES

Native

FX

NO

YES

GAIN Capital/FOREX.COM

YES

YES (24 hours back)

YES (With NT server selected)

YES (With NT server selected)

YES (With NT server selected)

YES (24 hours back)

NO

Local

FX

NO

YES

Google

NO

NO

NO

NO

NO

NO

YES

---

E

NO

YES

Interactive Brokers

YES

NO

NO

NO

NO

YES

(live account only)

YES

(live account only)

Local

E, F, FX, I

NO

YES

IQFeed

YES

YES

NO

NO

NO

YES

YES

Native

E, F, FX, I

YES

YES

MB Trading

YES

YES

NO

NO

NO

YES

YES

Local

E, F, I

NO

NO

Patsystems

YES

NO

NO

NO

NO

NO

NO

Local

F

NO

NO

Rithmic

YES

YES

YES

YES

YES

YES

YES

Native

F

NO

YES

TD Ameritrade

YES

NO

NO

NO

NO

YES

YES

Local

E, I

YES

NO

TradeStation

YES

NO

NO

NO

NO

YES

NO

---

E, F, FX, I

NO

NO

Trading Technologies

YES

NO

NO

NO

NO

NO

NO

Local

F

NO

NO

Vision Financial

YES

YES

YES

YES

YES

YES

YES

Native

F

NO

YES

YAHOO

NO

NO

NO

NO

NO

NO

YES

Local

E

NO

YES

Zen-Fire

YES

YES

YES

YES

YES

YES

YES

Native

F

NO

YES

 

E = Equities

F = Futures

FX = Forex
I = Indexes

O = Options

 

NinjaTrader Converts Real-Time Data into Historical Data

NinjaTrader stores real-time incoming tick data to your local PC if you have a Chart or Market Analyzer (must have an indicator column added) window open. This data can then be used as historical data. For example, if you open a chart and let it run all day long, the data collected today, will be available as historical data when you open the same chart tomorrow.

 

Connecting to your Broker and a Market Data Provider Simultaneously

If your broker technology does not support historical data, you can connect to a service like eSignal at the same time as connecting to your broker so that you can receive historical data. Please see the topic on Multiple Connections for additional information.

 

Create a Connection to Yahoo for Free Historical Daily Data

You can create a connection to Yahoo Finance via the Connection Guide. This connection provides access to free historical daily data that can be used for system development and backtesting.

tog_minusWhen does NinjaTrader load historical data?

NinjaTrader loads data from your data provider whenever it determines it could potentially not have all the data pertaining to the requested time period.

 

NinjaTrader will load data when:

 

1.The End date parameter of the Data Series window contains the current day
2.The End date parameter of the Data Series window contains the last day of data available in your data repository
3.The data repository contains no data within 3 days of the first day loaded in the chart

 

Examples of when NinjaTrader will fetch data if the data repository contains data from 1/3/08 to 1/6/08 and the current date is 1/7/08:

 

1.Chart of 1/3/08 to 1/7/08 -> load data request for 1/7/08, use data stored in data repository/cache for other dates
2.Chart of 1/3/08 to 1/6/08 -> load data request for 1/6/08, use data stored in data repository/cache for other dates
3.Chart of 1/3/08 to 1/5/08 -> use data stored in data repository/cache for all dates
4.Chart of 12/28/07 to 1/5/08 -> load data request for all dates

 

 

To minimize the need to load data and to speed up chart load times, NinjaTrader maintains an internal cache of your prior accessed data. When data is in this cache, NinjaTrader will use it to populate your charts instead of loading from your data provider.

 

There are two ways to ensure that the internal cache contains data for your instrument of interest:

 

1.Open and maintain a chart of any time frame containing the instrument
2.Load the instrument into a Market Analyzer window along with an indicator column

 

The Market Analyzer option is not as viable since it only maintains a 100 bar cache as a default setting that can be changed. Since 99% of all charting requests consist of much more than 100 bars, they will most likely incur a data load.

 

Note: The internal cache is managed by the .NET framework so it is unpredictable when the .NET runtime will clear it. In most cases, as long as you have at least one chart of your instrument open, the instrument’s data cache will persist.

tog_minusHow to use the real-time Tick Filter

What is tick filtering?

Tick filtering is a function where each incoming tick is evaluated in relation to the last known price and if it is outside of a user defined percentage value, the tick is thrown away and not distributed to any NinjaTrader object that requires market data such as advanced charts or strategies. This prevents data spikes from showing on your charts and can also prevent unwanted actions taken by automated strategies due to a data spike.

 

How does it work?

A bad tick is detected if the tick price is less than the last valid traded price - (last traded Price * (1 - bad tick offset as %))

A bad tick detected if the tick price is greater than the last valid traded price + (last traded Price * (1 + bad tick offset as %))

If a bad tick is detected but the prior two ticks were also bad ticks, then the tick being processed is now a valid last traded price and is NOT filtered out

 

How do I enable tick filtering?

You can enable real-time tick filtering by selecting the Tools menu from the Control Center window and selecting the Options menu item. The Options dialog window will appear. Within the Options dialog window, left mouse click on the Data tab. Under the Real-time data section you can place a check mark next to Filter bad ticks and set the % off market value.

 

When should I used tick filtering?

 

If you are using a market data vendor where you often see data spikes come in
If you trade primarily equities
If you are running automated strategies where data spikes have implications
tog_minusUnderstanding splits and dividends

Splits and Dividends

NinjaTrader will split and dividend adjust historical data. This is primarily relevant for backtesting. NinjaTrader uses a fixed level back adjustment of dividends. This means that historical data is adjusted at the fixed amount of the dividend.

 

For example:

 

Day 1: Stock trades at $10.00
Day 2: Stock trades at $10.50
Day 3: Stock trades at $11.25
Day 4: Stock goes ex-dividend, the dividend is $0.75, and finishes trading at $10.50

 

The dividend adjusted historical data now becomes:

 

Day 1: $9.25
Day 2: $9.75
Day 3: $10.50
Day 4: $10.50 (the ex-day is not adjusted)

 

Enabling Splits and Dividends

You can enable this data adjusting by selecting the Tools menu from the Control Center and left mouse clicking on the Options menu item. Then select the Data tab and select Adjust for splits and/or Adjust for dividends. Please note that should the historical data you are using comes pre-adjusted you should not readjust them a second time.

 

Connectivity Provider

Split Adjusted

Dividend Adjusted

Intraday

Daily

Intraday

Daily

Kinetick www.kinetick.com

NO

YES

NO

NO

BarChart

YES

YES

NO

NO

eSignal

NO

YES

NO

NO

Google

YES

YES

NO

NO

Interactive Brokers

----

----

----

----

IQFeed

NO

YES

NO

NO

MB Trading

YES

YES

NO

NO

TD Ameritrade

----

----

----

----

TradeStation

YES

YES

YES

YES

YAHOO

NO

NO

NO

NO

 

Adding Splits and Dividends

You must add splits and dividends per instrument in the Instrument Manager. Please see the Adding Splits and Dividends section of the Help Guide for more information.

 

NinjaTrader stores historical data in it's local data repository in an unadjusted state
If the data provider provides adjusted data, NinjaTrader will convert the data into it's unadjusted state prior to local storage

 

tog_minusUnderstanding merge policies

Merge Policy

The Merge policy option can be found in the Data tab of the Options menu and sets how NinjaTrader handles the merging of historical data for futures contracts.

 

MergeBackAdjusted

Selecting this option uses data from each individual expiry month across the time span of the historical data requested. Offset* values will also be used to back adjust the historical data to match the next front month.

 

For example: If requesting a chart of the ES 09-10 from June 1st through July 1st, two contract months were the front month during that time span (06-10 and 09-10). The 06-10 data will be merged with the 09-10 data and an Offset value will be used to connect the last 06-10 contract data point with the first 09-10 contract point. The result is a continuous chart of ES front month data for the dates selected.

 

*More information on Offsets can be found in the Editing Instruments section of the Help Guide.

 

MergeNonBackAdjusted

Selecting this option uses data from each individual expiry month across the time span of the historical data requested. Offset values are NOT used and leaves historical data as raw data.

 

For example: If requesting a chart of the ES 09-10 from June 1st through July 1st, two contract month were the front month during that time span (06-10 and 09-10). The 06-10 data will be merged with the 09-10 data; however, NO Offset value will be applied. The result is a continuous chart of ES front month data for the dates selected.Significant price gaps in the chart may be present due to changes in contract values that were NOT Offset.

 

DoNotMerge

Selecting this option will not merge any data and only show historical data for the front month selected.

 

For example: If requesting a chart of the ES 09-10 from June 1st through July 1st, two contract month were the front month during that time span (06-10 and 09-10). The 06-10 data will NOT be merged and only data for the 09-10 contract will be used. The result is a chart that goes as far back as there is data for the selected front month, which may be less than the requested date range.