Change of Character
Free Change of Character indicator for MT5: marks CHoCH and BOS on closed bars. Lab repaint test: 0 of 273 signals changed on EURUSD M15.

- Repainted
- 0 / 273
- Signals / week
- ≈ 20.8
- Tested on
- EURUSD M15
- Tested
- 2026-10-09
Overview
The Change of Character indicator for MT5 puts arrows, level lines and CHoCH / BOS text on your main price chart. It does this each time a closed candle breaks the last confirmed swing high or swing low. In the Lab's repaint test, 0 of 273 signals changed after they appeared. It helps you see the moment price breaks against the trend, and tell that apart from a break that just continues the trend.
What it draws on your chart
A change of character (CHoCH) is the first break of a swing point against the current structure trend. A break of structure (BOS) is a break in the same direction as the trend. The indicator labels both for you, so you do not have to mark swings by hand.
- Four arrows: Bullish CHoCH, Bearish CHoCH, Bullish BOS and Bearish BOS.
- A level line at the swing price that was broken, plus a CHoCH or BOS text label. Both stay on the chart while the indicator runs.
- The Structure panel shows the last CHoCH or BOS, the structure trend on your chart and on two higher timeframes, the number of bars since the last CHoCH, and the CHoCH and BOS counts for each direction.
How the Lab tested it
The Lab ran version 1.00 (104.6 KB file) on MT5 build 6230 on 2026-10-09. It replayed EURUSD M15 from 2026-07-09 to 2026-10-08 using real ticks from Raw Trading Ltd. It logged every arrow as it appeared and checked it again at the end of the test.
The result was 273 signals logged and 0 changed, with a maximum arrow delay of 0 bars. For you, this means each arrow appears when the breaking candle closes, on that same candle, and never moves or disappears later. What you see in history is what you would have seen live.
What the signal numbers mean for you
For every arrow, the Lab checked which came first: a move of 1 ATR in the arrow's direction, or 1 ATR against it. Overall, 51.7% of signals reached 1 ATR in their direction first. That is only slightly better than a coin flip. Treat the arrows as a map of structure, not as trade signals on their own.
The outcome came fast. The median signal hit one side within 2 bars (about 30 minutes on M15), and 0% of signals went 20 bars without hitting either side. Arrows fire when price is already moving, so you have to decide quickly. On this chart the four arrows together gave 20.8 signals per week, about four per trading day.
The four arrows did not perform the same. The chart below splits the results by arrow type.
Both bearish arrows did better than a coin flip in this test. The Bullish CHoCH did worse than one: in this test, buying every bullish reversal label would have gone 1 ATR against you first more often than not. The Lab measured one symbol over one quarter, so read this split as a warning about the bullish CHoCH, not as a rule for every market.
Who it is for
It suits traders who use market structure and want swing breaks labelled the same way every time. It also helps if you are still learning to tell a CHoCH from a BOS, or if you want to check higher-timeframe trend without switching charts.
How it works
- 1Runs a swing engine over recent bars with swing bars each side and an optional minimum swing size in ATR.
Swing needs size >= MinSwingATRMult x ATR(14)Inputs: SwingBars, MinSwingATRMult, LineLookbackBars - 2A break counts when price closes beyond the last swing, or when only the wick passes it if chosen.Inputs: BreakRule
- 3
- 4Strength starts at 2 for CHoCH and 3 for BOS, plus one per agreeing higher timeframe trend. Max 5.
Strength = base (2 or 3) + [HTF1 agrees] + [HTF2 agrees], max 5Inputs: EnableMTFBadge, HTF1, HTF2 - 5Alerts fire on the last closed bar when an enabled event type occurs.Inputs: AlertChoch, AlertBos, AlertCooldownBars
Specifications
- Platform
- MetaTrader 5
- Version
- 1.00
- Type
- Indicator
- Window
- Main chart
- Draws
- 4 arrows, 2 zones, 1 panel
- Alerts
- popup, push, sound
- Repaints
- No (0 of 273 signals changed)
- Inputs
- 19
- Tested on
- MT5 build 6230 · 2026-10-09
Repaint test
No repaint detected. In a 9 Jul 2026 – 8 Oct 2026 test on EURUSD M15 (Raw Trading Ltd real ticks), 273 signals were logged at bar close and re-read at the end of the test: 0 changed. Arrows print on the bar that closes the signal, with no delay.
IndicatorFree — tested 2026-10-09 · MT5 build 6230 · Raw Trading Ltd real ticks. Results come from historical data, not live trading, and do not guarantee future results.
Signal statistics
Over 9 Jul 2026 – 8 Oct 2026 on EURUSD M15, the indicator printed 273 arrows. After 51.7% of them, price moved 1×ATR(14) in the arrow's direction before moving 1×ATR against it (median 2 bars). 0% reached neither level within 20 bars.
This measures price movement after the arrow, not a trading result. It includes no spread, commission, stop loss or position sizing.
What it draws
- Arrows (Bullish CHoCH) from buffer 0, drawn on the closed bar.
- Arrows (Bearish CHoCH) from buffer 1, drawn on the closed bar.
- Arrows (Bullish BOS) from buffer 2, drawn on the closed bar.
- Arrows (Bearish BOS) from buffer 3, drawn on the closed bar.
- Rectangles (CHoCH BOS Level) drawn as chart objects, not buffers — they are not readable by iCustom() in an EA.
- Rectangles (CHoCH BOS Text) drawn as chart objects, not buffers — they are not readable by iCustom() in an EA.
- An on-chart panel (Structure); values shown in the panel are not exposed as buffers.
Inputs
| Input | Default | What it does |
|---|---|---|
| SwingBars | 5 | Bars on each side to confirm a swing high / low (2-10) |
| MinSwingATRMult | 0 | Ignore swings smaller than this x ATR(14) from the last opposite swing (0 = off) |
| BreakRule | Close (bar close beyond the level) | Price that must cross the swing level to confirm a break |
| LineLookbackBars | 500 | Closed bars scanned back to build the structure (100-5000) |
| ShowCHoCH | true | Show CHoCH arrows, level lines and "CHoCH" text |
| ShowBOS | true | Show BOS arrows, level lines and "BOS" text |
| EnableMTFBadge | true | Show the structure trend of two higher timeframes on the panel |
| HTF1 | H1 | Higher timeframe 1 for the trend badge |
| HTF2 | H4 | Higher timeframe 2 for the trend badge |
| AlertChoch | true | Alert on a new CHoCH (closed bar) |
| AlertBos | false | Alert on a new BOS (closed bar) |
| EnablePopup | true | Popup alert in the terminal |
| EnablePush | false | Push notification to MT5 mobile |
| EnableSound | false | Play a sound with the alert |
| AlertCooldownBars | 1 | Minimum bars between two alerts (0-20) |
| ShowDashboard | true | Show the on-chart panel |
| PanelScale | 1 | Panel size multiplier (DPI is applied automatically) |
| Theme | Dark | Chart color theme |
| RestoreTheme | true | Restore the original chart colors when the indicator is removed |
How to read it
Install in one line
Copy the file into the MQL5\Indicators folder of your MT5 data folder, refresh the Navigator, and drag Change of Character onto a chart.
How one signal forms
First, the indicator confirms a swing high or swing low. A swing high is a candle whose high stands above the highs of the SwingBars candles on each side of it (5 by default). A swing low works the same way with lows. Next, it waits for a closed candle to close beyond the last unbroken swing. Finally, it checks the current structure trend to decide which label to give the break.
The chart below is an illustration of a typical signal. A bearish leg makes a swing high, and a close above that swing prints a Bullish CHoCH. A later candle only wicks through the next swing high, so nothing prints. The close above that level on the next push prints a Bullish BOS.
Reading the four arrows
| Arrow | Fires when a closed candle… | Per week (Lab, EURUSD M15) | What it tells you |
|---|---|---|---|
| Bullish CHoCH | closes above the last unbroken swing high while the trend is bearish or undefined | 5.5 | The down structure has broken for the first time |
| Bearish CHoCH | closes below the last unbroken swing low while the trend is bullish or undefined | 5.5 | The up structure has broken for the first time |
| Bullish BOS | closes above the last unbroken swing high while the trend is already bullish | 4.4 | The uptrend made a new higher high |
| Bearish BOS | closes below the last unbroken swing low while the trend is already bearish | 5.4 | The downtrend made a new lower low |
The level line marks the exact swing price that broke. Lines and text stay on the chart while the indicator runs, so an old chart can look busy. Lower LineLookbackBars (100–5000, default 500) if you want the indicator to build structure from fewer past bars.
Use the panel for context. If it shows a Bullish CHoCH on your chart while both higher timeframes still read bearish, you are looking at a pullback inside a bigger downtrend until proven otherwise.
Common misread: a wick through the line is not a break
With the default BreakRule (Close), a candle that spikes above a swing high and closes back below it gives no arrow. That is bar 20 in the illustration. Do not draw your own CHoCH there because the line looks crossed. Switch BreakRule to Wick only if you want the candle high or low to count. You will then see breaks earlier, including spikes that close back inside. The Lab has not tested the Wick setting, so compare it with the default first.
Inputs to change first
- SwingBars (2–10, default 5). This sets how many candles on each side confirm a swing. Lower values find small swings and print more arrows. Higher values keep only bigger swings. On M1–M5, try 7 to cut noise. This is a starting point the Lab has not tested, so compare it with the default.
- MinSwingATRMult (default 0 = off). This ignores swings smaller than this multiple of ATR(14), measured from the last opposite swing. Raise it in tight ranges where every small wiggle becomes a swing.
- HTF1 / HTF2 (default H1 / H4). Keep both above your chart timeframe. The defaults fit M5–M30 charts. On an H1 chart, try H4 and D1 (an untested starting point).
- ShowCHoCH / ShowBOS. Turn off ShowBOS if you only want to see reversals.
Alerts
Alerts fire on a new CHoCH or BOS once the candle has closed. AlertChoch is on by default and AlertBos is off. EnablePopup shows a popup in the terminal (on by default). EnablePush sends a notification to MT5 mobile and EnableSound plays a sound; both are off by default. AlertCooldownBars (0–20, default 1) sets the minimum number of bars between two alerts.
A decision rule for each arrow
These rules are ideas to try. The Lab has not tested them.
- Bullish CHoCH: never act on it alone. Wait for the Bullish BOS that follows it, or take it only when both higher-timeframe badges on the panel read bullish.
- Bearish CHoCH: take it only when at least HTF1 on the panel reads bearish. Skip it when both badges read bullish.
- Bullish or Bearish BOS: take it only when your chart trend and HTF1 agree with the arrow. Skip a BOS that points against both badges.
Installation
- 1Download ChangeOfCharacter.ex5 from the button above (Google Drive).
- 2In MetaTrader 5: File → Open Data Folder → MQL5 → Indicators. Copy ChangeOfCharacter.ex5 there.
- 3Restart MT5 or right-click Indicators in Navigator → Refresh.
- 4Drag Change of Character onto a chart. For push alerts, enable "Allow push notifications" under Tools → Options → Notifications.
- Tested on MT5 build 6230.
Key terms and guides
- Change of character
- A change of character (CHoCH) is the first candle close beyond the swing point that kept a trend alive, such as a close above the latest lower high in a downtrend. It is the earliest structural sign that the trend may be turning.
- Swing high
- A swing high is a candle whose high is above the highs of the candles on both sides of it. It marks a peak where buyers stopped pushing and price turned lower, at least for a while.
- Break of structure
- A break of structure (BOS) happens when a candle closes beyond the last swing high in an uptrend, or the last swing low in a downtrend. It confirms that the trend has started a new leg in the same direction.
- Swing low
- A swing low is a candle whose low sits below the lows of the candles on both sides of it. It marks a turning point where selling stopped and price bounced, and traders use it as a floor for reading trend and placing stops.
- Candlestick
- A candlestick is one bar on a price chart that shows four prices for a set period: the open, high, low and close. A thick body spans the open and close, and thin wicks reach the high and low.
- Trend
- A trend is the main direction price keeps moving in over a period. In an uptrend price makes higher highs and higher lows. In a downtrend it makes lower highs and lower lows.
- Guide: What Is a Fair Value Gap in Forex? How to Spot and Trade One
- Guide: How to Read Candlestick Charts: Bodies, Wicks and Shapes Explained
More on this subject: Price action & SMC guide, terms and tools
User reviews
No reviews yet. Members who download the tool can review it here.
Sign in and download the tool to review it.
Build a checklist with it
Change of Character does one job on the chart: entry signal. Put it on the same chart as the tools below and the IndicatorFree panels merge into one checklist card, ordered trend, zone, signal, risk.
- Trend / contextEMA PulseChange of Character tells you when; this tells you which way the market leans, so you can skip signals against it.
- Zone / levelKey Level MapShows the zones and levels, so you can see whether a signal from Change of Character fires at a level worth trading.
The Lab has not tested these combinations. Each tool is tested on its own; the card only lines up what each one says. Free members get 2 new tools a day. If one has to wait until tomorrow, install BlackBox to raise the limit to 5 a day (20 on a live account).
FAQ
Does Change of Character repaint?
No repaint detected. In a 9 Jul 2026 – 8 Oct 2026 test on EURUSD M15 (Raw Trading Ltd real ticks), 273 signals were logged at bar close and re-read at the end of the test: 0 changed. Arrows print on the bar that closes the signal, with no delay.
Can I use Change of Character in an EA?
Yes. Read buffer 0 (Bullish CHoCH) with iCustom() on bar 1 — the last closed bar.
Why can’t my EA read the zones?
Zones and the panel are chart objects, not indicator buffers, so iCustom() does not return them.
How do I get alerts on my phone?
Enter your MetaQuotes ID under Tools → Options → Notifications, tick "Enable push notifications", and keep the push alert input on.
Does it work on other pairs?
Tested on EURUSD only; other symbols not tested.
Which timeframe should I use it on?
It runs on any chart timeframe, but the Lab only measured EURUSD M15. Higher timeframes have fewer bars per week, so you will see fewer swings and fewer arrows. Set HTF1 and HTF2 above whatever chart you trade.
Why is the first label on my chart a CHoCH even though no trend had flipped?
When the indicator starts, the structure trend is still undefined, and the first break from an undefined trend is labelled a CHoCH. Ignore the very first label on the left edge of the chart. Judge the labels that come after it.
Can I get the alerts on my phone?
Yes. Set EnablePush to true and link the MT5 mobile app to your terminal with your MetaQuotes ID in the terminal's notification settings. To get BOS alerts too, set AlertBos to true, since it is off by default.
Can I read its arrows in an Expert Advisor or backtest?
The four arrows sit in buffers 0 to 3 (Bullish CHoCH, Bearish CHoCH, Bullish BOS, Bearish BOS), so an EA can read them. Because arrows only print on closed bars, read the last closed bar, not the bar that is still forming.
Does it work on gold, indices or crypto?
It only uses candle prices and ATR(14), so it will draw on any MT5 symbol. The Lab results come from EURUSD alone. On a fast-moving symbol, check whether MinSwingATRMult needs raising before you trust the labels.
Changelog
- 1.00Initial release: Change of Character (CHoCH) and Break of Structure (BOS) labelling from strict N-bar fractal swing points, confirmed on closed bars only (no repaint). · 2026-10-09
Final verdict
Verdict: a reliable structure labeller, not an entry system
The Change of Character indicator does one job well. It labels CHoCH and BOS the same way every time, on closed candles, and it passed the repaint test with no changed arrows. That makes it safe to study history with: the labels you see on past bars are the labels you would have seen live.
On their own, the arrows give you no real edge. Across all signals the result was close to a coin flip. The bearish arrows were the stronger half in the test and the Bullish CHoCH was the weakest. Its value is in telling you what the structure is doing, so you decide with context instead of guessing.
What it cannot do
- It draws no entries, stops or targets. You still need your own plan for where to get in and where you are wrong.
- It waits for the candle to close. After a big breakout candle, the arrow can appear far from the level, and that is a poor place to enter.
- The Lab measured only EURUSD M15 over one quarter. Other symbols and timeframes are untested.
- The Theme input changes your chart colors. Keep RestoreTheme on if you want your own colors back when you remove it.
The chart below sums up when to use it and when to skip it.
- –You trade swing structure and want CHoCH / BOS marked the same way every time
- –You use the higher-timeframe badges to filter the arrows
- –You can wait for the candle to close before you act
- –You want to review past structure without labels that change later
- –You want arrows you can trade on their own, with no filter
- –You need entries inside the candle, before it closes
- –You expect stop-loss or take-profit levels from the tool
- –You only want reversal buys: the Bullish CHoCH was its weakest arrow
Settings to start with
Start with the defaults and keep BreakRule on Close, so a candle has to close beyond the swing. Keep AlertChoch on and turn on EnablePush if you trade away from the screen. Change SwingBars first, and only one step at a time, before you touch anything else.
To get a place to enter after a break, you can add the Order Block Locator. Change of Character tells you the structure has turned, and the order block gives you a zone to wait for a pullback into. This pairing is an idea to try; the Lab has not tested the two together.



















