BlackBird is a NinjaTrader Strategy, which significantly extends the functionality of NinjaTrader’s Chart Trader, ATM, and much more. It serves both discretionary traders and automation traders.
For the discretionary trader, risk and money management rules can be defined to assist the trader from violating their daily trading limits and risks, and that’s just the beginning. The trade designer aspect gives the trader unprecedented control of every order type. The ability to automatically manage the entry, profit target and stop-loss. And of course, manual movement of the orders can be made at any time.
For the automated trader, BlackBird can automatically enter a trade using your favorite or signal, and then manage all order types, as mentioned before, for a fully automated trading system. BlackBird can even use BloodHound signals to manage your profit and stop-loss orders to build a truly advanced automated trading system.
Tip: find more documentation for BlackBird in the links to the left. Under the heading “BlackBird”.
BlackBird is a strategy, and NinjaTrader gives you the option to run strategies on a chart (which is what we show in our videos) or they can be run on the Strategies tab in the NinjaTrader Control Center. For more information on how to initiate a Strategy see NinjaTrader’s documentation here.
Both methods are identical in terms of setting up BlackBird. Below we will cover the more common way of running a Strategy by adding BlackBird to a chart.
Special Notes from NinjaTrader when running a strategy: Strategy Position vs. Account Position
Adding BlackBird to a Chart
- Begin by opening a chart in NinjaTrader.
- To add BlackBird, right-click on the chart and select “Strategies…”, followed by selecting SiBlackBird. On the right hand side you will see the parameters for BlackBird. If Strategies… is grey & disabled see NinjaTrader’s documentation here to enable it.
- Scroll to the top of the parameters list and adjust any options as needed. See below for a description of each parameter. Lastly, set Enabled to True before clicking the OK button.
- Once BlackBird is loaded on the chart, click the Order Setting button to start setting up BlackBird.
*NOTE* An OCO Order Set must be defined to use the Trade Controls on the chart.
Using BloodHound?If you are using BloodHound signals in BlackBird it is not necessary to have BloodHound on your chart, because BlackBird can add BloodHound to the chart. It is suggested to leave BloodHound off the chart, if this is the case, to save CPU resources.
Starting & Ending BlackBird
There are a couple of NinjaTrader setting that affect order handling when enabling or disabling BlackBird. The NinjaTrader settings mentioned are found in Control Center » Options » Strategies tab » NinjaScript tab.
When enabling BlackBird, having NinjaTrader’s ‘Immediately submit live working historical orders‘ selected and BlackBird » Backtest Mode = True, NinjaTrader will immediately submit an order in the direction of BlackBird’s last historical trade. Setting BlackBird » Backtest Mode = False will prevent immediate order submission.
In Control Center » Options » Strategies tab » Order handling, you may want to select ‘Cancel entry orders when a strategy is disabled, and uncheck ‘Cancel exit orders when a strategy is disabled’.
Tip:If you do not fully understand the setting in Control Center » Options » Strategies tab » NinjaScript tab, then we suggest selecting ‘Wait until flat before executing live’
Quick Start Video –
Setting Up Your First Order Set
List of BlackBird
Each week we host a free live workshop where you can ask questions and see things demonstrated in BlackBird. Find the schedule and list of recordings on the workshops page
(opens in new window)
Common NinjaTrader Strategy Properties
NinjaTrader has several adjustable properties that determine the behavior for all strategies. These properties are available in the Strategies window and Options window. SharkIndicators does not lock or hard-code any of these properties so the trader can adjust them to suite their own needs.
These properties are in the Strategies window.
If you use an indicator which requires the Set up » Calculate property to be set to 'On each tick' to run correctly (such as a volume profile or order flow type of indicator), then NinjaTrader requires the hosting strategy's (i.e. BlackBird) Calculate property also be set to 'On each tick' in order for that guest indicator to run correctly.
In other words, NinjaTrader takes the Calculate setting of the hosting NinjaScript (strategy or indicator) and applies it to all the guest indicators used by the host. In this case BlackBird is the hosting NinjaScript.
Please note, if you are using BloodHound within BlackBird, and BloodHound is using an indicator that requires Calculate be set to 'On each tick', then BlackBird must be set to 'On each tick'.
These properties are in the Options window. Go to Control Center » Tools » Options window » Strategies category » Properties list.
The properties listed below can only be set in the code. They can not be changed via the Strategies or Options window. SharkIndicators does not set any of these properties. Thus, NinjaTrader applies the default setting to BlackBird and Raven.
These properties are in the Strategies window.
Discretionary Trade Management
BlackBird provides complete discretionary control over the Profit Target and Stop Loss placement.
Modifying Order Price: To modify the price of an order, left click with your mouse on the order line or the right section of the label. A ghost order line will appear and display the number of ticks you are away from the market.
When above the ask the label will display a positive value. When below the bid the label will display a negative value. At the Ask or the Bid the label will display @Ask or @Bid. Once you have the order at the price you desire, click again to complete the move. This is a click once and click again method. Do NOT click and drag.
Cancelling an Order: To cancel an order, left mouse click on the red X on the order marker.
Using BlackBird in the Strategy Analyzer allows you to run historical analysis on a basket of instruments. Click here for NinjaTrader’s Strategy Analyzer Help guide. Due to some unusual behavior of the Strategy Analyzer these simple steps should be followed before running the Strategy Analyzer. Open the NinjaTrader Historical Data manager (found in Control Center » Tools » Historical Data) and download all the historical data you want to backtest against, while the data feed is connected. Then disconnect the data feed before clicking Run Backtest.
The Optimization feature is not able to access the dynamic nature and various changeable parameter items and settings inside of BlackBird (and BloodHound). Therefore, it has limited practical value. The issue is NinjaTrader requires a static list of parameters for their property grid. e.g. SharkIndicator software allows you to use indicators of your choosing. If your system uses the MACD, the Fast , Slow , and Smooth parameters need to be listed on the property grid. But, later if you decide to remove the MACD and use the Momentum instead then the Period parameter need to be added and the Fast , Slow , and Smooth parameters for the MACD need to be removed from the property grid. Unfortunately, NinjaTrader does not allow the property grid to be dynamically updated or changed like that.
We hope a solution can be found in the future. At this time, none of the Optimizer features are available in either version of NinjaTrader.
Backtesting Tips & Help
Simulated OrdersClick image to enlarge.
What are those Simulated order flags?. You have probably never seen those simulated flags before when backtesting other strategies. That is because they are only available with SharkIndicators' strategies. They provide a visual reference for what NinjaTrader is doing. When backtesting a strategy, quite often a historical entry is executed, but the exit orders did not get hit before the chart reaches real-time data. That last backtest trade is converted into a simulated real-time trade so that NinjaTrader can finalize the backtest results, using real-time data.
NinjaTrader does not provide visual ques on the chart indicating a backtest trade needs to be finalized, except by carefully reading the last 'Plot executions » Text and markers' on the chart. These simulated order flags do just that.
Calculating Backtest Results
Backtesting is Not performed by the SharkIndicator's strategy (i.e. Raven and BlackBird). Backtesting results are calculated by NinjaTrader's backtesting framework. Regardless of backtesting on the chart or through the Strategy Analyzer, the results are calculated by NinjaTrader. All a strategy does is simple, it tells NinjaTrader when and where to place an order, along with changing an order's price when an order is moved (e.g. a trailing stop-loss).
Click image to enlarge.
The Mechanics of Backtesting
This video was created during NinjaTrader 7. However, the lessons taught are still good practice for NT 8.
It is a good idea from time to time to reset the NinjaTrader database to help with performance. If you start to notice NinjaTrader pausing when an order is submitted, or a delay in the time it takes for an order to execute, or it takes a longer time for BlackBird/Raven to start up, then that might be a sign that NinjaTrader’s database is getting to big, and resetting it typically helps. To reset the database open the Options window, select the Data tab
, then click Reset DB button.
The links below are provided to help you understand the various aspects, discrepancies, and information you need to understand about backtesting and other aspects of running a strategy, which can be a complex topic.
Data Feed Disconnect/Reconnect links
(Note worthy posts; #2 & #6)
NinjaTrader 8 links
(this explanation still applies to NT 8)
(inside the 'How Bars Are Built and Orders Filled' section)
NinjaTrader 7 links
⚠ Know the Risks of Computerized Trading
We want you to be aware there are numerous components, both hardware and software, involved with computerized and automated trading. The process starts with your computer, running Windows, running NinjaTrader (NT), and running an NT strategy (i.e. Raven or BlackBird). When the strategy receives a “signal” from the BloodHound logic, it sends an order request to NinjaTrader’s order submission framework. At which point NinjaTrader transmits the order to your Broker, who must approve the order and then sends it to the Exchange. If your order is filled, the exchange notifies your broker, who then notifies NinjaTrader, and finally NinjaTrader updates/notifies the strategy. As this simplified example illustrates, there are several components & “players” involved and lots of software programs that make this all happen. If there is any miscommunication, internet lag time, or server overloading among these components, the strategy may get out of sync with your position(s) at the Exchange. If you suspect any issue with your live orders use the ‘Flatten Everything’ option in the NinjaTrader Control Center, and then call your broker immediately to verify. See the "Risks of Electronic Trading with NinjaTrader" section for more information.