Bar Body % Indicator: Formula, Settings and How to Read It

Bar Body % measures how much of a candle's total range is taken up by its body: |close − open| divided by (high − low), expressed from 0 to 100. A bar with no wicks at all reads 100, while a bar that opened and closed at nearly the same price after travelling somewhere else in between reads close to 0.

Senzoukria · Indicators · Updated September 2026


Bar Body % ships with the Senzoukria desktop app, in the Structure & sessions group of the indicator catalogue. It is drawn in its own panel below the chart.

What Bar Body % measures

The number is a ratio, not a distance: it reports what share of the bar's movement was retained between open and close. Taking the absolute value makes it direction-agnostic — a bar that fell through 90% of its range and one that rose through 90% of it produce the same reading, which is why the negative colour in the settings is a contract guard that never actually appears. When high equals low the indicator emits no point rather than a zero, because 0 divided by 0 is an absence of information rather than a measured nothing; delta percent is handled the same way on this platform. The series is drawn as a histogram in its own pane, one value per bar.

The formula, as implemented

This is not a description of how the indicator is usually defined elsewhere — it is what the shipped code computes, documented next to the implementation:

Bar body % — part du range occupée par le CORPS : value = |close − open| / (high − low) × 100 ∈ [0, 100] 100 = marubozu (aucune mèche, conviction pleine) ; proche de 0 = doji / barre de rejet. range = 0 → PAS de point : 0/0 n'est pas « 0 % », c'est l'absence d'information (canon, même règle que delta-percent). Valeur toujours ≥ 0 — la couleur négative n'est qu'un garde-fou de contrat (même posture que `true-range`).

How to read it

  • Sustained high readings describe a run of bars that closed near their extremes, with little of the range given back inside each bar.
  • A collapse toward zero while the bar's range stays wide means price travelled and came back — the range was rejected rather than retained.
  • Always read the percentage next to the bar's actual size: 80% of a two-tick range and 80% of a thirty-tick range are not the same event.
  • Gaps in the histogram mark bars with zero range, not bars with zero body — the two are different and only one is plotted.
  • A single high reading says little on its own; a cluster of them across consecutive bars is the part worth comparing to what the instrument usually produces.

Parameters and defaults

Smoothing is the only numeric parameter. It defaults to 1 — raw values, no averaging — and accepts up to 200 bars. Raising it replaces each reading with an average over that many bars, which makes the histogram easier to follow but delays every change and means the number on screen is no longer any single bar's body share. The two colours (#ab47bc and #ef5350) are cosmetic.

Bar Body % — parameters exposed in the app, with the values it ships with.
ParameterTypeDefaultRange
Smoothingnumber11 – 200

What it does not show

The percentage is blind to direction: an up bar and a down bar with identical proportions read the same, so it has to be looked at next to the price chart or a directional series. It is equally blind to participation, since no volume, delta or aggressor side enters the formula — a full-bodied bar traded on two contracts scores exactly what one traded on two thousand scores. On thin overnight sessions, where a bar's whole range is a few ticks, the ratio swings between extremes on almost no activity. And with smoothing above 1, the value shown against the current bar is carrying several older bars with it.

Using it in Senzoukria

Add it from the Indicators panel of any footprint chart or candle chart. It runs on futures data from Rithmic or Databento and on crypto pairs from Binance and Bybit, on the same engine — the calculation does not change with the venue, only the data feeding it does. Market data subscriptions are billed by the provider, separately from the app.

See the full indicator library, or start with the order flow guide if you are new to reading aggression, delta and absorption.

Frequently asked questions

What does a 100% bar body mean?
A reading of 100 means the bar has no upper or lower wick: its open and close sit exactly on its high and low, the shape usually called a marubozu. Price moved one way for the whole bar and gave none of that range back before the close. It describes the shape of the bar only, and carries no information about the volume traded or about what the next bar does.
Why does Bar Body % show gaps in its histogram?
A gap means that bar had zero range — its high and low were the same price — so the calculation would be 0 divided by 0. Rather than print a misleading 0%, which would suggest a measured doji-like bar, the indicator emits no point for that bar. This mostly happens on very quiet overnight bars or on illiquid contracts.
Is Bar Body % the same thing as a doji indicator?
They use the same ratio but answer different questions. Bar Body % plots the body-to-range share continuously for every bar, while the Doji indicator applies a threshold to that same ratio and places a marker only when the body falls below it, at 10% of the range by default. Use Bar Body % to see the whole distribution, and Doji when you only want the low-body bars flagged on the price chart.

Keep reading