s
Contact Login Register
h M

NinjaTrader Algo Trading Strategies

rss

Best practices for NinjaTrader Algotrading with indicators and strategies.... Topics include algograding with Futures, Crypto, Forex, and equities/stocks. How do you backtest / optimize strategies with NinjaTrader? You have come to the right place!

I was recently researching specific algo bots for crypto and came across an interesting setup on YouTube…  The setup seems pretty popular and does backtest out pretty well so I decided to develop a free crypto bot for NinjaTrader and offer it to the algo community! 

The video that I based the algo bot on is below (Note: we are not affiliated in any way with this organization or content, just providing some backstory as to what the setup is based on). https://youtu.be/xbAQR1e1XY8

The basics for the setup...

  1. Add the SSL Channel indicator to a one hour chart … Determine the direction from this (I have included a free NinjaTrader SSL Channel indicator in the download / install). The default settings of “10” are ok for the SSL Channel Period but you can change these in the bot if you desire. 
  2. Add an EMA indicator to a smaller timeframe chart (from his video, a 5 minute chart).  For the setup g from this video he is using a 50 EMA, however you can adjust this within the crypto bot strategy to be any EMA you want. 
  3. Wait for the price on the 5 minute chart to be below the EMA for long entries, or above for short entries (you can choose to have it crossing or below within crypto bot strategy setup). 
  4.  Choose from any bullish or bearish setups for your entry… Within the video he is going with a Engulfing pattern for entry however in the Crypto Bot Strategy you can choose from any of these setups for entry:

a.   Engulfing
b.   Harami
c.   Harami Cross
d.   Belthold
e.   Hammer
f.    Hanging Man
g.   Morning / Evening Star
h.   Rising / Falling Three
i.    Three Soldiers / Crows
j.    Piercing Line
k.   Upside Gap Two Crows
l.    Downside TasukiGap
m.  Dark Cloud Cover

Crypto Bot Strategy (Download Free Below!) 

 

I ended up adding several features to the strategy which can provide optional settings... 

  •  A minute interval for the higher timeframe (default is 60) 
  • Change several other inputs such as the SSL Channel period, EMA, and multiple entry inputs. 
  • Trailing stop loss 
  • Display the upper TF on the lower TF chart (with this you don't really need to ever pull up the upper TF SSL Channel). 
  • Highlight unusual volume (either very minimal or significant) on the chart. At the moment this is only part of the indicator and not the strategy... I am open to input on if anyone thinks these variables would be useful for integration within the strategy. 
  • Ability to enable the algo bot on startup, or based only after clicking a button after its enabled. Also individual buttons to manually go long, short. 

Order Entry Options

  • Optionally only enable long or short entries (or both!)
  • Profit target can be a recent high/low, or standard ticks/currency. 
  • Stop loss can be trailing or static number of ticks/currency.
  • Ability to set stop loss to break even after "X" number of bars.
  • Take profit / exit position after "X" number of bars in your direction.
  • Exit reverse candlestick pattern - Will exit on any reverse pattern! 

 

Backtesting - Below is some historical results with ETH... There are also some great results with BTC and others as well.  

The file is a free download however you do need to register with us to receive the file.

DOWNLOAD CRYPTO BOT STRATEGY FOR NINJATRADER (FREE BOT!)

Hope this is useful for anyone! Please post comments and any feedback!

-Chad

Strategy Analyzer - Analyzer 13 & Inbox - Nash Technologies LLC _- Mail 2021-04-12 at 8.15.43 PM.jpeg

NinjaTrader strategy analyzer has many features that you don't always know until after you have worked within the interface for a while...


Seven quick tips for working with NinjaTrader Strategy Analyzer... 

Epic Tip 1: Whenever you optimize an algo strategy, you can expand the minimum / maximum properties and type in each field, or simply type directly in the textbox. 

It can take some work to go step by step through a strategies properties and setup the minimum and maximum values for optimization... but did you know you can also just type in the textbox within strategy analyzer?

Option 1: Expand the properties settings and manually enter values for minimum, maximum, and the value to increment. 

Option 2: Simply type in the values without expanding. The format is min;max;increment. So to increment values from 50 to 200 in increments of 25 it would look like: 50;200;25

Epic Tip 2: Tick Replay? Maybe not needed with high-fill resolution!

Certain algo strategies (including most Epic Collection strategies!) are coded to take advantage of tick replay, and the strategy results can greatly benefit by enabling this feature. Within NinjaTrader, you can enable the feature under Tools, Options, Market Data, Show Tick Replay. 

This option will then be available within the data series when you are setting up strategies or strategy analyzer.  To learn more about how tick replay works and the advantages for enabling the feature you can check out the NinjaTrader user guide. https://ninjatrader.com/support/helpGuides/nt8/?tick_replay.htm

Why not always enable tick replay? There is a significant performance impact! Want a better option without the need to have the major performance hit? You can specify the order fill resolution to be set to "High" and choose a value such as every minute or even every second. You might be surprised with how the results are similar to tick replay without the major performance hit. 

Epic Tip 3: Strategy Analyzer Logs.

By default, you might not even know strategy analyzer had logs... and perhaps that's because they shouldn't even be called logs. When I first heard of the strategy analyzer logs I assumed they were referring to log files I might need to send their support team, or perhaps log files that might include errors the strategies have or a reference that I had to open up in notepad etc...  

Well... get ready for a surprise! With all of the work and time that goes into strategy optimization, its a shame when the results just get lost if you don't export or save the results within a template.  This is where strategy logs can be helpful. 

To enable the logs, you right click within the strategy analyzer interface. You will see an option to "show logs". 

Wow! Look mom... I can filter by strategy or by instrument!

Oh... I can also right click within the grid, and open these past historical results within strategy analyzer!

From here you can research all of your past strategies and optimization results... You can "pin" them, and enable features within the "properties" section of Strategy Analyzer to show columns such as the profit factor, or button to view and open the strategy. 

Epic Tip 4: Save templates to move between workstations.

When moving between development and production environments, it can be extremely helpful to save templates. Saving templates within strategy analyzer is easy...  in the bottom right you will see a "Templates" menu item, where you can click it to open, or save templates. These can then be retrieved when you want to go and enable a strategy within the strategies tab of NinjaTrader, or within the strategies interface within NinjaTrader charts. 

So how do you move them from one work station to another? Easy... simply zip up/compress the folders under your templates folder, copy them to the other system, and unzip them.  Typically this directory is here: \Documents\NinjaTrader 8\templates\Strategy folder. 

We provide a full video that covers this process, including how to take advantage of optimized templates we provide for the best NinjaTrader strategies. 

You can check out the video and download templates at http://www.nashtech.xyz/templates.

Epic Tip 5: Sort by your worst trades... Add other indicators to the chart to see if you could have avoided that entry. 

Often times a strategy has great results and trades great except a couple bad apples that really impact the overall results. You can easily find the worst trades, navigate within the chart for those times and sometimes get a better picture for what might be happening. 

For example, many custom strategies we build for clients we often include an overall "max stop loss". This is needed for example if their normal stop loss is set to "last bar high/low", when the previous bar was so parabolic and significant that it really impacted their stop loss. 

First, navigate within Strategy Analyzer by clicking in the upper left dropdownlist, and select "Trades". Next, check out the entry time and exit time within the executions. 

Next, navigate within the "Chart" by selecting that from the dropdownlist. Navigate to that date/time of the entry and see if you can determine anything that would have helped keep you out of that trade? Sometimes this includes adding other indicators on the chart and checking their values. Most of the epic collection of strategies include features to "Opt Out" of trades if the Vortex indicator, choppiness indicator, or ADX indicator are at extreme ranges. 

Oh... and if you are trading with the best NinjaTrader strategies and you find your results are just horrible? Just choose the option for trade direction and change it to "reverse" :) All the strategies within the Epic Collection include the ability to trade in reverse if the setup is optimized so poorly you want to actually trade differently. 

Epic Tip 6: Backtest against multiple instruments at once, use percent and variables such as ticks rather then fixed currency.

If you discover that similar settings for your strategy work across many instruments, consider testing against many instruments at one time. How do you do this? Well first, hopefully your settings are using input variables such as percentages, ticks, pips, etc... When you have fixed currency type variables its harder to backtest against multiple instruments. Next... When you have selected to backtest or optimize within strategy analyzer, choose the instrument and instead of selecting the single instrument, choose "Select All". This is helpful also if you want to enable the strategy on live simulator accounts as it can create the strategy for each instrument rather you manually selecting each and every instrument. The results will spit out per instrument and save you a lot of time! 

Epic Tip 7: Take optimization sloooooowly.

Strategy optimization is powerful... but take when not used properly, it can be a waste of time. For example... what if you forget to select to trade both long and short, and you don't realize this until the optimization takes hours to run? Or after you feel comfortable with the strategy you want to test all different variables and multiple profit targets and stop losses, only to realize when you click run its going to take 70 days to complete! This can easily happen when you define too many variables, too small of increments, etc... Try adjusting the minimum and maximum on just a couple variables to make sure you don't end up with an optimization that takes days to complete! 

NashTech_Strategy_WaitXBarsBeforeReentry.jpeg

Feature: Wait X Bars from Last Exit

Benefits: Avoid continued entry and/or exit, possibly in market conditions that are not suitable for the trading strategy. 

We code a log of NinjaTrader strategies... and we like to provide tips for other developers or traders wanting to create custom strategies for NinjaTrader. 

Sometimes the market doesn't always respond well to your algo strategy... In that situation, you want to avoid entry, often for money management and controlling your trading strategy. We use a special feature within NinjaTrader for this.

We include this feature within all of the Epic NinjaTrader Indicators and strategies but you can reference the same code below:

Within OnStateChange()


BarsRequiredBeforeReEntry = 5;

 

Within Properties:


[NinjaScriptProperty]
[Display(Name = "Bars Required Before ReEntry", Order = 1, GroupName = "NashTech Order Entry")]
public int BarsRequiredBeforeReEntry
 { get; set; }

Within OnBarUpdate:


int BarsSinceExit;
BarsSinceExit = 0; 

 if (BarsSinceExitExecution() != -1)
                {

        BarsSinceExit = BarsSinceExitExecution();
           
                    if (BarsSinceExit < BarsRequiredBeforeReEntry)
                    {
                        if (EnableDebugMode == true)
                        {
                            Print("We should only be here if bars required before re-entry is less than bars since exit");
                            Print("Bars Since Exit Execution:" + BarsSinceExit);
                            Print("Required Before ReEntry:" + BarsRequiredBeforeReEntry);
                            Print("Time of Skipping order:" + Time[0]);
                        }
                    
                        BarBrushes[0] = PendingBrush;

                        return;
                    }

                }

 

 

Questions? Leave a comment! 

 

-Chad

All subscribers and lifetime license users get the latest templates to install based on our weekly optimization results. If there is an instrument you want the most recent template for, just ask! For trial users all templates are about 30 days old.

DISCLOSURE: Futures, stocks, and spot currency trading have large potential rewards, but also large potential risk. You must be aware of the risks and be willing to accept them in order to invest in the futures, stocks, commodities and forex markets. Don't trade with money you can't afford to lose.

Please remember that past performance may not be indicative of future results. Different types of investments involve varying degrees of risk, and there can be no assurance that the future performance of any specific investment, investment strategy, or product (including utilizing Nash Technologies indicators or back-testing strategies), or any non-investment related content, made reference to directly or indirectly in this commentary will be profitable, equal any corresponding indicated historical performance level(s), be suitable for your portfolio or individual situation, or prove successful. Due to many factors, including changing market conditions and/or applicable laws, the content and software may no longer be reflective of current opinions or positions.

Historical performance results for investment indices, benchmarks, and/or categories have been provided for general informational/comparison purposes only, and generally do not reflect the deduction of transaction charges, the deduction of an investment management fee, nor the impact of taxes, the incurrence of which would have the effect of decreasing historical performance results.  It should not be assumed that your Nash Technologies LLC product, consulting, or service correspond directly to any comparative indices or categories.

Known Limitations / Testimonials: Neither rankings and/or recognition by unaffiliated rating services, publications, media, or other organizations, nor the achievement of any designation or certification, should be construed by a client or prospective client as a guarantee that he/she will experience a certain level of results if Nash Technologies LLC engaged, or continues to be engaged, to provide financial indicators or consulting services. 


Site creation : Dune Interactive