How I built the V8 indicator
Two years of market-structure work, distilled into a Pine Script v5 indicator on TradingView. What I kept, what I cut, and the SFP → 3R → 3G logic at the centre.
The V8 isn't a clever name. It's the eighth version of an indicator I've been rewriting for two years, and the only version I've ever shown anyone. Most of what made it onto the chart got there by surviving — by being the thing I kept reaching for after I'd stripped everything else away.
I want to write down what stayed, what I cut, and why the logic at the centre — what I call SFP → 3R → 3G— is the only part I'm confident about. The rest is taste.
What it actually does
The V8 is a market-structure indicator written in Pine Script v5, running on TradingView. It watches a single instrument on a single timeframe and answers one question: has the structure shifted, or are we still inside the old one?
It does not predict price. It does not pick tops or bottoms. It marks three things, in order:
- SFP — a swing-failure pattern at a known liquidity pool. Price reaches for stops above (or below) a prior high/low, fails, and closes back inside the range.
- 3R — a three-leg rejection: the SFP is followed by a corrective leg, a continuation, and a second rejection at the same pool. The pool is now defended.
- 3G — a three-leg generation: structure breaks in the new direction, retraces, and generates a higher-timeframe continuation that lines up with the original failure.
That's it. Three labels, in sequence. If a chart never makes it past SFP, the indicator is silent. If it makes it to 3G, you know something changed at the pool you were watching. The job of the rest — sizing, conviction, exit — is mine, not the indicator's.
What I cut on the way
Earlier versions tried to do everything. V3 had a probabilistic score. V4 ran a Markov chain over the last 200 bars. V5 painted candles. V6 was the worst — it whispered every fifteen seconds, and I stopped reading it.
Cutting was harder than building. Each feature had a real reason to exist when I added it. What I missed was that features and signalaren't the same thing. Most of what I removed wasn't wrong — it was just noise wrapped around a small kernel of insight.
Three rules, in order, kept making it back into every rewrite. So I wrote V7 with only those three rules and threw out everything else. V8 is V7 with the alerts done properly and the labels readable on a phone.
Pine Script v5 was the right constraint
I write Python every day. I could have built this in Python against a websocket feed and rendered to a custom dashboard. That was, in fact, plan A for about six months.
Pine Script forced me to be honest. You get one global state per bar, no nested loops over the entire history, and a real ceiling on how clever you can be with intermediate variables. If your idea doesn't fit inside that ceiling, your idea is too big. That single constraint is what stripped V3 through V6 out.
It also meant the indicator runs on TradingView, where everyone in my Discord already lives. Nobody had to install anything. Nobody had to learn a new tool. The thing exists where the people I built it for already work.
What it taught me
Two years of iteration, and the lesson isn't about market structure. It's that the version you trust enough to share is almost always smaller than the version you spent the most time on.
Build something. Strip it. Run it for a month. Strip it again. The thing that's left after a year of stripping is the thing you actually believed.
The indicator powers the Harazi SDT research desk — currently 37 traders, closed Discord, no marketing. I'll write about the desk itself in a future post.