Skip to main content

pjsProfileBars – An easy-to-use order flow tool for NinjaTrader 8

PJSProfilebars was created as nothing at the time I could find existed to fulfil my desires (which is typical of most of the tools I create). Namely, order flow presentation in a simple, clear way that also met my performance requirements (trading instruments like NQ in very volatile times can be tough!). It also had to be genuinely useful. I trade real $ – So it can’t just look pretty.  I think it’s still a unique tool in terms of what it does, and how it does it. If you trade futures, I truly believe this is one of the best tools available anywhere, period. See what you are missing vs traditional bars!

Before, and after! See what you are missing inside those bars…


Amazingly simple to use. PJSProfilebars lets you see INSIDE the bars and identify areas of interest and importance. Please be sure to read the ‘Updates‘ section below for all the latest news.

This is an 18 range NQ chart. Note the different widths of the profiles and the colour shading in the datagrid (widths can be changed in NT with Alt-Uparrow/Dnarrow). The whole point of pjsProfileBars is to give you an ‘at a glance’ view of important bars, without interpreting numbers. Most other tools simply plot the same size profiles for every bar or give you a huge screen of numbers to read. For me, in my trading, this is not very useful! I can tell you in a split second which are the important bars on this chart, without scanning through them. This is the whole point of the indicator, and one of its unique features.

The section at the bottom of the above chart is the ‘Data Grid’ and is optionally enabled. It’s included with the tool. Various important numbers, including the delta candles above the grid can be shown (so yes, it’s a delta / cumulative delta indicator too!).  A great feature of the grid is the colour variance on numbers of importance. It’s so easy at a glance to see those bars that matter. This is always relative to the other bars currently shown on the screen, so it automatically adapts to differing volatility, during the open, overnight, etc. This is used to great effect with delta in the  ‘momentum’ mode which is very useful in determining trend exhaustion.

It also completely fails back to candle mode too! 2 charts in one! So this is the same, exact chart, with the X-axis reduced. Traditional candles or box candles can be used. This meant for me, not having to have a candle AND a profile/order flow chart.

The delta grid will scale right down in candle mode and still provide extremely useful information. Take a look at the following chart. Note the data grid shown with the arrow (the oscillator on this chart and the trend background colourings are done with pjsHeikenAshi)

It does all this without bogging down your system. Performance in volatility was an absolute requirement and one of the reasons for building pjsProfileBars. No NT8 lag allowed! I have not seen a better performing order flow indicator – Certainly nothing that comes close to this whilst keeping the performance you need to trade volatile markets.

A most important feature and where pjsProfilebars is different from most other tools.

What do you get more information out of?


or this!?

Look carefully at the profile shapes. Most volume profiling tools just draw per the first example. PJSProfilebars draws profiles relative to the other bars on the screen, so again, you can see the important bars naturally, without looking at numbers. They just stand out. Note the volume builds at the top and bottom of the swings. Not so easy to see in the prior example, is it?  This is the default display behaviour for PJSProfilebars – You can turn it off and have traditional profiles if you prefer.

An alternative profile shape can make this even more obvious. Here is our take on an alternative way for viewing profiles, included in the tool.  

Doesn’t that give you more information, than this, below? Believe it or not, that’s the same chart. not sure how anyone can look at bars in the same way anymore 🙂  The ‘BUY’ / ‘SELL’ tags – These are optionally shown and are in testing. They have automatically detected areas of interest, where reversals might be occurring. They are not stand-alone buy/sell signals, but certainly, you should pay attention when they appear.

PJSProfilebars will also optionally show your naked VPOC’s, too. Also, take a look at those profile shapes again! These can be filtered.

All the above examples are showing volume being plotted, but it’s possible to have a pure ‘delta’ view also. This, in its own right, is very valuable and can deliver a fantastic additional perspective over volume alone. It will certainly reveal things that may not be obvious in a pure volume chart.

Delta profiles

PjsProfileBars running on the chart, with the option to plot the bars turned off, and ‘trade aid’ algorithms turned on. This is a Heiken Ashi chart, with candles plotted with the pjsHeikenAshi indicator. You can see here the highlighted bars – All these plots are made by the profile bars indicator running on the same chart. 

In summary

  • Extremely efficient rendering with automatic degradation if required and fallback to candles when zooming down to where profiles would be unreadable. Maintains performance during times of volatility on modest systems (the NT chart lag issue!). A huge amount of time was spent on making the rendering and operation extremely efficient 
  • Works on any time frame, with ANY underlying bar type (including non-time-based charts, renko, unirenko, etc.)
  • Designed to give you a modern, order flow based view of your chart bars, without compromising your existing charting. Just slide x-Axis left to zoom in/out!

So there you go.

What do you think? Have any ideas? Let me know in the comments section below.

You might like to take a look at some of my other Ninjatrader bits and pieces.


Ninjatrader version or above for this release (Ninjatrader changed to a 64bit-only model), however, at this time, we cannot recommend using the 8.1.x.x branch. is the last known recommended version.


2022.06.02 – A new version has been released! Please note that all release notes will in future be posted in the product documentation, under the release notes sub, here 

2022.03.11 – Super new features. A new divergence algo. Some assistance trade entry option, so you can auto-trigger trades on the algos if you want. Some new stats, including Volume and Delta Rank (as with most PJSProfileBars metrics, we are looking at comparisons with recent data, not numbers!). Time and Sales! This is actually really cool. A reconstructed tape with block trade reconstruction and different alerting. Just re-install to upgrade and answer YES to overwrite any existing files.

2022.02.15 – Minor update. Sorry folks. I had a small bug in the voice alerts for the bars which meant sweep and block announcements were intermittently working. Now fixed. But, I also added order flow sounds which can be configured via the settings below (this was going to be saved for another release soon). This is a bit like TickStrike if you are familiar with that. The sound files are now included in the distribution also, but you may change the default sounds to anything you like. So, you can now ‘listen’ to the market!

2022.02.12 – Major update. Whilst existing functionality should remain exactly the same, new features have been added. There is a new profile display mode that can be set in the Profiles – appearance section called ‘Sell vol on left, buy on right’. It will result in profiles  per the below image

Ninjatrader split buy

Another new feature that can be seen in the above image (click to expand) are the dominant site options. Set here to display a block above/below the bars, with live delta. These are the options in the appearance settings

There are some new options in the ‘Data’ section. These relate to reconstructing the CME tape, trade blocks, and voice alerts for different size blocks. These options are shown below

New start and end times have been added to allow alerts to be disabled outside these times. I avoid volume alerts during the close for example, and out of the main trading hours. These are the settings

The data grid has been expanded to allow the display of new statistics. These include COT high/low, Block trade counts (I’ve never seen this on another app, but I really find it useful to find out where larger participants are participating), and bar duration. The latter I have also found quite useful.

The option to show numbers within the bars has been added (note – this will have a minor performance impact if enabled)

There is another display mode. If you want a pure ladder display (useful with opacity shading and / or numbers on), you can have that too!

Imbalance tracking has been added. You can set different colours and have trade imbalances highlighted if you wish. The imbalance level is configurable per the below settings in the appearance and ‘Trade aids – Imbalances’ section. 

Trade imbalances

Options have been added to alert you to possible trapped buyers or sellers. This is generally an accumulation of buying or selling in one part of the profile, with the resulting move going against the majority of the aggressive participants. These options are here

Many of these new features can also be toggled on and off, live, without going to the indicator settings or reloading of the chart. This is much, much better! You access the context menu by left-clicking the indicator on the screen (either on a bar or the data grid if enabled), then right-clicking the same area. You should get a menu per the following image

A variety of sample templates that I use myself have been added to the distribution. These will be available in your installation as indicator (not chart) templates. You could load them and take a look as a starting point for different types of setup if you wish.

There has been a significant number of minor code tweaks for cosmetic and performance reasons. Default options for the indicator have been changed slightly to offer a better startup experience for new users. This will not affect your settings if you have already installed a prior version. If you wish, the template-reset option will install these new defaults. They are primarily around colouring and styling.

As you can probably tell, this is a _major_ , (indeed, massive!) update. The new code has been in use live as well as having been tested by running for 2 weeks continuously. It should be a seamless update and you can (should) be able to update by installing the indicator in the usual way and answering ‘Yes’ to overwrite the existing version.

I sincerely hope you like the new features. I personally, love them!

2021.12.12 – Minor naked poc updates. Moved naked vpoc settings into own group. Added option to extend the naked poc lines X pixels right. Noticed that the prior bar was not displaying naked POC until a further bar had been printed. Now resolved.  Nvpoc line now draws before the profile (instead of after), so that it’s behind the profile, else it might overlay the POC volume bar. OHLC bar type has been added as an additional fallback to bars type. Delta histogram can now optionally be shown inside of the volume profile. ‘Delta alerts’ on-off option fixed. Added an experimental trapped buyers/sellers trade aid. Let me have your feedback on this, please!

2021.10.05 – New features and some code tweaks. New ‘Cumulative delta’ modes. Please note a slight behaviour change. Cumulative delta mode now shows the running cumulative delta and not just the displayed bars. There are these new options

Enabling the ‘show as momentum’ option and setting the ‘Cumulative delta momentum period’ will enable you to show the data grid like this

Added the ‘NullStyle’ chart style to the distribution. This is a chart style I created that enables you to hide the native bars. It provides better performance than alternative options.

Code tweaks for performance.  Fix – use candle colours as set in indicator for up/down candles in bar mode, instead of up/down colours for profiles.

‘Delta Max’ was added to the data grid. This is an option I have not seen elsewhere, but I found useful for some time (years). You can think of it as iceberg detection. Very high values relative to the rest of the bars will indicate someone absorbing large amounts in very narrow price bands at those levels.

2021.09.19 – During further testing, I found some minor bugs. These are mainly to do with use on time-based charts that I don’t use much, but that’s no excuse for not properly testing! Damn my eagerness to push out a new version/features! They were just such good updates 🙂 Anyway – Apologies. The bugs have been squished and the download has been updated. I spent today playing back the entire of last week multiple times via multiple time/non-time/onbarclose/oneachtick charts to check. Thankfully, all looks sound again.

2021.09.18 – Fixed support for minute series historical data on time-based charts. This was there before, but the number of options, oneachtick, onbarclose etc. non-time based charts etc. might have broken it. If you select an invalid combination now, a warning should be displayed in the bottom right of the chart. Minute resolution for historical data is useful for fast load and low memory usage (read better NT8 performance) when you have longer-term bars, like a month of hour bars, or daily bars, for example, and where you do not need tick resolution. Also fixed some bar issues for different combinations of time/non-time based charts/oneachtick/onbarclose, etc. Again, you should get a helpful msg if you select an ill-advised combo.
Added a lookback period option to the liquidity zones. I’d initially limited it for performance reasons, but I wanted more on a specific chart, and not all PC’s are created equal. You can now extend this if you wish.

2021.09.15 – A great update! New trade aid, “liquidity zones”. Use this option as you will, but I set the line thickness between 6-10 and the opacity at around 5%. This allows me to see the overlap in a darker colour of multiple zones in the same place. Deeper colour, better area. Watch these. I am sure you will find them extremely helpful. For me, I use a chart period or around 5 days to give me enough zones, but experiment for your setup. 
Also, another new extremely good option on the naked vpocs. These can now vary in line thickness by the strength of the POC. Super, super useful. Both these options are added as a result of me trading for real with this indicator. The reason these features are unique (until someone sees this and copies it!), is they come from actual trading experience, not just ideas. I’ve been running with these 2 new options (and a couple more in the works) for a few months and they have helped my results considerably. Keeping it simple, but improving via real trading experience is what it is all about. ia Please do give them a try! There are also a few other minor code tweaks, fixes and improvements, including a fix for a rare issue on certain bar types where the profiles would disappear and a few more nanoseconds of performance squeezed out.

Done – Added option to abbreviate BUY/SELL labels to B/S, mainly for use when in scaled-down bar/candle only mode.

2021.02.21 – Small fix to avoid a possible ‘null’ error when trying to calculate the value area on certain bars. 

Additional screenshots below

Profiles with cell borders using the default NT8 dark slate theme

And, one more. Could not resist showing you this live example that just happened! 


If you are using the profile bars and want to hide the underlying NT8 bar type, select ‘NullStyle’ as the NT ‘Chart Style’, or select it from the bars dropdown at the top of every chart. This is efficient as it stops the NT native bars plotting altogether. I’ve bundled my ‘NullStyle’ candle type, for free, with pjsProfiles in case you want to use it. 

Once you have your chart running, use the ctrl-UpArrow/DnArrow to play with the width of your bars until you get something that looks nice.

Real-world usage

We are actual traders, trading real money and not just software developers trading SIM. We’ve traded with our indicators, live, for 1000’s of hours. We can offer some ideas for usage, though we strongly recommend you experiment and find your own edge. We’ll be posting more details here and some video content soon 🙂


if you already have a license key, please make sure you enter it in the indicator properties as part of the process of adding the indicator to your chart. Probably a good idea to ‘save as default’, so your key is remembered in your indicator template. 

There are 2 chart templates beginning pjsXXX in this download that should be installed into your templates folder along with the indicator. The templates include my current NQ scalp template. You can use these when you create your new chart to get yourself off to a start if you wish.

As usual, let me know below if any issues and I will try to resolve them, time permitting.


This tool requires a license after the 7 day trial period. You can purchase one here. Please make sure the indicator meets your requirements, prior to purchase. Thanks for your support!


Can I install this on multiple computers? Yes – Up to 2 with the same licensed version of Ninjatrader, with the same license key.

Alerts – A lot of people have not realised the alerts can be voice alerts! Yes, this indie speaks to you!  For some, it has not worked. This is just how their Windows 10 has been configured. To fix this is easy. If you don’t get voice alerts, and you have in fact enabled alerts in the settings, check this

In your windows 10 ‘settings’, Time and language


And check what voices you have there