Skip to main content

A new DOM for Ninjatrader

By February 21, 2017Tech

Since I started using Ninjatrader with version 7, I never liked their DOM. In fact, I found it next to useless. I purchased a third party DOM that was light years ahead of the inbuilt NT7 one in terms of information provided and update speed. When I migrated to NT8, the new inbuilt DOM did/does have some interesting features, but it still lacks usability for me, especially for order management.  I already had looked into putting together my own dom a long time ago, but with the cost of my time, it was far cheaper to buy the third party one.  Recently though, after chatting with a few people and wanting something for my order management that neither DOM does, I decided to resurrect the project. I’ve started afresh in NT8 and have a proof of concept running.

Here is a screenshot of the DOM, running alongside the NT8 one.The T&S on the left is for debug only at the moment (it is not managing the CME splits yet), but will be part of the DOM.

A new DOM for Ninjatrader

Proof of concept for a DIY DOM for NinjaTrader


Here is a short video of it in action. It’s pre market, so things are quiet on the ES.

Things I wanted that are not available in other commercial DOM’s I have seen (or could afford 😉 )

  • Certain order management info (multiple entry info, etc)
  • On the fly calculation of cost basis if scalping in and out without closing fully
  • An API so I can inject markers, comments, etc., from other indicators
  • Ability to add/try new ideas as I think of them

The project is actually an external class, developed in visual studio. The only connection to Ninjatrader is in fact a short stub that you add to the chart as an indicator. 99% of the code is external to NT. This means this DOM is actually portable. Just write a new stub in whatever to send a tick stream to the DOM and it should work with any platform.

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.

If you liked this or found it useful, please let me know in the comments section below, give it a like/share above, or if you wish to share some trading knowledge, get in touch. Thanks!

Contact me

You can view my linkedin here


  • Juan Ramon says:

    Hi PJSmith:

    You need to put an agregations/cancellations columns on your Dom.
    Looking this info you are able to understand the play of market makers and HFT´s.

    If you want more info about how and where I use it, send me a mail.

  • Jon says:

    Awesome! Where can I download it 🙂

    • pjsmith says:

      It’s very, very early Alpha at the moment, plus I’ve not done much work on it recently. It’s not ready for distribution just yet. Once it is, I’ll update the site. Thanks for looking.

  • Mike says:

    Any tips on how i can code something like this. I’m a newbie python programmer and there are tons of libraries and frameworks for trading. I want a DOM with more information but I don’t want to pay a company a ton of money. I would buy something like this for $200 or so but I wouldn’t mind ccoding my own. It would be a fun project with a lot of equity.

    • pjsmith says:

      Can’t help you with Python I’m afraid. This is a coding project that is not simple, even for an experienced developer. You’d need to know c# (or vb, something else .net) for this really if integrating with Ninjatrader. A decent functional DOM that does more than just show the ladder is actually a fairly decent size project. If I could get want I wanted for $200, I’d buy it too! I would recommend taking a look at the Jigsaw DOM if you need one. It’s what I currently use for production. I’m coding this as time allows to enable me to integrate other things and ideas. Something that cannot be done with third party DOM’s. Once done, it will integrate indicators and recognise order flow. Something I currently use other indicators for. Or, at least, that is the idea…

  • Scott Boulette says:

    I am an institutional algo guy (I ran across this because I am also integrating some of my software with NinjaTrader in order to be able to back test some higher frequency algos) but I am a decent C# WPF programmer (I say decent because I mainly program server side Java). If you have any interest in some help (either directly or in kind knowledge about institutional algos) and/or alpha/testing track me down on LinkedIn. I checked your profile and we are 3rd level connections so unless you have InMail it isn’t easy to connect. I am one of the moderators of the Algorithmic Traders Association: CTA & Quant Funds System Trading | Stocks, Futures, Forex, Options group; as such, I post a decent amount. If you care to, find one of my posts and pm me; I will give you my email and we can discuss things further.

  • Kaustubh says:

    Great work….How about the idea of modifying this to a synthetic spread DOM, like TT or CQG-IC have for spread trading?…Just 3 columns for synthetic price and corresponding buy and sell buttons. Can you make it for NT8? Buying at a desired spread price will be huge advantage.

  • Oliver says:

    Do you plan on releasing this? A last traded quantity (LTQ) column would be nice. Great work!

    • pjsmith says:

      Hi – Thanks – Not at this time – It’s a huge amount of work and though I already spent a ton of time on it, in testing, the way Ninjatrader works – It’s a bit slow. There is no way to increase that performance other than seperate the code out of Ninjtrader – Huge amount of work. If looking for a good DOM, I would suggest the Jigsaw DOM. NT8’s DOM is really pretty useless on it’s own for serious scalping!

  • Paul says:

    Can you please elaborate on what “short stub” means and or any links to how we can start streaming tick data into visual studio?

    • pjsmith says:

      There is no way to srteam tick data into visual studio without building it all yourself. You will need to know c# well, as well as threading, etc. It’s an advanced peice of code. Read up on sockets etc., that will get you started. There is nothing ‘off the peg’ to do this. You have to build it all yourself.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.