Every candle gets one number here. The bt cs indicator asks how much of the bar was body, where the close sat inside the range, how big that range was against recent ones, and how busy the bar was. Those four answers combine into a single signed score.
This build ships as a compiled .ex4 for MT4 and .ex5 for MT5; the screenshots below come from EURUSD H1.
| Platforms | MT4 (.ex4) + MT5 (.ex5) |
|---|---|
| Chart window | Separate window (levels 0 / 35 / -35 / 70 / -70) |
| Plots | 3: CS Strong, CS Weak, CS Raw |
| Alerts | popup, push notification, email, sound |
| Inputs | 21 |
What lands on your chart
Two histograms and a line, below price.
`CS Strong` fills dodger blue at width 2.
`CS Weak` fills dark orange instead.
`CS Raw` traces silver behind both.
Reference levels sit at zero, thirty-five and seventy.
Optional markers appear on the price chart itself.
- CS Strong: histogram, dodger blue, width 2
- CS Weak: histogram, dark orange, width 2
- CS Raw: line, silver, width 1

How it all fits together
Two shape measures
Both run from minus one to plus one. Body share takes close less open over the range. Close placement asks where the close finished between low and high. `InpWeightBody` `1.0` and `InpWeightClose` `1.0` blend the two evenly.
Conviction
Shape alone ignores size. Bar range over an `InpAtrPeriod` `20` reading gives conviction, which the code holds between `InpMinConv` `0.20` and `InpMaxConv` `2.50` so one freak bar cannot dominate.
Volume and the clamp
`InpUseVolume` scales the score by this bar’s tick volume against an `InpVolPeriod` `20` average. `InpClamp` `150.0` then caps the result, and `InpSmooth` `8` averages it.
Making the output useful
Zero means body and close placement cancelled out.
Colour splits readings past `InpStrongLevel` `35.0` from the rest.
Seventy is where a chart marker can appear.
A long body closing at its extreme scores highest.
A doji scores near zero however large it grows.
The silver line shows the score before smoothing.
Alert channels in this build: popup, push notification, email and sound, one message per closed bar.
The score crossing its strong level is what raises a message. `EnableAlerts` governs whether any go out at all and ships on with `EnablePopup`. `EnablePushNotify`, `EnableEmail` and `EnableSound` with `SoundFile` behind it all start closed.
Every Bt Cs Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
InpSmooth |
Candle-strength EMA period N. Bars of averaging on the final score, `8`. | 8 |
InpAtrPeriod |
ATR period (conviction yardstick). Window the conviction yardstick reads, `20`. | 20 |
InpWeightBody |
Weight: body share. How much body share counts, `1.0`. | 1.0 |
InpWeightClose |
Weight: close placement. How much close placement counts, `1.0`. | 1.0 |
InpMinConv |
Conviction floor (range / ATR). Floor under the conviction factor, `0.20`. | 0.20 |
InpMaxConv |
Conviction cap (range / ATR). Ceiling over it, `2.50`. | 2.50 |
InpUseVolume |
Scale the score by relative tick volume. Scale the score by tick volume, `true`. | on |
InpVolPeriod |
Volume EMA period. | 20 |
InpClamp |
Hard clamp on the score. Hard cap on the score, `150.0`. | 150.0 |
InpStrongLevel |
Strong reading level. Where the colour changes, `35.0`. | 35.0 |
InpMarkerLevel |
Main-chart marker level. Where a chart marker may print, `70.0`. | 70.0 |
InpMarkerBars |
Only mark bars inside this window. | 400 |
InpMarkerCool |
Bars between markers. | 6 |
InpMarkerOffset |
Marker offset from the bar (points). | 90 |
Display settings
| Setting | What it does | Default |
|---|---|---|
InpShowMarkers |
Draw main-chart bias markers. | on |
Alert settings
| Setting | What it does | Default |
|---|---|---|
EnableAlerts |
(see inputs panel) | on |
EnablePopup |
(see inputs panel) | on |
EnablePushNotify |
(see inputs panel) | off |
EnableEmail |
(see inputs panel) | off |
EnableSound |
(see inputs panel) | off |
SoundFile |
(see inputs panel) | alert.wav |

Chart and timeframe notes
Candle shape carries more meaning where bars are substantial. EURUSD H1 is the reference chart, and readings past thirty-five come a few times a day. Drop to M5 and the score whips about. Move to H4 and each strong bar is worth a look.
Honest weaknesses
Shape describes one bar and nothing around it.
Tick volume stands in for volume nobody publishes.
The clamp hides how extreme an outlier really was.
A gap between bars never enters the score.
Copy the compiled Bt Cs Indicator file into your MQL4/Indicators folder, and the MT5 build into MQL5/Indicators, then restart the terminal and drag it onto a chart. The step-by-step guide with screenshots is at how to install MT4 and MT5 indicators.
Background reading on the method behind the Bt Cs Indicator: Candlestick pattern on Wikipedia, Candlestick at Investopedia.
Download the Bt Cs Indicator for MT4 and MT5
The zip holds the compiled Bt Cs Indicator build for MT4 and MT5, plus a short README. Compiled files only, no source. Enter your email below and the download link arrives in your inbox.
Download this indicator free
Enter your email and the file is yours. You also get the full MT4 and MT5 library.
FAQ
What do InpWeightBody and InpWeightClose weigh?
Body share and close placement. The first takes close less open over the range; the second asks where the close finished between low and high. Both run from minus one to plus one, and the two weights decide how much each contributes.
Why does InpMinConv 0.20 exist?
To stop a tiny bar scoring as hard as a large one. Conviction is the bar range over the ATR reading, and the floor keeps a near-doji from being multiplied down to nothing while the ceiling stops a news bar dominating the pane.
What does InpClamp 150.0 prevent?
A single extreme bar stretching the whole scale. Without a cap one outlier flattens every other reading toward zero, so the score stays inside a fixed range at the cost of hiding how far out that bar really went.
Does InpUseVolume false change the score much?
It removes one of the four inputs. Shape and conviction still drive the reading, but a heavy bar and a quiet bar of the same shape then score identically, which is a simpler and less informative picture.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Bt Cs Indicator as one input. Always backtest before trading live.
External references
- For background on this concept, see Price discovery on Wikipedia.
- For broader market context, see Laggingindicator at Investopedia.
