Major Enhancements in NinjaTrader 7
NT7 Features
NinjaTrader 7 is our most ambitious project in our short history. There are over 300+ changes in this release and the rest of this web page is a high level overview of some of the more significant changes.
General Enhancements
General Application Performance
NinjaTrader 7 application performance is considerably more efficient in terms of memory usage and CPU utilization.
- We replaced the underlying grid technology to eliminate known resource leaks and gain performance and added grid features
- We introduced multi-core support resulting in faster application start up and significantly reduced strategy optimization times
- We re-wrote the core chart bar construction algorithms which result in significant performance gains in any area of the application that uses Data Series (bars)
- We optimized the processing of real-time market data events as they are processed by indicators and strategies
- Historical data requests can now be processed in hourly chunks (is daily in 6.5) which results in minimized data download times and minimized data managed in memory
- We optimized the compression of stored historical data and relocated the storage from the database to the file system resulting in smaller database size, less risk of database corruption and faster retrieval of local historical data
- We have introduced bar series caching which seriously improves performance
- We replaced the Jet database engine with a state of the art "zero maintenance" SQL database
- We upgraded to Microsoft .NET 3.5
64-bit NinjaTrader
We have added native support for running NinjaTrader in a 64-bit environment. During installation, NinjaTrader will detect the presence of a 64-bit OS and install both 32-bit and 64-bit application icons on your desktop. NinjaTrader will fully utilize a 64-bit multi-core environment especially in the area of strategy development and optimization. There is a catch in that not all of our broker and market data adapters provide native 64-bit DLL's thus however, you can still use the 32-bit version.
New Kinetick Adapter
Kinetick is the preferred streaming real time and historical market data service for the NinjaTrader 7 platform. End of Day data is completely free and real time plans start at $50 per month. Learn more at www.kinetick.com.
New Google Adapter
Get free historical and delayed streaming data from www.google.com.
New Fundamental Data Support
We added internal support for fundamental data and even added a NinjaScript® OnFundamentalData() method. Fundamental data is supported in varying levels from our market data vendors.
New RSS Feed Support
Subscribe to symbol level RSS feeds (Yahoo for MSFT for example) and NinjaTrader’s News window will display any RSS transmitted information to this window.
New Hot Key Manager
Assign hot keys for global and local window functions including order management.
New Automatic Connect on Application Start Up
You can enable any defined connection to automatically connect when you start NinjaTrader.
Miscellaneous Enhancements
- Improved search algorithm used in the Instrument Manager
- Z-order of application windows are accurately restored on reloading of a workspace
- Removed "Default" workspace requirement
- ATM strategy generated stop loss orders are no longer hard coded to use "Stop Limit" orders on Globex
- Start up splash screen is no longer top most
- New option to disable loading historical data from a connection and only load from the database
- TradeStation historical data import now support daily data
Back to Top
Data Management Enhancements
New Historical Data Manager
The Historical Data Manager allows you to import/export and edit historical data. Click the image to the right to view a historical tick table with an excluded record (bad tick) marked in red and a changed record which is marked in yellow. If historical data is reloaded it will not overwrite any of the changes, exclusions or data additions. Changes logs are maintained and original values can be easily restored.
New Continuous/Merged Futures Contracts
The concept of continuous contracts are implemented in a manner that allows you to continue to work with the front month for trading (ES 09-09 is the current front month as of this writing) and define a rollover date, June 11, 2009 is the contract boundary between June and September contracts. Rollover dates for the most popular futures contracts will be managed by NinjaTrader server and automatically uploaded to you. You can of course overwrite this. You then set up a "Merge policy" globally which can be overridden at the instrument level. As you request a historical chart, if the days to load crossed over the rollover boundary, NinjaTrader will transparently request the prior month(s) historical data and merge it into one Data Series based on the selected merge policy. This entire process is of course transparent to the user and ensure that a complete chart is received and that you know which contract you are actually executing trades against.
New Session Manager
We have introduced a new Session Manager which allows you to pre-define session templates for when a market trades. Session templates can be assigned to each instrument in the Instrument Manager and also overridden anywhere a Data Series is used such as a Chart, Market Analyzer and Strategy Analyzer.
When adding a Data Series to a chart, you can specify "Use instrument settings" or select any pre-defined session template.
Enhanced Data Import
Import routines are now implemented as NinjaScript® objects thus, developers can develop their own custom data import routines. As default, we have added MetaStock import format in addition to two variations of NinjaTrader default format. You can now generate minute bars from imported tick data and/or generate day bars from imported tick or minute data.
Back to Top
Market Replay Enhancements
New Downloadable Replay Data
Download market replay data for the most popular futures contracts.
General Market Replay Enhancements
- Data files are now always split at midnight US ET
- All recorded replay data files are now aggregated into a single replay session on connect allowing for continuous replay across all available days
- Chart draw objects added to a chart during replay are now removed on rewind
Back to Top
Market Analyzer Enhancements
Performance Enhancements
- Optimized the historical data loading routines resulting in a significant performance increase
- " # bars to look back" can now be set per indicator column allowing for optimized user set ups resulting in reduced memory footprint
Enhanced Grid
You can now type directly into a cell to add an instrument.
New Cell Condition
You can now change the text of a cell to user defined text based on a condition. Click the image below to enlarge, the "Oversold" text (in red) is displayed as the CCI indicator reaches a value of -150 or less.
New Label Row/Grouping
Sections of the grid can be separated by using label rows ("Stocks" and "Futures" rows below). Label rows separate rows of instruments thus creating separate groups that can be sorted separately.
New Row Highlight
As data within a row change, optionally configure highlight change notification. See the yellow cells in the image above.
New Instrument Level Session Definition
In 6.5, the MA had one session start/end time. In 7.0, you can configure the MA to use instrument level session template definitions.
New Data Columns
We have added additional Market Analyzer columns including fundamental data.
- AskPrice
- AverageDailyVolume
- Beta
- BidPrice
- CalendarYearHigh
- CalendarYearHighDate
- CalendarYearLow
- CalendarYearLowDate
- CurrentYearsEarningsPerShare
- DailyHigh
- DailyLow
- DailyVolume
- Description
- FiveYearsGrowthPercentage
- High52Weeks
- High52WeeksDate
- HistoricalVolatility
- Indicator
- Instrument
- LastClose
- LastPrice
- Low52Weeks
- Low52WeeksDate
- NetChange
- NextYearsEarningsPerShare
- Opening
- PercentHeldByInstitutions
- PositionSize
- PriceEarningsRatio
- ProfitLoss
- RealizedProfitLoss
- SharesOutstanding
- TimeLastTick
- TraderContacts
- UnrealizedProfitLoss
New Conditions
- Added "Greater than or equal to"
- Added "Less than or equal to"
- Added "Cross above"
- Added "Cross below"
Back to Top
Charting Enhancements
"Loading data..." Pop Up Window Removed
We relocated the loading data control to the bottom of the Control Center window (where requested can be aborted if the provider allows it) and replaced a simple "Loading data…" text within the chart.
Enhanced Command Line Driven Chart Changing
Currently, you can directly type a new instrument symbol in a chart to change the data series. We have enhanced this by providing command line access to change the interval also.
For Example:
- Type "MSFT 3m" to change to MSFT 3 minute chart
- Type "1000t" to change to 1000 tick chart
- Type "8r" to change to a 8 tick range chart
New Chart Styles
Additional styles such as Renko, Point and Figure, Kagi and Line Break.
New Indicator Plot Styles
We have introduced several new indicator plot styles including block, triangle up, triangle down, triangle left, triangle right and cross.
New Ask/Bid Charts
When creating a chart, you can select that market data type (Ask, bid or last) that the chart is driven by. Historical bid/ask data is only supported by some broker and market data vendors.
New Multi-Series Charting
You can now mix multiple series on a single chart without limitations seen in other platforms. We have introduced a new chart level property "Equidistant bar spacing" which is automatically set to false when mixing more than one series. What this does is creates a time axis that is void of any missing bars so that mixed series of any type can all be accurately aligned to time. When this property is set to true, bars have even space between them and missing time bars are excluded.
Click the image to the right to enlarge, it depicts a mixed series chart that plots ES 5 Minute, NQ 1 Minute, YM 1000 Tick and YM 10 point range series.
New Data Series Window
Click the image to the left, it depicts the new Data Series window which replaces the the former Format Data Series window. The style of this new window is consistent with the Indicators and Strategies window. You will notice that in addition to some new parameters, Data Series specific parameters have been relocated from Chart Properties window to this new Data Series window. Each Data Series added to a chart can be parameterized individually. We have also enhanced how instruments are selected and/or searched for.
Enhanced Data Box
The Data Box was redesigned to support multi-series charting. New features were added for more visual control over how data is displayed. You can now enable/disable the following information:
- Data Series labels
- Indicator labels
- Panel numbers
You can also control font and have the box automatically size dependant on each chart's aggregate information that is required for display. Any indicators plots that are set to Transparent color will no longer be displayed. Lastly, column widths are sizeable.
Enhanced Mini Data Box
The Mini Data Box has been enhanced in several ways. First, the data format is compressed to take up less space. Second, all series in a panel will be displayed to support multi-series charts and lastly, indicator plot values are now displayed. Click the image to the left, you will see the D and K plot values of the stochastics indicator.
New System Indicators
- Added "T3" indicator
- Added "DEMA" Double Exponential Moving Average indicator
- Added "Double Stochastics" indicator
- Added "ZLEMA" Zero Lag Exponential Moving Average indicator
- Added "Chaikin Volatility" indicator
- Added "LinRegIntercept" indicator
- Added "LinRegSlopes" indicator
- Added "MAEnvelopes" indicator
- Added "PFE" Polarized Fractal Efficiency indicator
- Added "RSquared" indicator
New Indicators on Indicators
Click the image to the right to enlarge, it depicts the new "Input Series" dialog that is available when adding an indicator to a chart. In addition to selecting a Data Series input, you can optional expand the indicators section and select any indicator as input to another indicator. You can infinitely nest indicators within indicators…Not that this would be required…
New Indicator Defaults
If you right click on any added indicator in the Indicators window, you can now select "Set Default" which will save the selected indicator’s parameters as default values for the next time you use this indicator anywhere within NinjaTrader.
Enhanced Indicator Labels
You can now set an absolute label by enclosing the label in quotations. Doing so will trim the trailing system added series/parameter information. Instead of seeing "MyIndicator(101 parameters go here…)" you can display only "MyIndicator" if you wish.
New Panel Scales - Three Independent Scales Per Panel
Data Series and Indicators now have a "Scale justification" parameter that can be set to "Right", "Left" or "Overlay". Click the image to the left to enlarge, we have an ES 5 Minute Data Series on the right scale with a Stochastics indicator on the left scale.
New Fixed or Automatic Scale Range
Each panel in a chart contains three scales, right, left and overlay. Each scale’s range can be automatically calculated based on the highest high and lowest low of all plotted objects or the scale can be manually set by defining the value as per the image below. You can also set the scale range via mouse dragging in the y axis. If the range is manually set (Fixed) an "F" in the upper right portion of the panel will be displayed. You can also set the scale to be linear or logarithmic.
Click the image to the right to enlarge, a stochastics indicator sits on the left scale. The left scale is fixed (see "F" in top left corner) to display values from 0 through 100.
Enhanced Scale Properties
A scale can be set to logarithmic or linear. Grid lines can now be set at user defined intervals expressed in points or can be left for automatic generation.
New Flexible Chart Panel Management
Right mouse click in any y axis will bring up a panel context menu where you can move up, down, automatically arrange or maximize chart panels.
Enhanced Panel Selection
When adding an Indicator or Data Series to a chart, you now have several options for panel selection. "New panel" will insert the object into a new panel on your chart, "Same as input series" will lock your indicator to the same panel as the underlying input data series thus move the data series to a different panel and the indicator will move with it or, just select an available panel number.
New Global Draw Objects
Draw objects now have an "Attach to" property and can be set to Instrument. Setting a Draw object to an instrument makes it global and any chart with this instrument regardless of chart type will display this draw object and receive any location and property modifications made. Click the image to the right to enlarge, it shows a 1 minute and 5 minute chart with a global line object.
Enhanced Drawing Tools
- We have added new "Triangle" and "Arc" drawing tools.
- Fibonacci text levels can now be displayed on the left or right
- User defined fibonnaci levels can now be saved a templates
- Regression Channel now supports selected price type
- "Snap to OHLC" has been renamed to "Snap Mode" since it will now also snap to valid indicator data points
- Select a draw object and right click will display relevant menu items
- Right click while drawing will cancel the action
- Right click while "Stay In Drawing Mode" will escape from this mode
New Ruler Drawing Tool
Ruler drawing tools allows you to draw as many rulers as you wish that measures the X and Y values between two selected points. You can also easily measure, get the values and right click to cancel the action should you not wish to maintain the ruler on the chart.
New Draw Object Locking and Attaching
- Draw objects can now be locked via the UI and through NinjaScript®. Locked objects can't be moved.
- Draw objects can be attached to any Data Series or Indicator on a chart. Attaching them to an indicator will associate the draw object to the same scale.
New Chart Object Paint Ordering (z-order)
As you select any object on a chart, hold down the SHIFT key and scroll with your mouse wheel, you can change the paint layer of the selected object in order to move it in front of or behind other drawn objects. Click the image to the left to enlarge, the rectangle is selected and is currently on "Level 5 of 5" meaning, it is at the very bottom of the paint order. You could scroll your mouse wheel to "Level 1 of 5" which would put the rectangle on top of all others objects.
Drag & Drop of Chart Objects
Chart objects can be selected (stochastics indicator below is selected) and moved to different panels, different panel scales or create new panels. At area (1) click the image to the right to enlarge, the mouse cursor is moved to the bottom of the chart canvas which is then indicated by the light blue bar. If the indicator being dragged is dropped there, a new panel would be created. If an indicator is dragged and dropped onto an existing panel, NinjaTrader select the most suitable scale for the indicator.
Enhanced Global Cross Hair
We added a chart level property "Global cross hair time axis scrolling" that when set to false, if another chart’s global cross hair time axis is outside of the the visible range of the chart, the time axis will not be scrolled to the same point in time. Seconds are now displayed on the x axis cross hair label when working with tick based intervals. We have also enhanced the cross hair to support multiple series and multiple scales.
Chart Trader
Orders and position display now have an "Auto scale" property. When set to false and an order is outside the high/low range of your Data Series, the Data Series will no longer look scrunched.
Back to Top
Strategy Analyzer Enhancements
Performance Enhancements
Optimizations, walk forward optimizations and basket backtesting now support multi-core which significantly reduces overall testing time. In addition, we have also optimized the core backtesting routines which results in performance gains.
Optimization Enhancements
- Added "Genetic" optimization in addition to the default brute force optimization
- Added support for optimization on "max. sharpe ratio"
- Added support for optimization on "max. probability"
Improved Strategy Development/Backtesting Workflow
The cyclical process of scripting, compile, backtest, tweak, compile and backtest again was cumbersome in NT 6.5. We feel we have improved this process by implementing the backtest and optimization property grids as pinnable docked windows, adding a "Run…" button and removing the "Success" pop up window after script compilation. Now you can compile and immediately press the "Run…" button and iterate through this cycle efficiently.
New Data Series Optimization
In addition to optimizing your strategy parameters, you can optimize your strategy against bar intervals. For example, optimize on minute bars between 1 and 100 to see what bar interval may have worked best.
New Monte Carlo Analysis
You can run Monte Carlo analysis against your back test results.
New Distribution Graph
Graph trade distribution by entry/exit time to determine when your trades are the strongest/weakest.
New Combined Results
When backtesting a list of instruments (basket) the trades generated are aggregated into a "Combined Results" virtual data set and it’s performance statistics can be reviewed. During optimization, results can be optimized on the aggregated results.
Back to Top
Strategy Wizard Enhancements
New Compile Button
You can now compile your strategy at any point in the wizard vs at the very end.
New Condition Elements and Actions
- Added condition element "Session break"
- Added action "Set bar color"
- Added action "Set back color"
- Added action "Set back color all"
- Added action "Candle outline color"
- Added drawing action "Regression channel"
- Added drawing action "Fixed text"
Back to Top
Strategy Deploypment Enhancements
Persistence between sessions
Strategies will now be maintained between NinjaTrader shutdown and restart. On restart, you can multi-select strategies in the Control Center Strategies grid and enable all strategies to run in a single click. You can disable, change parameters and re-enable a strategy. You can now also save a set of parameters as default. You no longer have to re-add strategies every time you restart NinjaTrader.
New strategy grid with support for multi-instrument strategies
Strategies that execute against multiple instruments will now have expandable toggle to display the position of each instrument within the strategy as per the image to the right, click to enlarge. In addition, you can now generate a historical only performance report.
New Chart in Performance Viewer
When running a strategy from the grid (not from the chart) in 6.5, you were unable to view the strategy in the chart. In 7.0 we added a chart in the performance view window when electing to review a strategies' performance running in the grid.
Position synchronization
You can optionally have your strategy synchronize your live account to the strategy's position when a strategy is enabled. If your strategy starts long 1, a market order for 1 is immediately sent to your account.
Connection loss handling
You can now control how a strategy behaves on a loss of connection. Recalculate the strategy to ensure any missed data is accounted for, disregard missing data (maybe your strategy is not dependant on historical data) and keep it running as the connection comes back up or stop the strategy and send you an email alert.
Alert email handling
Any log messages that are generated from your strategy (either user called or internally called) at the "Alert" level will optionally send you an email so that you can react to any unwanted situations.
Over fill detection handling
All orders are now monitored for over fill. This means that your strategy has an order has filled in part or in whole after the cancellation requested was submitted. An alert level log will be issue and optionally an email will be sent. This can be overridden and handled yourself.
Back to Top
General NinjaScript® Enhancements
Memory Enhancement
Objects that implement the IDataSeries interface excluding DataSeries objects that hold indicator plot values now by default hold only their most recent 256 values. This can be overridden to behave like 6.5 by holding an infinite (all) stored values.
Improved 3rd Party Vendor License Management
To get around the occasional duplicate machine ID issue we have introduced an optional user-defined prefix. In short, you will not run into duplication issues that can't be resolved
New OnFundamentalData() Method
A new method that is called on any change in fundamental data as driven by your market data vendor.
Historical Data Import
Import formats are now implemented as NinjaScript® objects. Advanced developers can program their own custom import formats.
Changed Volume from type "int" to type "long"
This is code breaking. To remove size limitations with using an integer, we switched to a "long" data type. Existing NinjaScript® objects that use Volume will have to be tweaked.
Miscellaneous Enhancements
- "Save As" and "Print" menus to the Output window
- Improved File > Utilities > Import NinjaScript® to support custom 3rd party assemblies
- NinjaScript® exceptions are now sent to the Output window in addition to the Log tab
- Added "Weighted" and "Weighteds" price type data series
- SendMail() method now supports multiple email addresses
- Output window can now be launched from a chart
- Removed success compilation box
- Added "OnStartUp()" method which is called after Initialize() but before "OnBarUpdate()"
Back to Top
NinjaScript® Indicator Enhancements
Multi-Series Indicators
Create custom indicators that require multiple series. Same concept implementation that we have with NinjaScript® strategies.
Multi-Colored Plots
Support for multi-color plots. Although this can be achieved in 6.5 through the use of multiple plots, in 7.0 this can be achieved more efficiently with the use of a single plot.
Changed Sequence of OnBarUpdate() Method Calls
There were situations where nested indicators using a custom data series as input did not fire OnBarUpdate() in the correct sequence.
New Price Marker Formatting
You can now override the price marker format of an indicator.
Draw Objects Enhancements
Draw objects are now associated to an indicator which means that if a user removes a draw object from the chart, it will also remove the indicator. In addition, all draw objects spawned from an indicator share the indicator’s z-order.
IDrawObject - IDrawObjects are now returned to the caller on all Draw() methods. IDrawObjects expose draw objects properties.
Indicator Automatic Wrapper Generation
We had to make some changes to the automatic wrapper generation (most users don’t even know this occurs) at compile time. Any scripts imported/migrated from 6.5 will have their wrappers regenerated automatically however, any developer providing scripts as an assembly will have to regenerate their wrappers for version 7.
Back to Top
NinjaScript® Strategy Enhancements
In 6.5 some users were burdened with our "Internal Order Handling" rules. We have introduced unmanaged order submission which bypasses the convenience of our order handling layer. This lower level of programming allows you to do what you want relative to order submission/management without any limitations other than any imposed by your broker. There are only three methods, SubmitOrder(), ChangeOrder() and CancelOrder(). You then get the flexibility of managing your orders how you see fit and optionally handling rejections
New Account Access
We added methods to get access to live brokerage account values such as cash balance. This is dependant on the broker and the level of information they provide if any.
Enhanced IOrder Objects
IOrder objects are now unique through a strategy instance and will reflect the current state of the order. In 6.5, these objects were volatile and only reflected the orders informational state at one instance in time. In addition, we have exposed order error and error message properties.
Miscellaneous Enhancements
- Added "StdDev" standard deviation to the TradesPerformance class
- Strategies are now disposed on disconnect
- Fixed issue with sequence of OnBarUpdate() calls for multi-series strategies
- Trigger custom event now executed in the calling thread
Back to Top
Connectivity Adapter Enhancements
Barchart Adapter
- Updated to the latest API which supports unfiltered historical tick data
- Added support for a divisor parameter in the symbol map to address incorrect price levels where needed
eSignal Adapter
- Updated to eSignal Standard API 152
- Added support for a divisor parameter in the symbol map to address incorrect price levels where needed
- Added support for eSignal fundamental data
- Fixed issue where timestamp’s could be inaccurate during pre and post market hours
- Addeds support for $TVOL/$TVOLA/$TVOLQ
Interactive Brokers Adapter
- Fixed issue where price events with zero volume were filtered
- Added Indian Rupee and NSE exchange support
IQFeed Adapter
- Updated to the latest API
- Optimized processing of news and historical data series requests
- Fixed issue where daily events were not processed correctly if NinjaTrader was left connected to IQFeed overnight
- Fixed issue where loss of connection during a pending historical data series would cause NinjaTrader to hang
- Addes support for back adjusted continuous contracts
- Added 64-bit support
MB Trading Adapter
- Added support for MBT historical data
- Added option to drive streaming level 1 data from either snap shot data or time " sales data
- Fixed issue where redundant execution events were thrown after recovery on a loss of connection
Patsystems Adapter
- Updated to the latest Patsystems API
- Added support for a divisor parameter in the symbol map to address incorrect price levels where needed
- Added support for account values (applicable only if FCM provides this data)
- Fixed issue where data streams could abruptly stop
TD Ameritrade Adapter
- Implemented streaming API, slight performance improvement
Vision Financial Markets Adapter
- Added 64-bit support
Yahoo Adapter
- Complete performance overhaul
- Optimized HTTP request processing
Zen-Fire Adapter
- Updated to the latest API
- Position average price is now driven through the API vs client side calculated
- Fixed issue with duplicate execution id's with Eurex
- Improved reconnect logic
- Added 64-bit support
Back to Top








































































