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.
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.
|
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.
|
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 menu from the Control Center window and selecting the 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 |
|
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 menu from the Control Center and left mouse clicking on the 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 |
|
Merge Policy
The Merge policy option can be found in the Data tab of the 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.
|
|