What a custom NinjaTrader indicator costs

The price of a custom indicator is set by the spec, so the cheapest thing you can do is write a clear one.

A fixed quote is a price attached to a written scope, which makes the spec the document that sets the price. A spec clear enough to build from can be quoted as it stands; one that is a paragraph of intent has to be made clear first, because the fixed price is fixed against the written spec. None of that is particular to me — it is what fixed-price engineering is — but it does mean the specification is the part a buyer controls.

What a spec looks like

Plain English, describing behavior rather than NinjaScript. The logic is yours and the engineering is mine, so a spec that says what the tool should do is worth more than one guessing at how the platform ought to do it.

One paragraph per behavior is a readable shape. Each paragraph answers four things: what gets computed or drawn, from what, when it updates, and what happens at the edges. The edges are the easy part to leave out — the first bars of a chart before a lookback has filled, a session boundary, a gap in the data, a restart in the middle of the day. A behavior described only for the ordinary case still has to do something at the edges, and what it does then gets chosen during the build rather than by you.

A mock-up counts. A screenshot of a chart with the lines drawn on in any image editor, or a sketch with arrows and a note, settles in one picture what several paragraphs argue about: which panel it lives in, what the label says, where the number sits, which colors mean which state.

Inputs are worth listing by name, each with a default and a sensible range. Something has to be in the box when the settings dialog opens, and a value not in the spec is a value picked during the build.

What a tool must not do belongs in the spec too, and it is usually one line: writes no file, places no order, needs no Tick Replay. Constraints are part of scope.

What makes a job small or large

The small end of this work is a plot: a line, a marker or a label computed from a bar series the chart already has. It lives in one indicator, on one instrument, and its entire surface is what it draws.

Several things move a job off that end, and they all come down to how much the code has to touch.

A new bar type defines the bar itself rather than drawing on top of one, so everything downstream — indicators, strategies, the chart — reads what it produces.

Order handling. Anything that submits, modifies or cancels carries state that has to survive a disconnect, a restart and a partial fill, and it has to be watched on sim in real time rather than only against history.

DOM or Level 2 data is a separate event stream from the bar series, arriving at its own rate and needing its own handling.

More than one instrument or series means an added data stream, warm-up handled per series, and code that is explicit about which series each update belongs to.

A window of its own — an add-on rather than a chart indicator — brings a layout, a lifecycle of its own, and settings that persist between sessions.

Two requests are larger than they read. "It should remember that across restarts" is persistence: somewhere to write state, and a rule for what happens when what it reads back is stale. "It should work on any instrument" is tick size, session template and contract detail, none of which can stay hard-coded. Both are a single sentence to ask for.

What you get and what you own

Delivery is source plus install notes. You compile it in NinjaTrader yourself with F5, and test it on sim before it goes anywhere near live. Two rounds of spec-defect fixes are included against the agreed spec, a defect being behavior that contradicts what the spec says.

The delivered code is yours; that is what "you own it" means. Your strategy logic stays confidential, always — I do not reuse it, resell it, or discuss it.

I sell software engineering, not advice. The entries, exits, filters and risk parameters in your spec are yours — I implement them, I do not grade them — which is why "should the stop be here or there" gets one answer: that is your call, and I will build whichever you specify. That boundary is why your spec carries so much weight. It is the whole of what I build.

Where this shows up in my own tools

Custom NinjaScript development is this service. Every tool on this site started as a build for my own funded account, and the same engineering is for hire: you send what the tool should do in plain English, jobs scoped under ten hours get a fixed price quoted before any work starts, that price and a delivery date usually come back within 24 hours of a clear spec, and delivery is source plus install notes with two rounds of spec-defect fixes against that spec.

Built custom. I do this for hire — fixed quote, most jobs under a week. Get a quote →