INDICATOR CHECKLIST

Nine questions to ask about any indicator

Including mine.

A filter that never runs

An indicator is a way of looking at a chart. It takes the same prices everyone else has and arranges them so that one thing becomes easier to see — a level, a direction, an imbalance. That is all any of them do, including the expensive ones.

What none of them do is know what happens next. An indicator cannot see the orders waiting in the book, it cannot see who is positioned where, and it has no opinion about the news that comes out in ten minutes. When a signal appears, it means a set of conditions became true. Whether that is worth acting on is a judgement, and the judgement is yours.

This matters because the gap between those two things is where most of the money is lost. Not on bad indicators — on good ones followed blindly.

The nine questions below are about something narrower, and more checkable: whether the tool does what it says it does. That can be verified, and most of it in minutes. What follows is how.

What an indicator can see

Over the past weeks I went through all twenty-nine of my own indicators, line by line. In three of them I found a filter that appears in the description, exists in the code, and has never once executed. The code ran. The description was accurate. The two were not doing the same thing.

That is what this page is about. Not whether an indicator is good, but whether it does what it says. Here are the nine questions I now ask, each with an example from my own work.

3 / 29

Does it use data that did not exist yet?

Why it matters

When a script asks for data from a higher timeframe, it can be told to use the finished value of a bar that had not finished at the time. On the historical chart this looks like foresight. Live, that value is not there yet. The chart will show a run of clean signals that nobody could have taken.

How to check

In open-source scripts, search for lookahead. The value barmerge.lookahead_on next to a request.security call is the thing to look for. In closed scripts you cannot see it — which is itself worth weighing.

From my own code

My own S/R Lines indicator did this until last week. With it removed, the levels appear forty hours later on a four-hour chart — that is the pivot confirmation delay, and it was always there. The old version simply hid it on the historical chart.

Does it change its mind after the fact?

Why it matters

Not the same as the first question. A higher-timeframe value that keeps updating while its bar is still forming will move during the session and settle at the close. The signal you acted on at 10:05 may not be on the chart at 11:00 — and the history will only ever show the settled version.

How to check

Watch one bar form in real time and compare what you see to the same bar an hour later. Or look for a setting that says the script only uses closed bars. If there is no such setting, assume it does not.

From my own code

Four of my indicators worked this way. They now have a switch, on by default, that uses only closed higher-timeframe bars. The visible cost is that the lines step instead of gliding — an hourly average changes once an hour. That is the honest picture.

A chart that looks easy to trade in hindsight is usually a chart that was shown to you after the fact.

Does the filter actually filter anything?

Why it matters

A filter can be switched on, reported as active in the panel, and have no effect whatsoever on a single signal. Nothing about the chart tells you. The signals look filtered because you were told they are.

How to check

Turn the filter off and count the signals. If the number does not change, the filter is not doing anything. This takes two minutes and is the single most useful test on this page.

From my own code

Two of my scripts had a proximity filter built from two conditions joined by "or". The conditions were each other's opposite, so one of them was always true. The panel printed ENABLED while everything passed through. In a third, the macro levels the description described as a filter were drawn on the chart and referenced by nothing. And in a fourth, a wick-detection branch required the close to sit in the upper half of the bar while the same line required a negative delta, which means the lower half — that branch has never executed.

Does the label mean what it says?

Why it matters

A panel row is a claim. It takes one mistake in the code for the number under the label to come from somewhere else entirely, and the label will keep saying what it always said.

How to check

Check one number by hand. Put the same indicator on the chart with settings you can verify, and see whether the panel agrees with what you can measure yourself.

From my own code

One of my panels showed a row labelled "1H Trend Filter". The average behind it was calculated on the chart's own timeframe. On a five-minute chart that is a 200-period five-minute average — roughly sixteen hours, not one. Anyone filtering their entries by that row was filtering by something else than they thought.

Nobody writes a misleading label on purpose. That is exactly why they survive: the author reads it and sees what they meant, not what it says.

Does it signal on a closed bar?

Why it matters

A condition that is true mid-bar can be false by the close. If the script evaluates live and the alert fires live, you can be taken into a trade by a bar that then closes the other way and removes the mark from the chart.

How to check

Set the alert to fire once per bar close rather than once per bar, and see whether the number of alerts drops. If it drops a lot, the script was signalling on unfinished bars.

From my own code

Several of my scripts had no alert conditions at all, which means this question could not even be asked of them. They do now, and they describe what happened rather than announcing a trade.

Does it say when it does not work?

Why it matters

Every method has conditions where it is useless or worse. If a description does not name them, that is not because they do not exist. It is because naming them costs sales.

How to check

Read the description and look for the paragraph about limitations. If there is none, ask the author directly. The answer, or the absence of one, tells you a great deal.

From my own code

Every tool page on this site has a section called "where it falls short", and it is the longest section on the page. On one of them the honest answer to "does it work" is that I measured it and it did not, which is why that tool is not published.

Every method has a market it is wrong in. An author who cannot name theirs has either not looked, or has looked and decided not to tell you.

Is there a published measurement, and what exactly was measured?

Why it matters

A win rate on its own is not a result. Thirty percent with a 3R target makes money; sixty percent with a half-R target loses it. Any number without the reward-to-risk attached is half an equation.

How to check

Ask three things. Over how many trades. On what instrument and what period. And what the average R was on the winners. If any of the three is missing, the number is not usable.

From my own code

I measured my own setup marker over 122 marks across three timeframes. The hit rate was twenty-nine percent on all three, which is consistent enough to be a property of the method rather than noise. At a 1.5R target that is a losing approach, and the arithmetic says so before any opinion does. At 2.5R it barely produced any signals at all. That is the result, and it is why the tool is not published as a signal generator.

What does it actually see in the data?

Why it matters

Words like delta, order flow, absorption and institutional suggest the script can see who is buying and selling. On TradingView almost none of them can. What they have is price, volume per bar, and at best the same two numbers on a lower timeframe.

How to check

Ask where the number comes from. If the answer involves the position of the close inside the bar, or the direction of lower-timeframe candles, it is an estimate. A good one, possibly, but not a reading of the order book.

From my own code

Two of my own indicators are built this way. One splits each bar's volume by where the close sits in the range. The other breaks the bar into one-minute bars and assigns each one's volume to whichever side it closed on. The second is better. Neither is order flow, and both now say so on their own pages.

The word "institutional" in an indicator description almost never refers to anything in the data. It refers to how the description would like you to feel.

What happens when the data is not there?

Why it matters

Data has gaps. Lower-timeframe history is only served for a limited stretch. The first bars of any chart have nothing behind them. A script that handles those cases badly does not usually crash — it quietly produces a number that looks like a measurement and is not.

How to check

Scroll back to the left edge of the chart and look at what the indicator shows there. Then scroll back a few months and look again. If something changes character, you have found the boundary.

From my own code

My intrabar delta indicator read zero wherever lower-timeframe history was no longer available — which looks exactly like a bar with no trading. It now says on the chart that there is no data rather than showing a zero. And three of my scripts treated the non-existent bars before the start of the chart as zeros and averaged them in, which pulled the line far below price for the first fifty bars of every chart.

Why this page exists

Not one of the problems above was a failure of the code. Every script ran. Every description was written in good faith. The gap was between what the code did and what the label said it did — and that gap is invisible from the chart.

I found them by reading my own scripts line by line, with these nine questions in hand. The results are on each tool's page, including the one where the honest answer cost me a product.

Apply the same nine questions here. If something on this site does not hold up, I would rather hear it from you than not know.

What the label says, what the code does

See how these nine questions are answered for each of my own tools.